RealtimeTTS
RealtimeTTS 是一款专为实时应用打造的高性能文本转语音(TTS)开源库。它核心解决了传统语音合成延迟高、响应慢的痛点,能够将文字流几乎即时地转化为清晰自然的语音输出,完美适配大语言模型(LLM)的流式生成场景,让 AI 对话不再有明显的等待停顿。
这款工具非常适合开发者构建实时语音助手、交互式客服系统或需要低延迟反馈的音频应用。其最大亮点在于强大的兼容性与稳定性:不仅支持 OpenAI、Elevenlabs、Azure、Coqui 等二十多种主流及前沿语音引擎,还内置了智能故障转移机制。当主用引擎出现波动时,它能自动切换至备用方案,确保服务持续稳定运行。此外,RealtimeTTS 具备多语言能力,并持续集成如 PocketTTS 等轻量级新引擎,在保持高质量音质的同时进一步优化了 CPU 占用与响应速度。无论是希望快速原型的工程师,还是追求极致体验的研究人员,都能通过它轻松实现流畅的实时语音交互。
使用场景
一位开发者正在构建基于大语言模型(LLM)的实时语音对话助手,需要让 AI 的回答能像真人一样即时流畅地播报出来。
没有 RealtimeTTS 时
- 延迟感明显:传统 TTS 引擎必须等待 LLM 生成完整句子后才开始合成音频,用户每次都要面对漫长的“思考沉默期”。
- 交互体验割裂:由于无法流式输出,声音是整段蹦出来的,缺乏自然对话的连贯性,让用户感觉是在听录音而非交流。
- 容错能力薄弱:一旦首选语音服务接口超时或报错,程序往往直接崩溃或静音,缺乏自动切换备用引擎的机制。
- 多引擎适配繁琐:若想尝试 Elevenlabs、Azure 或本地 Coqui 等不同效果,需要编写大量重复代码来适配各自的 API 差异。
使用 RealtimeTTS 后
- 近乎零延迟:利用流式特性,RealtimeTTS 能在 LLM 吐出第一个字时就立即开始合成语音,实现“边想边说”的丝滑体验。
- 拟真度大幅提升:音频输出清晰自然且连续不断,消除了机械的停顿感,让 AI 助手听起来更像真人在实时对谈。
- 运行稳定可靠:内置的故障转移机制会在主引擎异常时自动无缝切换至备用方案,确保对话服务永不中断。
- 开发效率倍增:通过统一的接口即可轻松调用 OpenAI、Edge TTS 等十几种引擎,无需关心底层差异,快速验证最佳音色。
RealtimeTTS 通过极低的延迟和强大的引擎兼容性,将原本生硬的文本回复转化为了流畅自然的实时语音交互,彻底重塑了人机对话的沉浸感。
运行环境要求
- Linux
- macOS
- Windows
- 非必需
- 大多数引擎支持 CPU 运行(如 PocketTTS, Piper, System TTS)
- 部分高级本地引擎(如 ParlerEngine, StyleTTS2)需要高性能 GPU(文中提及 RTX 4090 可实现实时推理),ParlerEngine 明确需要 Flash Attention 和 CUDA 支持(示例命令使用 cu121/cu122)
未说明(取决于所选引擎,本地大模型引擎通常需要较高内存)

