Example 01 · Web full duplex

现在,直接开口。

麦克风会持续监听。停顿即提交,AI 说话时也可直接插话打断;屏幕同步保留完整文字记录。

实时通路idle

准备好就可以开始

完成一轮对话后显示“停顿 → 开始播放”的实测延迟

Example 02 · React Native / Expo

同一条 Audio LLM 通路,装进手机。

Expo SDK 57 示例接入原生 PCM 麦克风流和无缝播放队列。它复用 Web 示例的模型、VAD、短语打断与误打断恢复策略,客户端只访问线上代理。

16 KHZ · PCM16

持续原生收音

实时 RMS 驱动 VAD,在 AI 理解和播报期间都不会停止监听。

SSE · GAPLESS

分片即到即播

每个 PCM 分片落入 AudioPlaylist,首片到达即可开始播放。

BARGE-IN

短语也能打断

200 ms 强语音快速通路兼顾中英文短指令和回声过滤。

IOS · ANDROID

自动出包

GitHub Releases 发布 Android APK;iOS 继续通过 EAS 或 TestFlight 分发。

ANDROID APK · LATEST

扫码安装最新版

二维码固定指向 GitHub Releases 的 latest APK;每次发布同时保留带版本号的历史产物。

本地开发Expo SDK 57
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
EXPO_PUBLIC_OTTERVOICE_API_URL=https://your-domain.example/api/voice

Project guide · Architecture

基础能力负责实时,业务只需要定义对话。

01 · INPUT

Runtime

Web Audio 或 Expo PCM 负责采集、音量和播放。

02 · SESSION

Core

状态机组织 turn、并发、打断、取消和错误恢复。

03 · INTELLIGENCE

Providers

Audio LLM,或可替换的 ASR → LLM → TTS 级联通路。

04 · OUTPUT

Experience

字幕、首音频延迟、连续播放与自然插话。

@ottervoice/core

跨平台 VoiceSession、事件和全双工策略。

@ottervoice/runtime-web

MediaRecorder、Web Audio VAD 与流式 PCM 播放。

@ottervoice/runtime-react-native

Expo 原生 PCM 输入、AudioPlaylist 输出与文件清理。

@ottervoice/provider-openrouter

Audio LLM、ASR、LLM 和 TTS 的统一 OpenRouter 接入。

@ottervoice/provider-utils

SSE、HTTP 错误和 provider 公共能力。

examples/

可直接运行的 Web、Expo 和 Node 集成样板。

密钥不进入浏览器或 App。

示例统一请求 ottervoice.vercel.app 的同源代理,由服务端注入 OpenRouter 凭据;生产项目可以替换为自己的 token broker。

阅读技术文档 →