RealtimeTTS
定义
RealtimeTTS 是一个面向实时场景的文本转语音库,以 Python 包的形式发布,通过 pip 安装后即可在程序中调用[2]。它的核心是 TextToAudioStream 类:使用方先选定一个语音合成引擎,再把文本交给该对象,由它完成分句、合成与播放的调度[1]。
与一次性接收完整文本再输出音频的传统做法不同,该库把输入视为可增量的文本流。feed 方法既接受单个字符串,也接受生成器或字符迭代器,因此文本尚未写完时音频就可以开始输出[4]。项目源码以 MIT 许可证 发布,但其调用的各引擎、模型权重与语音数据另有各自的授权条件[1]。
原理
该库把工作拆成文本切分、语音合成与音频播放三个阶段,并通过缓冲策略协调三者节奏。文本流入后,先由分词器判断句子边界,把不完整的文本片段拼成可合成的语句;已经合成的音频进入播放缓冲,播放缓冲与文本输入并行推进[2]。
缓冲判断依据一个时间阈值:在合成下一句之前,系统检查当前缓冲区中剩余音频是否超过设定秒数;若超过,就继续从文本源取下一句,前提是取句与合成能在剩余音频播完前完成[2]。这一阈值提高后预缓冲音频增多、播放更连贯,但首次出声会推迟;降低则反应更快、更易出现停顿。早期版本还引入首个片段强制输出机制,达到设定词数即切出首段,以缩短起播等待[3]。
分句环节默认使用 NLTK 分词器,也可切换为 Stanza 以覆盖更多语种,并允许传入自定义分句函数[2]。两者需配合语言参数与最小句长、上下文长度等参数使用;由于不同语言的平均词长差异较大,切换到中文等语言时要相应调低最小句长与上下文长度[3]。文本切分逻辑由同作者的 stream2sentence 库承担[5]。
播放层由 PyAudio 建立输出流,pause、resume、stop 方法分别用于暂停、恢复和立即停止;play 为阻塞式调用,play_async 在独立线程中运行,便于主线程继续处理其他任务[4]。库还提供文本流开始与结束、音频流开始与结束、字符、句子、音频块以及词级时间戳等回调接口,词级时间戳目前仅部分引擎支持[4]。
发展历程
项目于 2023 年 8 月创建,作者 Kolja Beigel 将其从自研语音助手项目 Linguflex 中拆分出来单独发布[6][4]。早期版本只支持系统语音、Azure 与 ElevenLabs 等少数引擎,随后逐步扩展[7]。
0.3.0 版本新增 Stanza 分词器以支持中文等更多语言,同时加入多引擎回退机制与将实时合成结果写入 WAV 文件的功能[3]。0.4.0 版本引入基于 Google 翻译语音接口的 GTTSEngine,使无显卡环境也能获得优于系统语音的音质[8]。此后项目陆续接入 Piper、StyleTTS2、Parler、Kokoro、Orpheus、ZipVoice 等本地引擎,以及 CAMB、MiniMax 等云端服务[1][9]。
作者在项目文档中说明,因时间有限,项目已转为以社区贡献为主,他不再实现大量新功能或提供用户支持,但会不定期审阅并合并高质量的外部提交[4]。仓库后续还增加了以 OpenAI 兼容 HTTP 接口提供语音合成服务的部署方式[1]。
应用
该库的典型用途是把大语言模型的输出实时朗读出来:调用方把模型返回的文本块逐段交给 feed,音频即可在模型仍在生成时开始播放,从而压缩用户从提问到听到回答的等待[7]。仓库的示例脚本覆盖了与 大语言模型 对接、唤醒词语音界面、多语言实时翻译等场景[7]。
在本地化部署方面,Coqui 引擎可在本机运行神经语音合成并支持声音克隆,通常需要约 4 至 5 GB 显存才能在实时速度下运行;参考音频以 22050 Hz 单声道 16 位、时长 5 至 30 秒左右的 WAV 文件效果较好[4]。对资源受限设备,Piper 等轻量引擎可在树莓派一类硬件上运行[4]。
该库也被用于与语音识别库 RealtimeSTT 搭配,构成围绕语言模型的实时语音输入与输出组合,同作者的 LocalAIVoiceChat 等示例项目即采用这一组合[4][5]。
局限
该库本身不含语音合成模型,音质、语种覆盖与延迟表现取决于所选引擎:云端引擎需要网络连接和 API 凭证,本地神经引擎则往往依赖支持 CUDA 的显卡,否则合成速度跟不上播放而出现断续[4]。部分引擎还要求额外安装 mpv 播放器或 ffmpeg 等外部组件[4]。
授权方面,库源码采用 MIT 许可证,但所用引擎和模型并不统一:多个外部引擎对免费额度内的商业使用有限制,商业项目需自行确认相应条款[10]。此外,项目文档明确其原生本地引擎路径所用模型权重、语音潜变量和参考音频不随库分发,使用者需自行确保对所提供声音或录音拥有权利[1]。
维护状态同样构成限制。作者已公开表示不再主动开发与提供支持,功能演进依赖社区提交,问题修复与新引擎接入的节奏因此不由单一维护者保证[4]。项目对 Python 版本设有区间要求,原因是其所依赖的 Coqui TTS 库限制了可用的解释器版本[4]。
参见
-
RealtimeSTT —— 同作者开发的低延迟语音识别库,与本词条构成语音输入与输出的对应组合。
-
大语言模型 —— 本库主要用于把其逐词输出的文本流实时转为语音。
-
文本转语音 —— 本词条所属的技术类别。
-
Coqui TTS —— 本库支持的可本地运行、支持声音克隆的神经语音合成引擎。
-
Linguflex —— 本库最初从中拆分出来的语音助手项目。
参考资料
- RealtimeTTS [引用日期2026-10-29]
- realtimetts [引用日期2026-10-29]
- Release v0.3.0 · KoljaB/RealtimeTTS - Skip to content [引用日期2026-10-29]
- README [引用日期2026-10-29]
- KoljaB | GitHub owners - KoljaB 21 Repositories [引用日期2026-10-29]
- RealtimeTTS | Ecosystem Directory | market.dev [引用日期2026-10-29]
- pypi.org 上的网页 [引用日期2026-10-29]
- Releases · KoljaB/RealtimeTTS - Skip to content [引用日期2026-10-29]
- theresanaiforthat.com 上的网页 [引用日期2026-10-29]
- pypi.org 上的网页 [引用日期2026-10-29]