快速开始
RealtimeTTS
易于使用、低延迟的实时文本转语音库
项目简介
RealtimeTTS 是一款面向实时应用的先进文本转语音(TTS)库。它以能够快速将文本流转换为高质量音频输出,同时保持极低的延迟而著称。
重要提示: 安装方式已更新,以便提供更多自定义选项。请使用
pip install realtimetts[all]而不是pip install realtimetts。更多信息请点击这里。
提示: 请查看 Linguflex,这是 RealtimeTTS 的原始项目。它允许您通过语音控制环境,是目前功能最强大、最复杂的开源助手之一。
https://github.com/KoljaB/RealtimeTTS/assets/7604638/87dcd9a5-3a4e-4f57-be45-837fc63237e7
核心特性
- 低延迟
- 几乎即时的文本转语音转换
- 兼容大型语言模型的输出
- 高质量音频
- 生成清晰自然的语音
- 多引擎支持
- 支持 OpenAI TTS、Elevenlabs、Azure Speech Services、Coqui TTS、StyleTTS2、Piper、gTTS、Edge TTS、Parler TTS、Kokoro、Cartesia、Faster Qwen 3、NeuTTS、PocketTTS、Modelslab、CAMB AI、MiniMax 和 System TTS
- 多语言支持
- 稳定可靠:
- 通过回退机制确保持续运行
- 在出现中断时自动切换到备用引擎,从而保证一致的性能和可靠性,这对于关键和专业应用场景至关重要
提示:请查看 RealtimeSTT,该库的输入端对应产品,提供语音转文本功能。两者结合可为大型语言模型构建强大的实时音频处理框架。
常见问题解答
请访问常见问题解答页面,获取关于 RealtimeTTS 使用的大量解答。
文档
RealtimeTTS 的文档提供以下语言版本:
如果您需要任何调整或添加其他语言,请随时告知!
更新内容
新引擎: PocketTTSEngine
- 安装方法:
pip install pocket-tts - Kyutai Labs 推出的轻量级 100M 参数 TTS,专为 CPU 优化(约 6 倍实时速度)
- 支持通过 WAV 文件进行语音克隆,延迟约 200 毫秒,内置 8 种声音
- 安装方法:
新引擎: NeuTTSEngine
- 设备端语音克隆 TTS,仅需 3 秒参考音频
- 安装方法: 从 https://github.com/neuphonic/neutts 克隆
新引擎: ZipoVoiceEngine
- 安装方法:
pip install RealtimeTTS - 测试文件示例: zipvoice_test.py
- 安装方法:
新引擎: OrpheusEngine
- 安装方法:
pip install RealtimeTTS[orpheus] - 测试文件示例: orpheus_test.py
- 安装方法:
新引擎: KokoroEngine
- 安装方法:
pip install RealtimeTTS[kokoro] - 测试文件示例: kokoro_test.py
- 安装方法:
支持更多 Kokoro 语言。完整安装还包括日语和中文(请参阅更新后的测试文件):
pip install "RealtimeTTS[kokoro,jp,zh]"
如果在使用日语时遇到问题(错误“模块 'jieba' 没有属性 'lcut'”),请尝试:
pip uninstall jieba jieba3k
pip install jieba
- 新引擎: PiperEngine
- 安装教程: 观看 YouTube 视频
- 测试文件示例: piper_test.py
StyleTTS2 引擎:
https://github.com/user-attachments/assets/d1634012-ba53-4445-a43a-7042826eedd7
EdgeTTS 引擎:
https://github.com/user-attachments/assets/73ec6258-23ba-4bc6-acc7-7351a13c5509
更多信息请参阅发布历史。
新增 ParlerEngine。需要 Flash Attention,否则在 4090 显卡上几乎无法达到实时推理的速度。
Windows 系统下 Parler 的安装步骤(在安装 RealtimeTTS 后):
pip install git+https://github.com/huggingface/parler-tts.git
pip install torch==2.3.1+cu121 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
pip install https://github.com/oobabooga/flash-attention/releases/download/v2.6.3/flash_attn-2.6.3+cu122torch2.3.1cxx11abiFALSE-cp310-cp310-win_amd64.whl
pip install "numpy<2"
技术栈
本库使用以下文本转语音引擎:
- 文本转语音引擎
- OpenAIEngine 🌐:OpenAI 的 TTS,提供 6 种优质语音
- CoquiEngine 🏠:高质量神经网络 TTS,支持本地处理
- AzureEngine 🌐:微软的 TTS,每月免费提供 50 万字符
- ElevenlabsEngine 🌐:优质语音质量,选项丰富
- GTTSEngine 🌐:免费的 Google 翻译 TTS,无需 GPU
- EdgeEngine 🌐:Edge 免费 TTS 服务(基于 Microsoft Azure)
- ParlerEngine 🏠:适用于高端 GPU 的本地神经网络 TTS
- SystemEngine 🏠:内置系统 TTS,快速部署
- PiperEngine 🏠:超快速 TTS 系统,也可在 Raspberry Pi 上运行
- StyleTTS2Engine 🏠:富有表现力、自然的语音合成
- OrpheusEngine 🏠:基于 Llama 的 TTS,支持情感标签
- CambEngine 🌐:CAMB AI MARS 模型,支持 140 多种语言
- MiniMaxEngine 🌐:MiniMax 云 TTS,提供 12 种预设语音
- ZipVoiceEngine 🏠:1.23 亿参数的零样本模型,达到最先进水平
- PocketTTSEngine 🏠:Kyutai Labs 1 亿参数模型,专为 CPU 优化并支持语音克隆
- NeuTTSEngine 🏠:仅需 3 秒参考音频即可实现语音克隆
- CartesiaEngine 🌐:基于 FastAPI 的高质量语音合成
- FasterQwenEngine 🏠:本地高速高质量语音克隆
- ModelsLabEngine 🌐:基于 API 的 TTS
- OmnivoiceEngine 🏠:支持数百种语言,具备极高品质的语音克隆能力
🏠 本地处理(无需互联网) 🌐 需要互联网连接
- 句子边界检测
- NLTK 句子分词器:自然语言工具包提供的句子分词器,适用于简单的英语文本转语音任务或追求简洁性的情况。
- Stanza 句子分词器:Stanza 句子分词器,适合多语言文本处理或对准确性和性能要求较高的场景。
通过使用“行业标准”组件,RealtimeTTS 提供了一个可靠、高端的技术基础,用于开发先进的语音解决方案。
安装
注意:不再推荐使用
pip install realtimetts进行基础安装,建议改用pip install realtimetts[all]。
注意:如有需要,请在 TextToAudioStream 中设置
output_device_index。Linux 用户:通过apt-get install -y portaudio19-dev安装 PortAudio;MacOS 用户:通过brew install portaudio安装 PortAudio。
RealtimeTTS 库提供了针对不同使用场景的依赖项安装选项。以下是根据您的需求安装 RealtimeTTS 的几种方式:
完整安装
要安装支持所有 TTS 引擎的 RealtimeTTS:
pip install -U realtimetts[all]
自定义安装
仅安装所需依赖项,可选择以下选项:
- all:包含所有引擎的完整包
- system:通过 pyttsx3 使用本地系统 TTS
- azure:支持 Azure 语音服务
- elevenlabs:集成 ElevenLabs API
- openai:OpenAI TTS 服务
- gtts:Google 文本转语音
- edge:Microsoft Edge TTS
- coqui:Coqui TTS 引擎
- camb:CAMB AI MARS TTS
- minimax:MiniMax 云 TTS
- minimal:仅核心包(用于自定义引擎开发)
示例:pip install realtimetts[all]、pip install realtimetts[azure]、pip install realtimetts[azure,elevenlabs,openai]。
虚拟环境安装
若希望在虚拟环境中进行完整安装,请按以下步骤操作:
python -m venv env_realtimetts
env_realtimetts\Scripts\activate.bat
python.exe -m pip install --upgrade pip
pip install -U realtimetts[all]
更多关于 CUDA 安装 的信息。
引擎要求
RealtimeTTS 支持的不同引擎具有各自独特的依赖和配置要求。请根据所选引擎确保满足相应条件。
SystemEngine
SystemEngine 可直接利用系统自带的 TTS 功能,无需额外设置。
GTTSEngine
GTTSEngine 直接使用 Google 翻译的文本转语音 API,无需额外配置。
OpenAIEngine
要使用 OpenAIEngine:
- 设置环境变量
OPENAI_API_KEY - 安装 FFmpeg(参见 CUDA 安装 第 3 点)。
AzureEngine
要使用 AzureEngine,您需要:
- Microsoft Azure 文本转语音 API 密钥(可通过
AzureEngine构造函数参数speech_key或环境变量AZURE_SPEECH_KEY提供) - Microsoft Azure 服务区域。
请确保在初始化 AzureEngine 时已准备好并正确配置这些凭据。
CambEngine
要使用 CambEngine,您需要:
- CAMB AI API 密钥(可通过
CambEngine构造函数参数api_key或环境变量CAMB_API_KEY提供) - 系统中已安装
mpv(用于流式播放音频)。 - 可用模型包括:
mars-flash(低延迟)、mars-pro(高保真)、mars-instruct(指令跟随)。 - 支持 140 多种语言,使用 BCP-47 代码表示(如
en-us、es-es、ja-jp)。
MiniMaxEngine
要使用 MiniMaxEngine,您需要:
- MiniMax API 密钥(可通过
MiniMaxEngine构造函数参数api_key或环境变量MINIMAX_API_KEY提供) - 可用模型包括:
speech-2.8-hd(高质量)、speech-2.8-turbo(快速)。 - 提供 12 种预设语音,涵盖英语及多种语言。
ElevenlabsEngine
对于 ElevenlabsEngine,您需要:
Elevenlabs API 密钥(可通过
ElevenlabsEngine构造函数参数api_key或环境变量ELEVENLABS_API_KEY提供)系统中已安装
mpv(用于播放 Elevenlabs 仅提供的 MPEG 格式音频)。🔹 安装
mpv:macOS:
brew install mpvLinux 和 Windows:请访问 mpv.io 查看安装说明。
PiperEngine
PiperEngine 使用 Piper 模型提供高质量的实时文本转语音合成。
单独安装:
- Piper 必须独立于 RealtimeTTS 安装。请参考 Windows 平台 Piper 安装教程。
配置:
- 初始化
PiperEngine时,需正确指定 Piper 可执行文件和语音模型文件的路径。 - 确保
PiperVoice已正确设置,并配备了相应的模型和配置文件。
- 初始化
CoquiEngine
提供高质量的本地神经网络 TTS,并支持语音克隆功能。
该引擎会先下载一个神经网络 TTS 模型。在大多数情况下,借助 GPU 合成即可满足实时需求。通常需要约 4–5 GB 显存。
- 要进行语音克隆,需将包含源语音的 WAV 文件名作为
voice参数传递给 CoquiEngine 构造函数。 - 最佳的语音克隆输入应为采样率 22050 Hz、单声道、16 位的 WAV 文件,且录音时长较短(约 5–30 秒)。
在大多数系统上,若想达到实时效果,必须启用 GPU 加速,否则可能会出现卡顿现象。
快速入门
以下是一个基本的使用示例:
from RealtimeTTS import TextToAudioStream, SystemEngine, AzureEngine, ElevenlabsEngine
engine = SystemEngine() # 替换为您使用的TTS引擎
stream = TextToAudioStream(engine)
stream.feed("你好,世界!你今天过得怎么样?")
stream.play_async()
输入文本
您可以输入单个字符串:
stream.feed("你好,这是一句话。")
或者您也可以输入生成器和字符迭代器来实现实时流式传输:
def write(prompt: str):
for chunk in openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content" : prompt}],
stream=True
):
if (text_chunk := chunk["choices"][0]["delta"].get("content")) is not None:
yield text_chunk
text_stream = write("一段由三句话组成的放松演讲。")
stream.feed(text_stream)
char_iterator = iter("逐字流式传输。")
stream.feed(char_iterator)
播放
异步播放:
stream.play_async()
while stream.is_playing():
time.sleep(0.1)
同步播放:
stream.play()
测试库
测试子目录包含一组脚本,可以帮助您评估和理解RealtimeTTS库的功能。
请注意,大多数测试仍然依赖于“旧”OpenAI API(<1.0.0)。新OpenAI API的用法在openai_1.0_test.py中进行了演示。
simple_test.py
- 描述:一个类似于“hello world”的演示,展示了该库最简单的用法。
complex_test.py
- 描述:一个全面的演示,展示了该库提供的大部分功能。
coqui_test.py
- 描述:本地Coqui TTS引擎的测试。
translator.py
- 依赖项:运行
pip install openai realtimestt。 - 描述:实时翻译成六种不同的语言。
- 依赖项:运行
openai_voice_interface.py
- 依赖项:运行
pip install openai realtimestt。 - 描述:唤醒词激活且基于语音的OpenAI API用户界面。
- 依赖项:运行
advanced_talk.py
- 依赖项:运行
pip install openai keyboard realtimestt。 - 描述:在开始AI对话之前选择TTS引擎和声音。
- 依赖项:运行
minimalistic_talkbot.py
- 依赖项:运行
pip install openai realtimestt。 - 描述:一个20行代码的基本聊天机器人。
- 依赖项:运行
simple_llm_test.py
- 依赖项:运行
pip install openai。 - 描述:简单演示如何将该库与大型语言模型(LLMs)集成。
- 依赖项:运行
test_callbacks.py
- 依赖项:运行
pip install openai。 - 描述:展示了回调函数,并让您在实际应用环境中检查延迟时间。
- 依赖项:运行
暂停、恢复与停止
暂停音频流:
stream.pause()
恢复已暂停的流:
stream.resume()
立即停止流:
stream.stop()
需求说明
Python版本:
- 要求:Python >= 3.9,< 3.13
- 原因:该库依赖于Coqui的GitHub库“TTS”,而该库需要此范围内的Python版本。
PyAudio:用于创建输出音频流
stream2sentence:用于将传入的文本流分割成句子
pyttsx3:系统文本转语音转换引擎
pydub:用于转换音频块格式
azure-cognitiveservices-speech:Azure文本转语音转换引擎
elevenlabs:Elevenlabs文本转语音转换引擎
coqui-TTS:Coqui的XTTS文本转语音库,用于高质量的本地神经网络TTS
特别感谢Idiap研究所维护的Coqui TTS的分支。
openai:用于与OpenAI的TTS API交互
gtts:Google翻译文本转语音转换
配置
TextToAudioStream的初始化参数
在初始化TextToAudioStream类时,您有多种选项可以自定义其行为。以下是可用的参数:
engine(BaseEngine)
- 类型:
Union[BaseEngine, List[BaseEngine]] - 必填:是
- 描述:用于文本转音频合成的核心引擎。
- 如果提供单个引擎实例,则所有合成任务都将使用该引擎。
- 如果提供多个引擎实例列表,则系统会使用它们作为备用机制。
on_text_stream_start(可调用对象)
- 类型:
Callable - 必填:否
- 描述:当文本流处理过程开始时触发的回调函数。
- 用途:显示“正在处理…”的状态消息或初始化资源。
- 签名:
on_text_stream_start() -> None。
on_text_stream_stop(可调用对象)
- 类型:
Callable - 必填:否
- 描述:当文本流处理过程结束时触发的回调函数。
- 用途:清理资源或提示文本到语音管道已完成处理。
- 签名:
on_text_stream_stop() -> None。
on_audio_stream_start(可调用对象)
- 类型:
Callable - 必填:否
- 描述:当音频播放开始时触发的回调函数。
- 用途:记录播放事件或更新UI元素以反映音频正在播放。
- 签名:
on_audio_stream_start() -> None。
on_audio_stream_stop(可调用对象)
- 类型:
Callable - 必填:否
- 描述:当音频播放结束时触发的回调函数。
- 用途:重置UI元素或在播放结束后启动后续操作。
- 签名:
on_audio_stream_stop() -> None。
on_character(可调用对象)
- 类型:
Callable - 必填:否
- 描述:在合成过程中每处理一个字符时触发的回调函数。
- 用途:实时可视化字符级别的处理过程,可用于调试或监控。
- 签名:
on_character(character: str) -> None。
on_word(可选的可调用对象)
- 类型:
Callable - 必填:否
- 默认值:
None - 描述:当一个单词开始播放时触发的回调函数。该回调接收一个对象(
TimingInfo的实例),其中包含:- word:单词的文本,
- start_time:单词开始播放的时间偏移量(以秒为单位),
- end_time:单词结束播放的时间偏移量(以秒为单位)。
- 用途:可用于跟踪单词级别的进度或在显示设备上突出显示所说出的单词。
- 备注:目前仅支持AzureEngine和KokoroEngine(针对美式和英式语音)。其他引擎不提供单词级别的计时信息。
output_device_index(整数)❗ ElevenlabsEngine 和 EdgeEngine(MPV 播放)不支持此参数
- 类型:
int - 是否必填: 否
- 默认值:
None - 描述: 用于播放的音频输出设备索引。
- 工作原理: 系统将使用与此索引对应的设备进行音频播放。如果为
None,则使用系统的默认音频输出设备。 - 获取设备索引: 可使用 PyAudio 的设备查询方法来获取可用的索引。
- 工作原理: 系统将使用与此索引对应的设备进行音频播放。如果为
mpv_audio_device(字符串)适用于 ElevenlabsEngine 和 EdgeEngine(MPV 播放)
- 类型:
str - 是否必填: 否
- 默认值:
None - 描述: 用于播放的音频设备名称。
- 工作原理: 系统将使用与此名称对应的设备进行音频播放。如果为
None,则使用系统的默认音频输出设备。 - 获取设备名称: 可使用
mpv --audio-device=help来查看设备名称列表。
- 工作原理: 系统将使用与此名称对应的设备进行音频播放。如果为
tokenizer(字符串)
- 类型:
str - 是否必填: 否
- 默认值:
"nltk" - 描述: 指定用于将文本拆分为句子或片段的分词器。
- 支持选项:
"nltk"(默认)和"stanza"。 - 自定义分词: 您可以通过设置
tokenize_sentences参数来提供自定义分词器。
- 支持选项:
language(字符串)
- 类型:
str - 是否必填: 否
- 默认值:
"en" - 描述: 用于句子拆分的语言代码。
- 示例:
"en"表示英语,"de"表示德语,"fr"表示法语。 - 请确保所选分词器支持指定的语言。
- 示例:
muted(布尔值)
- 类型:
bool - 是否必填: 否
- 默认值:
False - 描述: 控制是否静音音频播放。
- 如果为
True,音频播放将被禁用,不会打开音频流,从而允许合成器生成音频数据而不进行播放。 - 适用场景: 适用于需要将音频保存到文件或处理音频片段而无需听到输出的情况。
- 如果为
frames_per_buffer(整数)
- 类型:
int - 是否必填: 否
- 默认值:
pa.paFramesPerBufferUnspecified - 描述: 定义 PyAudio 每个缓冲区处理的音频帧数。
- 影响:
- 值越小,延迟越低,但 CPU 使用率越高。
- 值越大,延迟越高,但 CPU 负载越低。
- 如果设置为
pa.paFramesPerBufferUnspecified,PyAudio 将根据平台和硬件选择默认值。
- 影响:
comma_silence_duration(浮点数)
- 类型:
float - 是否必填: 否
- 默认值:
0.0 - 描述: 在逗号后插入的静音时长(以秒为单位)。
sentence_silence_duration(浮点数)
- 类型:
float - 是否必填: 否
- 默认值:
0.0 - 描述: 在句末插入的静音时长(以秒为单位)。
default_silence_duration(浮点数)
- 类型:
float - 是否必填: 否
- 默认值:
0.0 - 描述: 当没有适用的标点规则时,片段之间的默认静音时长(以秒为单位)。
playout_chunk_size(整数)
- 类型:
int - 是否必填: 否
- 默认值:
-1 - 描述: 指定要播放到流中的音频块大小(以字节为单位)。
- 行为:
- 如果为
-1,则块大小会根据frames_per_buffer或内部默认值动态确定。 - 较小的块大小可以降低延迟,但可能会增加开销。
- 较大的块大小可以提高效率,但可能会引入播放延迟。
- 如果为
- 行为:
level(整数)
- 类型:
int - 是否必填: 否
- 默认值:
logging.WARNING - 描述: 设置内部日志记录器的日志级别。
- 示例:
logging.DEBUG: 用于调试的详细信息。logging.INFO: 一般运行时信息。logging.WARNING: 关于潜在问题的警告。logging.ERROR: 需要关注的严重错误。
- 示例:
示例用法:
engine = YourEngine() # 替换为您使用的引擎
stream = TextToAudioStream(
engine=engine,
on_text_stream_start=my_text_start_func,
on_text_stream_stop=my_text_stop_func,
on_audio_stream_start=my_audio_start_func,
on_audio_stream_stop=my_audio_stop_func,
level=logging.INFO
)
方法
play 和 play_async
这两个方法负责执行文本到音频的合成,并播放音频流。区别在于,play 是一个阻塞函数,而 play_async 会在单独的线程中运行,从而允许其他操作继续进行。
参数:
fast_sentence_fragment (bool)
- 默认值:
True - 说明: 当设置为
True时,该方法会优先考虑速度,更快地生成并播放句子片段。这对于对延迟敏感的应用场景非常有用。
fast_sentence_fragment_allsentences (bool)
- 默认值:
False - 说明: 当设置为
True时,会将快速句子片段处理应用于所有句子,而不仅仅是第一句。
fast_sentence_fragment_allsentences_multiple (bool)
- 默认值:
False - 说明: 当设置为
True时,允许一次输出多个句子片段,而不仅仅是一个。
buffer_threshold_seconds (float)
默认值:
0.0说明: 指定缓冲阈值的时间(以秒为单位),这会影响音频播放的流畅性和连续性。
- 工作原理: 在合成新句子之前,系统会检查缓冲区中是否还有超过
buffer_threshold_seconds所指定时间长度的音频内容。如果有,则会从文本生成器中获取下一句,假设能够在缓冲区剩余音频的时间窗口内完成该句的获取和合成。这一过程可以让文本转语音引擎获得更多的上下文信息,从而提升合成质量,改善用户体验。
较高的值可以确保有更多的预缓冲音频,减少播放过程中出现静音或断续的可能性。如果遇到中断或停顿的情况,可以考虑适当提高此值。
- 工作原理: 在合成新句子之前,系统会检查缓冲区中是否还有超过
minimum_sentence_length (int)
- 默认值:
10 - 说明: 设置被视为可合成句子的最小字符长度。这会影响文本块的处理和播放方式。
minimum_first_fragment_length (int)
- 默认值:
10 - 说明: 第一个句子片段在被输出之前所需的最小字符数。
log_synthesized_text (bool)
- 默认值:
False - 说明: 启用后,会在文本被合成为音频时记录这些文本块。有助于审计和调试。
reset_generated_text (bool)
- 默认值:
True - 说明: 如果为
True,则在开始处理前重置已生成的文本。
output_wavfile (str)
- 默认值:
None - 说明: 如果设置了此参数,则会将音频保存到指定的 WAV 文件中。
on_sentence_synthesized (callable)
- 默认值:
None - 说明: 在单个句子片段被合成完成后调用的回调函数。
before_sentence_synthesized (callable)
- 默认值:
None - 说明: 在单个句子片段被合成之前调用的回调函数。
on_audio_chunk (callable)
- 默认值:
None - 说明: 当单个音频块准备就绪时调用的回调函数。
tokenizer (str)
- 默认值:
"nltk" - 说明: 用于句子切分的分词器。目前支持
"nltk"和"stanza"。
tokenize_sentences (callable)
- 默认值:
None - 说明: 一个自定义函数,用于从输入文本中切分句子。如果您对 nltk 和 stanza 不满意,可以提供自己的轻量级分词器。该函数应接受字符串形式的文本,并返回由字符串组成的句子列表。
language (str)
- 默认值:
"en" - 说明: 用于句子切分的语言。
context_size (int)
- 默认值:
12 - 说明: 用于确定句子边界的上下文字符数。较大的上下文可以提高句子边界检测的准确性。
context_size_look_overhead (int)
- 默认值:
12 - 说明: 在检测句子边界时向前查看的额外上下文大小。
muted (bool)
- 默认值:
False - 说明: 如果为
True,则会禁用通过本地扬声器播放音频。这在您希望仅将音频合成到文件中,或者处理音频块而不进行播放时非常有用。
sentence_fragment_delimiters (str)
- 默认值:
".?!;:,\n…)]}。-" - 说明: 被视为句子分隔符的字符字符串。
force_first_fragment_after_words (int)
- 默认值:
15 - 说明: 强制在读取一定数量的单词后立即输出第一个句子片段。
CUDA 安装
这些步骤推荐给那些需要更好性能且拥有兼容 NVIDIA GPU 的用户。
注意: 要检查您的 NVIDIA GPU 是否支持 CUDA,请访问 官方 CUDA GPU 列表。
要使用支持 CUDA 的 PyTorch,请按照以下步骤操作:
注意: 较新的 PyTorch 安装版本可能(未经验证)不再需要安装 Toolkit 和 cuDNN。
安装 NVIDIA CUDA Toolkit: 例如,要安装 Toolkit 12.X,请
- 访问 NVIDIA CUDA 下载页面。
- 选择您的操作系统、系统架构和操作系统版本。
- 下载并安装软件。
或者,要安装 Toolkit 11.8,请
- 访问 NVIDIA CUDA Toolkit 归档页面。
- 选择您的操作系统、系统架构和操作系统版本。
- 下载并安装软件。
安装 NVIDIA cuDNN:
例如,要为 CUDA 11.x 安装 cuDNN 8.7.0,请
- 访问 NVIDIA cuDNN 归档页面。
- 点击“下载 cuDNN v8.7.0(2022年11月28日),适用于 CUDA 11.x”。
- 下载并安装软件。
安装 ffmpeg:
您可以从 ffmpeg 官网 下载适用于您操作系统的安装程序。
或者使用包管理器:
在 Ubuntu 或 Debian 上:
sudo apt update && sudo apt install ffmpeg在 Arch Linux 上:
sudo pacman -S ffmpeg在 macOS 上使用 Homebrew(https://brew.sh/):
brew install ffmpeg在 Windows 上使用 Chocolatey(https://chocolatey.org/):
choco install ffmpeg在 Windows 上使用 Scoop(https://scoop.sh/):
scoop install ffmpeg
安装支持 CUDA 的 PyTorch:
若要升级您的 PyTorch 安装以启用 CUDA 的 GPU 支持,请根据您使用的具体 CUDA 版本遵循以下说明。这在您希望利用 CUDA 功能提升 RealtimeSTT 性能时非常有用。
对于 CUDA 11.8:
要将 PyTorch 和 Torchaudio 更新为支持 CUDA 11.8,请使用以下命令:
pip install torch==2.5.1+cu118 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu118对于 CUDA 12.X:
要将 PyTorch 和 Torchaudio 更新为支持 CUDA 12.X,请执行以下命令:
pip install torch==2.5.1+cu121 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu121请将
2.3.1替换为您系统和需求相匹配的 PyTorch 版本。
解决兼容性问题的修复方法: 如果您遇到库兼容性问题,请尝试将这些库设置为固定版本:
pip install networkx==2.8.8 pip install typing_extensions==4.8.0 pip install fsspec==2023.6.0 pip install imageio==2.31.6 pip install networkx==2.8.8 pip install numpy==1.24.3 pip install requests==2.31.0
💖 致谢
向 Coqui AI 团队致以衷心的感谢——尤其是才华横溢的 Eren Gölge,他是第一个为我们提供本地高质量实时合成技术,并且还具备可克隆语音功能的人!
感谢 Pierre Nicolas Durette 使用他的 gtts Python 库,通过 Google Translate 提供了无需 GPU 即可使用的免费文本转语音服务。
贡献
我们始终欢迎贡献(例如添加新引擎的 PR)。
许可信息
❗ 重要提示:
虽然本库的源代码是开源的,但它所依赖的许多引擎的使用权限并非如此:外部引擎提供商通常在其免费计划中限制商业用途。这意味着这些引擎可用于非商业项目,但商业用途则需要付费计划。
引擎许可摘要:
CoquiEngine
- 许可:仅对非商业项目开放源代码。
- 商业用途:需要付费计划。
- 详情:CoquiEngine 许可
ElevenlabsEngine
- 许可:仅对非商业项目开放源代码。
- 商业用途:所有付费计划均可使用。
- 详情:ElevenlabsEngine 许可
AzureEngine
- 许可:仅对非商业项目开放源代码。
- 商业用途:从标准层级开始可用。
- 详情:AzureEngine 许可
SystemEngine
- 许可:Mozilla 公共许可证 2.0 和 GNU 较小通用公共许可证(LGPL)3.0版。
- 商业用途:在此许可下允许。
- 详情:SystemEngine 许可
GTTSEngine
- 许可:MIT 许可
- 商业用途:由于采用 MIT 许可,理论上是可以的。不过由于其使用了未公开的 Google Translate 语音功能,可能需要谨慎对待。
- 详情:GTTS MIT 许可
OpenAIEngine
- 许可:请阅读 OpenAI 使用条款
免责声明:此处是对各许可证的理解总结,仅供参考,不构成法律建议。如果您计划在项目中使用这些引擎,请务必仔细阅读并尊重各引擎提供商的许可协议。
贡献者
音频许可
音频样本来源于 Meta(Facebook Research)的 EARS 数据集: https://huggingface.co/datasets/facebookresearch/ears_dataset
采用 CC BY-NC 4.0 许可: https://creativecommons.org/licenses/by-nc/4.0/
作者
Kolja Beigel 邮箱:kolja.beigel@web.de
版本历史
v0.6.02026/03/28v0.5.72025/07/21v0.5.62025/06/27v0.5.52025/05/03v0.5.32025/04/19v0.5.12025/04/11v0.5.02025/03/28v0.4.552025/03/24v0.4.542025/03/22v0.4.522025/03/19v0.4.512025/03/17v0.4.502025/03/09v0.4.492025/03/09v0.4.482025/02/15v0.4.472025/02/09v0.4.462025/02/08v0.4.432025/02/04v0.4.422025/02/03v0.4.412025/01/11v0.4.402025/01/06常见问题
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
GPT-SoVITS
GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。
TTS
🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。
LocalAI
LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获
bark
Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。
ChatTTS
ChatTTS 是一款专为日常对话场景打造的生成式语音模型,特别适用于大语言模型助手等交互式应用。它主要解决了传统文本转语音(TTS)技术在对话中缺乏自然感、情感表达单一以及难以处理停顿、笑声等细微语气的问题,让机器生成的语音听起来更像真人在聊天。 这款工具非常适合开发者、研究人员以及希望为应用增添自然语音交互功能的设计师使用。普通用户也可以通过社区开发的衍生产品体验其能力。ChatTTS 的核心亮点在于其对对话任务的深度优化:它不仅支持中英文双语,还能精准控制韵律细节,自动生成自然的 laughter(笑声)、pauses(停顿)和 interjections(插入语),从而实现多说话人的互动对话效果。在韵律表现上,ChatTTS 超越了大多数开源 TTS 模型。目前开源版本基于 4 万小时数据预训练而成,虽主要用于学术研究与教育目的,但已展现出强大的潜力,并支持流式音频生成与零样本推理,为后续的多情绪控制等进阶功能奠定了基础。

