Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

搭话 AITalk · AIUI 对讲机

让眼镜和电脑进入同一个房间,轮流说句话。

搭话是一个面向 AIUI 眼镜和浏览器的开源语音对讲初版。输入 4 位房间号,无需房间密码;也可以一键进入 公共测试大厅。每个房间和大厅最多 4 人,一次一人说话,其余成员收听,每段最长 15 秒

初版已获得实际使用者"基本可以用了"的反馈,欢迎大家自己部署、戴上眼镜试一试,也欢迎把遇到的问题和改进带回来。

English: AITalk is a self-hosted, four-person walkie-talkie for AIUI glasses and web browsers. Join a four-digit room or the shared test lobby, then take turns speaking. This repository contains source code only, with no live service credentials or preconfigured AIX. Licensed under MIT.

快速运行 · 自部署服务 · 眼镜与 Studio · 测试方法 · 协议 · 参与贡献

可以做什么

功能 当前行为
四位房间号 0037 这样的前导零会保留;同号自动建房或加入,无需区分创建和加入
公共测试大厅 一键进入;独立于所有编号房间,包括 0000
四人轮流对讲 每房最多 4 人;第五人收到满员提示;不同房间不转发彼此的音频
眼镜输入 左摆减一、右摆加一,回正后再摆;镜腿单击 / Enter 确认当前数字
输入备用方式 按键增减、退回上一位、重新校准、左右方向反转
电脑声音自检 播放提示音、录音 3 秒回放;自检音频仅在本机处理
主动开麦 加入房间不打开麦克风;点击开始说话,再点击结束,15 秒自动结束
退出与换房 停止采集与播放;切出页面会断开,回来后主动重新加入

当前版本 0.2.1,房间协议为 protocol 3。应用版本号与协议编号是两个概念,同房间的客户端和中转都需要支持 protocol 3。

先在电脑上试一试

准备 Node.js 20 或更新版本、npm,以及支持麦克风和 AudioWorklet 的现代浏览器。先用你手边的电脑完成一次房间联调,无需云账号或大模型 API Key。

git clone https://github.com/EasonZhu1997/AIUI-Intercom.git
cd AIUI-Intercom
npm ci
npm run setup
npm run dev:web

打开终端打印的 http://127.0.0.1:... 地址:

  1. 先点"播放提示音"或"录音 3 秒后回放",确认音量、麦克风权限和输入设备。
  2. 打开两个页面,并把它们放在两个并排可见的浏览器窗口。同一窗口切换标签页会让隐藏页面退出对讲。
  3. 两边输入同一房间号,例如 0037;或者两边都进入公共测试大厅。
  4. 人数显示 2 / 4 后,在一边点击开始说话,再点击结束,换另一边试。建议使用耳机,避免同机播放声音再次进入麦克风。
  5. 点击"退出 / 换房"可重新选择;终端按 Ctrl+C 结束本机服务。

本机命令会生成临时访问凭据,启动仅监听环回地址的网页与中转,不改写你的自部署配置。关闭进程后,本机房间清空。这个地址仅供这台电脑使用;眼镜或不在同一网络的同事请走下面的自部署流程。

让眼镜和同事一起加入

仓库提供完整源码,不连接作者的测试服务器,也不附带已配置的 AIX。请部署自己的 HTTPS 网页和 WSS 中转,再用同一份配置构建客户端。

# 将占位域名替换为你自己的域名;先按部署文档准备服务。
npm run configure -- --url wss://your-domain.example/intercom
npm test
npm run build:web
npm run build
npm run export:agent
  • dist/web/:部署到你的 HTTPS 站点。
  • dist/AITalk-AIUI-v0.2.1-cn.aix:按 AIUI 工具提供的入口手动导入或安装。
  • agent/:供 Studio 本地导入的应用源码根目录,里面直接包含 app.json
  • dist/validation.json:本次 AIX 的构建 UUID、包体与内容校验结果。

配置工具会生成服务与客户端共用的访问凭据,不要求对讲用户输入。将 private-config.json 通过你自己的安全方式交给服务器,所有客户端使用相同的服务与配置。只运行 configure 不会自动部署服务器。 详见 部署步骤Studio / 眼镜步骤

所有人打开同一个服务的网页,或使用为该服务构建的 AIX,再进入相同房间号即可。所谓"公共测试大厅"是你的中转实例内的共享大厅;不同人分别部署的服务器不会互通。

