语音与对话
把流式文字稳定变成语音
贯通文本分段、TTS 音频块、解码与播放队列,定位断音。
先确认“流”的是哪一侧:一次提交完整文本、分块返回音频,和持续输入文本、持续输出音频,是两种不同接口能力。
理解这条链路
正确测量首音与连续性
网络首包可能是事件、头信息或不可播放的压缩碎片。至少记下 first_byte、first_decodable_audio、playout_start 和每次 underrun。队列必须以可播放音频时长计量;不能把块数当剩余播放时间。
不要用过短分段换取表面低延迟
每个 token 都触发一次合成会破坏韵律、数字和词语。按可读短语切分,并对金额、日期、网址、英文缩写设置不可截断的单元。取消时同时停止上游任务、拒绝后到音频并清空未播队列,保留已播位置。
按这个顺序操作
- 先用固定文本验证采样率、编码和播放器契约,再接入真实文本流。
- 测试短回复、长数字、中英混读和中途取消,记录音频块间隔及缓冲时长。
- 对同一文本比较分段策略,检查发音、连续性与首音时间三者。
- 通过限速或延迟注入检查缓冲耗尽时的恢复,保留真实试听文件。
配套本地工具
以下工具位于 AI 学习工作区。先阅读对应说明,确认所需数据与依赖;本轮未重新运行这些实验。
- tts-bench/README.md
- tts-streaming-bench/REAL_STREAMING_CLONE_PROTOCOL.md
可直接复用的记录模板
generation_id,text_segment_id,bytes_received,decoded_audio_ms,buffer_ms,first_playable_ms,playout_start_ms,underruns,cancelled 示例门禁:已取消 generation 的后到音频块必须被丢弃;具体延迟目标由业务设定。
做到什么程度才算通过
- 首包和首个可听声音分别计时。
- 音频块的编码、采样率和声道一致。
- 长数字与句中停顿能正确发音。
- 取消后旧块不再回流到播放器。
没有重跑云端 TTS,也没有给出厂商速度排名;协议示例以实际选择的模型文档为准。
本轮确认的事实与来源
以下为公开资料支持的具体结论;操作流程和验收建议属于工程推导。仓库说明或厂商效果表述不等于独立实测。
CosyVoice 官方仓库描述文本输入和音频输出的双向流式能力;其最低延迟数字属于项目报告的特定条件。
资料日期:页面未统一标注;以复核日期为准 · 复核:2026-09-08
阅读原始来源 ↗MiniMax 当前 HTTP 合成接口提供 stream、voice_setting 和 audio_setting,并在模型枚举中列出 speech-2.8-hd 与 speech-2.8-turbo 等选项;流式返回不自动证明该 HTTP 接口可持续追加文本。
资料日期:页面未统一标注;以复核日期为准 · 复核:2026-09-08
阅读原始来源 ↗这次更新了什么
合并流式 TTS 全景与实战;减少重复厂商列表,更新当前 MiniMax 模型枚举并澄清单双向流。
合并前的内容入口
以下旧地址仍可访问,并会带你来到本篇。完整重构前材料已留存本地备份。
- research-hub/streaming-tts.html
- practice-hub/tts-bench-practice.html