AIAI 学习 · 专题库

语音与对话

把流式文字稳定变成语音

贯通文本分段、TTS 音频块、解码与播放队列,定位断音。

资料复核:2026-09-082 份直接来源含操作步骤与记录模板
先做什么

先确认“流”的是哪一侧:一次提交完整文本、分块返回音频,和持续输入文本、持续输出音频,是两种不同接口能力。

理解这条链路

LLM 文本增量可读短语缓冲TTS音频解码带代次的播放队列扬声器
参考流程:根据公开能力整理的操作顺序;分支、重试和回退以正文说明为准,不代表厂商内部实现。

正确测量首音与连续性

网络首包可能是事件、头信息或不可播放的压缩碎片。至少记下 first_byte、first_decodable_audio、playout_start 和每次 underrun。队列必须以可播放音频时长计量;不能把块数当剩余播放时间。

不要用过短分段换取表面低延迟

每个 token 都触发一次合成会破坏韵律、数字和词语。按可读短语切分,并对金额、日期、网址、英文缩写设置不可截断的单元。取消时同时停止上游任务、拒绝后到音频并清空未播队列,保留已播位置。

按这个顺序操作

  1. 先用固定文本验证采样率、编码和播放器契约,再接入真实文本流。
  2. 测试短回复、长数字、中英混读和中途取消,记录音频块间隔及缓冲时长。
  3. 对同一文本比较分段策略,检查发音、连续性与首音时间三者。
  4. 通过限速或延迟注入检查缓冲耗尽时的恢复,保留真实试听文件。
配套本地工具

以下工具位于 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,也没有给出厂商速度排名;协议示例以实际选择的模型文档为准。

本轮确认的事实与来源

以下为公开资料支持的具体结论;操作流程和验收建议属于工程推导。仓库说明或厂商效果表述不等于独立实测。

[1] CosyVoice · 官方仓库

CosyVoice 官方仓库描述文本输入和音频输出的双向流式能力;其最低延迟数字属于项目报告的特定条件。

资料日期:页面未统一标注;以复核日期为准 · 复核:2026-09-08

阅读原始来源 ↗
[2] MiniMax · HTTP 语音合成

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

接着解决下一个问题