眼镜上的操作

首页选择"输入房间号",正视前方完成校准。左摆使当前数字减一,右摆加一,每次回正后再摆;单击镜腿确认该位,完成四位后进入房间。方向不合习惯时可反转,姿态不可用时可使用按键。选择大厅则直接进入,不启动数字输入传感器。

房间中用主按钮或 Enter 开始 / 结束发言。请保持页面在前台;这版不提供后台持续收听或全双工会议。AIUI 目标引擎范围是 >=0.17.0, <0.18.0,麦克风权限声明为 RECORD_AUDIO。具体设备、系统和运行时上的权限、姿态方向、首尾字与听感需要实际测试。

它怎样工作

flowchart LR
 G["AIUI 眼镜<br/>.ink 页面 / 录音与播放"] <-->|WSS · PCM 音频| R["Node.js 中转<br/>成员管理 / 发言权"]
 B["电脑或手机浏览器<br/>网页 / AudioWorklet"] <-->|WSS · PCM 音频| R
 R --> A["编号房 0037<br/>最多 4 人"]
 R --> C["编号房 2048<br/>最多 4 人"]
 R --> L["公共测试大厅<br/>最多 4 人"]
Loading

网页与眼镜共用 lib/intercom.js 的连接、发言和清理逻辑。声音以 16 kHz、单声道 PCM s16le 通过 WebSocket 转发;中转授予一位成员发言权,并把音频发送给同房间其他成员。它不调用大模型生成"对方的回答",也不依赖语音识别或转写。

编号房空置 30 分钟后释放,下次进入自动重建;大厅入口常驻。房间和语音只在内存中处理,服务重启会断开连接并清空房间状态。

使用范围与配置

四位号用于分频道,不是身份认证:能访问同一服务、知道号码的人可以加入。共享服务凭据会进入构建后的网页和 AIX,持有客户端的人可读取它,所以不要把它当成账号系统。公开部署网页也意味着公开这份服务入口。

WSS 保护客户端到中转的传输;当前没有端到端加密,中转可以访问音频字节。中转实现不保存录音;你添加的代理、日志或功能仍应按自己的实际配置说明。这个初版适合小组试用和二次开发。

开源前已移除作者的地址、访问凭据、设备标识、私有部署记录和已连接服务的包。生成的 private-config.jsonlib/config.jsdist/agent/ 等留在本机,不要提交到公开仓库。

开发与验证

npm test
npm run check:public

只看 AIUI 页面、暂不连接服务器时:

npm run setup
npm run build -- --allow-unconfigured
npm run preview

未配置包会带有 UNCONFIGURED 标记,只用于界面检查。官方浏览器预览与真实眼镜的录音、播放和传感器环境不同。已有配置时 setup 不应覆盖它;请在一个未配置的独立副本中做纯界面预览。

测试覆盖房间与大厅隔离、四人上限、换房停麦、音频背压、断线与启停竞争、姿态输入及安全导出。自动测试采用模拟设备和合成 PCM,不能替代真人对讲。当前开源副本的验证记录见 VALIDATION,复现方法与真机检查见 TESTING

pages/ AIUI 眼镜全屏页面
lib/ 共用对讲状态机、音频协议、姿态输入
web/ 浏览器页面与音频适配
server/ WebSocket 房间中转
tools/ 本地联调、配置、构建、源码导出
app.json AIUI 路由、引擎范围、权限
deploy/ 自部署参考模板
test/ 自动测试
docs/ 部署、协议、Studio 与测试说明

一起来用,也一起来改

欢迎把搭话用到你的小组实验、AIUI 学习或设备联调中。跑通后可以分享你的设备、浏览器和使用体验;遇到问题请提 Issue,附上可复现步骤和脱敏日志。

尤其欢迎贡献:不同眼镜与浏览器的实测反馈、更自然的摆头输入、音频稳定性与网络恢复改进、文档和示例。准备提交代码时先看 贡献说明。如果项目对你有帮助,也欢迎 Star,让更多 AIUI 开发者发现它。

开源协议

MIT License。欢迎使用、修改、分发和商用,保留协议要求的版权与许可声明。第三方依赖遵循各自协议;本项目是社区作品,不代表设备厂商的官方产品。

About

搭话 AITalk:AIUI 眼镜与浏览器四人对讲,四位房间号、公共测试大厅,支持自部署,MIT 开源。

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /