TTS + STT 语音全家桶
做语音机器人、转写流水线、有声书旁白的 10 件套:STT 选 Whisper / whisper.cpp / Faster Whisper / WhisperX;TTS 选 ElevenLabs / Coqui / Bark / StyleTTS 2 / Kokoro;OpenVoice 负责声音克隆。和 voice-ai-stack 互补 —— 那边是实时对话底座,这边是 STT/TTS 零件库。
这个 pack 包含什么
这是语音应用的零件目录。Voice AI Stack pack 提供的是实时对话底座(LiveKit、Moshi、OpenAI Realtime、Zonos)—— 那是 speech-to-speech 路线;本 pack 提供的是把经典级联架构拼起来用的离散 STT / TTS 引擎:麦克风 → STT → LLM → TTS → 扬声器。
级联没死。下面这些场景级联仍然是正确选择:
- 要精细控制 LLM 中间环节 —— tool call、结构化输出、RAG、内容审核,任何需要拿到/改写文本的地方。
- 规模化下追成本 —— speech-to-speech 模型每分钟仍比一套调好的级联贵 3-5 倍。
- 非实时场景 —— 转写流水线、有声书生成、播客后期、视频配音。延迟不是约束。
- 自部署或断网部署 —— 这里每个组件都有开源选项,能跑在你自己的 GPU 甚至 CPU 上。
10 个选项,按层分:
| 层 | 选什么 | 什么时候用 |
|---|---|---|
| STT — 标杆 | Whisper | 参考实现。批量转写、多语种、口碑准确率。 |
| STT — 本地 | whisper.cpp | 纯 C/C++ 移植,CPU / Apple Silicon,无 Python。移动端、边缘端唯一现实选择。 |
| STT — 加速 | Faster Whisper | CTranslate2 提速 4×,精度不变、显存更省。 |
| STT — 带说话人分离 | WhisperX | 70× 提速 + 词级时间戳 + 说话人分离。会议、播客。 |
| TTS — 商业 | ElevenLabs Python SDK | 体感质量天花板,流式、声音克隆。按字符计费。 |
| TTS — 开源框架 | Coqui TTS | 支持多种模型架构的深度学习 TTS 引擎,可自部署。 |
| TTS — 富表现力 | Bark | Suno 的 transformer 模型,能生成音乐、音效、非语音音频。MIT。 |
| TTS — 接近人声 | StyleTTS 2 | Style diffusion,自然度逼近商业引擎。 |
| TTS — 轻量 | Kokoro | 82M 参数 / 9 语种,笔记本 CPU 上能跑。 |
| 声音克隆 | OpenVoice | 即时克隆,音色和风格独立可控。 |
推荐安装顺序
# 1. 先选 STT —— 它决定了延迟下限
tokrepo install whisper-cpp # 本地 CPU
# 或
tokrepo install faster-whisper # GPU,支持批量 + 流式
# 或
tokrepo install whisperx # 转写 + 说话人分离
# 2. 按质量门槛配 TTS
tokrepo install elevenlabs-python-sdk # 出货级质量,按字符计费
# 或
tokrepo install coqui-tts # 自部署,质量过得去
# 或
tokrepo install kokoro # 轻量,到处能跑
# 3. 可选 —— 给品牌旁白配声音克隆
tokrepo install openvoice
TokRepo CLI 把每个资产以一个 skill 的形式落进你的仓库。Claude Code / Cursor / Codex CLI 都能直接读到 skill 文件里现成的 Python 片段和依赖清单,再拼进你自己的应用循环。
级联怎么拼
[ 麦克风 / 音频文件 ]
│
▼
[ STT — Whisper 变体 ]
│ 文本 + 词级时间戳
▼
[ LLM — 你的选择 ]
│ 回复文本 + tool call
▼
[ 文本归一化 ]
│ 数字、日期、emoji 处理
▼
[ TTS — ElevenLabs / Coqui / Bark / Kokoro ]
│ 流式音频帧
▼
[ 扬声器 / 输出文件 ]
所有在生产跑的级联都做对了这几件事:
- 两端都流式。 STT 每 ~200ms 给一次部分假设;TTS 在 LLM 输出前 ~100ms 文本到达后就开始出声。LLM 一定要 token 流式。端到端体感延迟从「发完等」变成「细水长流」。
- TTS 之前先归一化。
$1,234.56大多数引擎会念成「美元一逗号二三四点五六」。一个 20 行的归一化函数处理货币、日期、缩写、URL,胜过一周「为啥我 agent 听起来这么蠢」。 - 把模型驻留下来。 Whisper-large 冷启动加载权重要 ~3 秒。让模型常驻在一个长生命周期进程里,第一次转写不该付这个代价。
你会遇到的取舍
- Whisper-large vs medium vs tiny。 Tiny 能跑树莓派;large 要 GPU。多数生产团队最后落在 medium + VAD 切片这个性价比拐点。Faster Whisper 让 large 变可负担;whisper.cpp 让 tiny/base 在 CPU 上能用。
- ElevenLabs vs 开源 TTS。 ElevenLabs 明显更好听,但月费 $30-330 + 字符超量计费。Coqui + StyleTTS 2 能做到「生产够用」,但要 GPU。分水岭:日字符 < 10w,ElevenLabs 更划算;以上自部署。
- Bark vs Kokoro vs StyleTTS。 Bark 表现力强(能笑、能唱、能音效)但慢,不总好控;Kokoro 快而小,但语调中性;StyleTTS 2 接近人声但要最多显存。匹配场景 —— 游戏 NPC 用 Bark、IVR 用 Kokoro、有声书用 StyleTTS。
- 声音克隆伦理。 OpenVoice 和 ElevenLabs 都支持基于授权的克隆。必须显式取得用户同意并记录授权日志。未经授权的克隆是丢单/吃官司最直接的路。
常见踩坑
- STT 前没挂 VAD。 给 Whisper 喂持续静音会得到幻觉转写(最经典的是
Thank you for watching!)。在 Whisper 前接 30 行webrtcvad或silero-vad。仅此一改就能干掉级联里最常见的 bug。 - LLM 回复整段才送 TTS。 你在串行付 LLM 全延迟 + TTS 全延迟。把 LLM token 流式喂进句子缓冲区,碰到
。、?、!立刻冲一句到 TTS。 - 采样率不匹配。 Whisper 要 16kHz 单声道。TTS 输出 22.05 / 24 / 48 kHz。边界处重采样;不匹配会出花栗鼠音或低频闷音,QA 会甩锅给模型。
- 把 WhisperX 当 Whisper 平替。 WhisperX 的说话人分离要依赖
pyannote,需要 Hugging Face token + 同意 license。生产依赖前先把鉴权打通。 - 没记录音频 + 转写配对。 语音应用悄悄回归 —— TTS 更新、STT 版本变更都可能默默降质。采样 1% 会话把音频和转写存下来,每周看一遍。否则只能等用户怒来反馈。
10 个资产打包就绪
常见问题
为啥选级联而不是 Moshi / OpenAI Realtime 这种 speech-to-speech?
三个原因。第一,可控 —— 级联让你在 STT 和 TTS 之间拿到文本,能加 tool call、RAG、内容过滤、LLM 路由,这些 audio-native 模型现在还很弱。第二,成本 —— 规模化下 Whisper + GPT-4o-mini + Kokoro 每分钟可以比 Realtime API 便宜 5-10 倍。第三,匹配 —— 非对话场景(转写、有声书、播客后期)根本没有「实时对话感」要保。speech-to-speech 那条路看 Voice AI Stack pack,本 pack 覆盖其他所有场景。
Whisper 这几个变体到底选哪个?
有 GPU 就先上 Faster Whisper —— 和标杆 Whisper 同精度、4× 吞吐、显存更省。在 CPU / Apple Silicon / 边缘硬件上就 whisper.cpp,没第二个现实选择。要说话人分离或词级时间戳(会议、播客、字幕)选 WhisperX。仅当复现论文或者 CTranslate2 不支持你要的模型时,才用 OpenAI 原版 Whisper。
自部署 TTS 比 ElevenLabs 到底便宜多少?
粗算:Coqui 或 StyleTTS 2 跑在单卡 A10G 上(AWS 约 $0.75/小时),合理质量下每 GPU-小时能产出约 200 小时音频,也就是约 $0.004/分钟。ElevenLabs Creator 档大致等价 $0.03/分钟。盈亏平衡在每天 25-50 小时音频量附近;以下用 ElevenLabs 运维上更划算(省掉推理基建),以上自部署赢。Kokoro 把这个账往下拉一档 —— 它在 CPU 上就有可用速度。
Claude Code / Cursor / Codex CLI 能用上吗?
能。本 pack 每一项都以 TokRepo skill 形式安装,会落一个 .md 文件 + 示例 Python 进你仓库 —— 不管你用哪个 agent CLI,模型都能直接读到 API key 处理、流式代码、采样率转换这些上下文,再帮你拼进应用。TokRepo 上 Codex CLI 和 Cursor 的入口都带了组合多个本 pack 资产的 voice agent 示例。
TTS 和 STT 的质量能自动评测吗?
能,但要选对指标。STT:在 held-out 转写集上算 WER(word error rate),用 jiwer 这个库做计算。TTS:没有单一数字 —— MOS(mean opinion score)需要真人;UTMOS 和 NISQA 能给自动估算。现实可跑的循环:常备一份 50 条 golden set,STT 改动跑 WER,TTS 改动跑一个小规模 MOS panel(5 个评审、30 分钟)。不要不评测就上线 —— TTS / STT 升级回归常常打在指标盲区。