docs: 扁平化目录结构,优化文档为 Coding Agent 可读格式
- 移除 Obsidian 特有语法(callout、wikilinks、YAML frontmatter) - 目录结构从 3 层嵌套扁平化为编号文件(01~09) - 新增 docs/README.md 文档索引与推荐阅读顺序 - 精简冗余解释,保留所有代码块和实现参考 - CLAUDE.md 全面中文化
This commit is contained in:
77
docs/06-语音交互.md
Normal file
77
docs/06-语音交互.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# 语音交互
|
||||
|
||||
## 概述
|
||||
|
||||
语音交互全链路:**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 与上下文准备并行处理
|
||||
Reference in New Issue
Block a user