谁需要自托管语音AI?
先说结论:如果你对数据主权、定制化工作流、或成本有硬性要求,自托管值得折腾。否则,直接用Vapi/Retell这类云服务更省事——它们的ASR/TTS质量经过生产验证,延迟也低。
典型适用场景
- 金融/医疗/法律:通话录音、客户意图识别等涉及敏感数据,不能出企业网络。
- 重度定制:需要自己的LLM(比如用微调后的Llama 3.1)或自定义TTS音色(比如用GPT-SoVITS克隆特定人声)。
- 高并发成本优化:云服务按分钟计费,自托管在自有GPU上运行Whisper+Faster-Whisper+本地TTS可将单分钟成本压到1/10以下。
不适用场景
- 快速原型验证:从零搭建STT→LLM→TTS管线至少需要一周,而Vapi 30分钟搞定。
- 单一场景且对延迟敏感(<500ms):自托管引入网络波动、模型加载等不确定性,很难稳定在500ms以内。
Dograh的整体架构
Dograh是一个开源的语音AI平台,核心设计是 模块化 + 可视化工作流。它没有绑定具体模型,而是允许你通过Workflow Builder将各个组件拖拽连接。
![VOICE AI ARCHITECTURE]
架构从上到下分为四层:
- 接入层:支持Telephony(PSTN/SIP)和WebRTC,可直接对接Twilio、Asterisk等。
- 工作流引擎:Node-based可视化构建器,节点包括:
STT,LLM,TTS,Function call,Condition,Switch,Loop等。 - 模型层:通过BYOK(Bring Your Own Key)机制,你可以指定自己的模型端点。比如STT用Whisper API或本地部署的Faster-Whisper,TTS用ElevenLabs或本地Edge-TTS。
- 基础设施:On-Prem部署,数据不出网,支持Docker Compose/Kubernetes。
关键设计亮点:MCP native。MCP(Model Context Protocol)是Anthropic提出的模型与工具交互协议。Dograh原生支持MCP,意味着你可以让语音助手直接调用外部工具(如查询数据库、创建工单),通过Function Calling实现。
关键技术选型与配置
STT(语音转文字)
| 模型 | 参数量 | 实时率(RTF) | 词错误率(WER) | 部署方式 |
|---|---|---|---|---|
| Whisper large-v3 | ~1.5B | 0.3-0.5 (T4) | 9.1% (LibriSpeech) | 本地/API |
| Faster-Whisper | same | 0.1-0.2 (T4) | 9.3% | 本地 |
| Deepgram (云) | - | 0.05 | 8.5% | API |
建议:多数场景用Faster-Whisper(基于CTranslate2),在T4上可达实时。如果对中文或方言有要求,可用Whisper large-v3中文微调版。
# Dograh配置STT节点示例(YAML)
stt:
provider: faster_whisper
model: large-v3
device: cuda
compute_type: float16
language: zh
TTS(文字转语音)
| 模型 | 延迟(首句) | 音质MOS | 支持语言 | 部署难度 |
|---|---|---|---|---|
| Edge-TTS | ~200ms | 3.8 | 多语言 | 极低 |
| Coqui AI | ~500ms | 4.0 | 多语言 | 中等 |
| GPT-SoVITS | ~1.5s | 4.5+ | 中文/克隆 | 高 |
| ElevenLabs (云) | ~300ms | 4.3 | 多语言 | 极低 |
建议:通用场景先用Edge-TTS(免费且延迟低)。需要高自然度且能忍受首包延迟时,用GPT-SoVITS。
LLM(对话引擎)
Dograh不绑定LLM,通过BYOK支持任何兼容OpenAI API的模型。常见选型:
- 性能优先:GPT-4o mini(低延迟+高智能)
- 数据安全:Llama 3.1 8B(本地部署,vLLM吞吐可达1500 token/s)
- 长上下文:GLM-4 9B(128K上下文,适合对话历史)
# Dograh LLM节点配置示例
llm:
provider: openai_compatible
base_url: http://localhost:8000/v1
model: /models/llama-3.1-8b
api_key: your-key
params:
temperature: 0.7
max_tokens: 512
实测效果与调优记录
我在T4 GPU上部署了Dograh,使用Faster-Whisper large-v3 + Llama 3.1 8B + Edge-TTS,模拟客户电话问询。
场景:"帮我查一下上个月的账单" → 触发Function Call查询数据库 → 返回金额 → TTS播报。
| 阶段 | 耗时 | 说明 |
|---|---|---|
| STT | 0.8s | 用户说话3秒音频,实时率0.27 |
| LLM推理 | 1.2s | 生成15个token的回复 |
| TTS | 0.3s | Edge-TTS首包延迟 |
| 总延迟 | 2.3s | 不含网络往返 |
调优点:
- STT启用VAD(语音活动检测),减少空转。
- LLM使用vLLM搭配
--max-model-len 4096和预热请求,避免冷启动。 - TTS选择流式(Chunked Streaming)可提前播放,将感知延迟压到1.5s。
常见坑与解决方案
1. 语音打断的时序问题
对话中用户可能打断TTS播放。Dograh没有内置voice activity detection for interruption,需要外部集成Silero VAD。我在工作流中加入一个VAD节点,检测到用户说话时立即终止TTS并重新开始STT。
2. MCP调用超时
LLM通过MCP调用外部工具时,如果工具响应慢(如数据库查询2s),LLM会因超时返回空回复。解决:在LLM配置中设置tools_timeout_ms: 5000,并在工具节点中加流式提示。
3. 中文TTS咬字问题
Edge-TTS中文偶尔读错多音字。我的方案:用Coqui XTTS-v2本地部署,首包延迟虽高(~800ms),但中文准确性更好。Dograh支持按语言分流:用Condition节点判断语言,中文走Coqui,英文走Edge。
总结
Dograh提供了一个扎实的自托管语音AI框架,关键价值在数据主权和可定制工作流。选型上:
- STT:本地用Faster-Whisper,云用Deepgram
- TTS:对延迟敏感用Edge-TTS,对音质有追求用GPT-SoVITS
- LLM:隐私优先用Llama 3.1,智能优先用GPT-4o mini
注意:自托管不等于低成本,你需要维护GPU集群、处理模型更新、监控延迟。如果团队没有运维能力,先上Vapi这种托管服务踩坑,再考虑迁到Dograh。