Files
CamTalk/docs/06-语音交互.md
hhs 10f676f3b4 docs: 扁平化目录结构,优化文档为 Coding Agent 可读格式
- 移除 Obsidian 特有语法(callout、wikilinks、YAML frontmatter)
- 目录结构从 3 层嵌套扁平化为编号文件(01~09)
- 新增 docs/README.md 文档索引与推荐阅读顺序
- 精简冗余解释,保留所有代码块和实现参考
- CLAUDE.md 全面中文化
2026-06-12 17:08:20 +08:00

78 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 语音交互
## 概述
语音交互全链路:**VAD语音活动检测** → **STT语音转文字****LLM 推理****TTS文字转语音**
用户感知延迟 = VAD 响应 + STT 耗时 + LLM 首 token + TTS 首包。人类对话中停顿超过 300ms 就会感到"对方在想"。
**延迟目标**:端到端 **1.5~2 秒**(用户说完话到听到 AI 回应);流式 TTS 下LLM 开始生成后 **0.5 秒**听到第一个词。
## 全链路
```
麦克风 → VAD → STT → LLM → TTS → 扬声器
```
## 环节一VAD语音活动检测
从持续音频流中检测"人什么时候在说话",避免将环境噪音当作有效输入。**浏览器端完成**,节省 ~70% 带宽。
```typescript
import { MicVAD } from "@ricky0123/vad-web";
const vad = await MicVAD.new({
onSpeechStart: () => console.log("用户开始说话"),
onSpeechEnd: (audio) => {
// audio: Float32Array送入 STT
sendToSTT(audio);
},
positiveSpeechThreshold: 0.5, // 检测灵敏度
minSpeechDuration: 250 // 最短语音时长 ms
});
vad.start();
```
## 环节二STT语音转文字
| 方案 | 延迟 | 成本 | 特点 |
|------|------|------|------|
| Whisper API | 1-3s | 按分钟计费 | 准确率高,支持多语言 |
| **Deepgram** | <500ms | 按分钟计费 | 流式识别,延迟极低 |
| 浏览器原生 | ~1s | 免费 | 中文效果一般 |
| FunASR | <500ms | 自部署免费 | 阿里开源,中文优化 |
流式 STT 是低延迟的关键——不必等用户说完,边说边识别:
```typescript
// Deepgram 流式识别示例
const ws = new WebSocket("wss://api.deepgram.com/v1/listen", {
headers: { Authorization: `Token ${API_KEY}` }
});
ws.onmessage = (event) => {
const { transcript, is_final } = JSON.parse(event.data).channel.alternatives[0];
if (is_final) {
onFinalTranscript(transcript); // 一句完整语音,送入 LLM
}
};
```
## 环节三TTS文字转语音
流式 TTS检测 LLM 输出中的句子边界,每检测到一句就立即送入 TTS 合成并播放,不必等全部生成完。
方案选择:
- **OpenAI TTS**:音质好,延迟中等,按字符计费
- **Edge TTS**:微软免费方案,音质不错,延迟略高
- **Fish Speech / CosyVoice**:开源方案,支持声音克隆,可自部署
## 延迟优化要点
- VAD 浏览器端处理(减少无效传输)
- 流式 STT边说边识别
- LLM 流式输出
- TTS 句子级流式合成
- STT 与上下文准备并行处理