持续原生收音
实时 RMS 驱动 VAD,在 AI 理解和播报期间都不会停止监听。
Example 01 · Web full duplex
麦克风会持续监听。停顿即提交,AI 说话时也可直接插话打断;屏幕同步保留完整文字记录。
准备好就可以开始
完成一轮对话后显示“停顿 → 开始播放”的实测延迟
Example 02 · React Native / Expo
Expo SDK 57 示例接入原生 PCM 麦克风流和无缝播放队列。它复用 Web 示例的模型、VAD、短语打断与误打断恢复策略,客户端只访问线上代理。
实时 RMS 驱动 VAD,在 AI 理解和播报期间都不会停止监听。
每个 PCM 分片落入 AudioPlaylist,首片到达即可开始播放。
200 ms 强语音快速通路兼顾中英文短指令和回声过滤。
GitHub Releases 发布 Android APK;iOS 继续通过 EAS 或 TestFlight 分发。
cd examples/react-native-expo
bun install
bun run start # Expo Go QR
# installable demo packages
bun run build:ios:simulator
bun run build:android:preview
Project guide · Architecture
Web Audio 或 Expo PCM 负责采集、音量和播放。
状态机组织 turn、并发、打断、取消和错误恢复。
Audio LLM,或可替换的 ASR → LLM → TTS 级联通路。
字幕、首音频延迟、连续播放与自然插话。
@ottervoice/core跨平台 VoiceSession、事件和全双工策略。
@ottervoice/runtime-webMediaRecorder、Web Audio VAD 与流式 PCM 播放。
@ottervoice/runtime-react-nativeExpo 原生 PCM 输入、AudioPlaylist 输出与文件清理。
@ottervoice/provider-openrouterAudio LLM、ASR、LLM 和 TTS 的统一 OpenRouter 接入。
@ottervoice/provider-utilsSSE、HTTP 错误和 provider 公共能力。
examples/可直接运行的 Web、Expo 和 Node 集成样板。
示例统一请求 ottervoice.vercel.app 的同源代理,由服务端注入 OpenRouter 凭据;生产项目可以替换为自己的 token broker。