一个先进的实时文本转语音Python库,支持多种TTS引擎,具有低延迟、高质量的音频输出能力

MITPythonRealtimeTTSKoljaB 3.4k Last Updated: July 22, 2025

RealtimeTTS 项目详细介绍

项目概述

RealtimeTTS 是一个先进的实时文本转语音(TTS)Python库,专为需要低延迟、高质量音频输出的实时应用而设计。该库能够快速将文本流转换为高质量的音频输出,延迟极低,是构建语音助手、AI对话系统和可访问性工具的理想选择。

项目地址: https://github.com/KoljaB/RealtimeTTS

核心特性

1. 低延迟处理

  • 几乎瞬时的文本转语音转换:优化的处理流程确保最小延迟
  • 兼容LLM输出:可以直接处理大语言模型的流式输出
  • 实时流处理:支持字符级和句子级的实时处理

2. 高质量音频输出

  • 清晰自然的语音:生成接近人类的自然语音
  • 多种音频格式支持:支持多种音频输出格式
  • 可配置的音频参数:可调整采样率、比特率等参数

3. 多引擎支持

RealtimeTTS支持多种TTS引擎,提供丰富的选择:

云端引擎 🌐

  • OpenAIEngine: OpenAI的TTS服务,提供6种高质量语音
  • AzureEngine: 微软Azure语音服务,每月50万免费字符
  • ElevenlabsEngine: 高端语音质量,提供丰富的语音选项
  • GTTSEngine: 免费的Google翻译TTS,无需GPU
  • EdgeEngine: Microsoft Edge免费TTS服务

本地引擎 🏠

  • CoquiEngine: 高质量神经TTS,支持本地处理和语音克隆
  • ParlerEngine: 本地神经TTS,适用于高端GPU
  • SystemEngine: 内置系统TTS,快速设置
  • PiperEngine: 极快的TTS系统,甚至可在树莓派上运行
  • StyleTTS2Engine: 风格化语音合成
  • KokoroEngine: 支持多语言的新引擎
  • OrpheusEngine: 最新添加的引擎选项

4. 多语言支持

  • 支持多种语言的语音合成
  • 智能的句子分割和语言检测
  • 可配置的语言特定参数

5. 健壮性和可靠性

  • 故障转移机制:当一个引擎出现问题时自动切换到备用引擎
  • 持续运行保障:确保关键和专业用例的一致性能和可靠性
  • 错误处理:完善的错误处理和恢复机制

安装方式

推荐安装(完整版)

pip install -U realtimetts[all]

自定义安装

可根据需要选择特定的引擎支持:

# 仅系统TTS
pip install realtimetts[system]

# Azure支持
pip install realtimetts[azure]

# 多引擎组合
pip install realtimetts[azure,elevenlabs,openai]

可用的安装选项

  • all: 完整安装,支持所有引擎
  • system: 本地系统TTS(pyttsx3)
  • azure: Azure语音服务支持
  • elevenlabs: ElevenLabs API集成
  • openai: OpenAI TTS服务
  • gtts: Google文本转语音
  • edge: Microsoft Edge TTS
  • coqui: Coqui TTS引擎
  • minimal: 仅核心包(用于自定义引擎开发)

核心组件

1. 文本流处理

  • 句子边界检测:支持NLTK和Stanza分词器
  • 智能分割:根据标点符号和语言规则分割文本
  • 流式处理:支持字符迭代器和生成器

2. 音频流管理

  • 异步播放play_async() 方法支持非阻塞播放
  • 同步播放play() 方法用于阻塞式播放
  • 流控制:支持暂停、恢复、停止操作

3. 回调系统

提供丰富的回调函数用于监控和控制:

  • on_text_stream_start(): 文本流开始时触发
  • on_text_stream_stop(): 文本流结束时触发
  • on_audio_stream_start(): 音频播放开始时触发
  • on_audio_stream_stop(): 音频播放结束时触发
  • on_character(): 每个字符处理时触发
  • on_word(): 单词级别的时间同步(支持Azure和Kokoro引擎)

基本用法示例

简单使用

from RealtimeTTS import TextToAudioStream, SystemEngine

# 创建引擎和流
engine = SystemEngine()
stream = TextToAudioStream(engine)

# 输入文本并播放
stream.feed("Hello world! How are you today?")
stream.play_async()

流式文本处理

# 处理字符串
stream.feed("Hello, this is a sentence.")

# 处理生成器(适用于LLM输出)
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("A three-sentence relaxing speech.")
stream.feed(text_stream)

# 处理字符迭代器
char_iterator = iter("Streaming this character by character.")
stream.feed(char_iterator)

播放控制

# 异步播放
stream.play_async()
while stream.is_playing():
    time.sleep(0.1)

# 同步播放
stream.play()

# 控制操作
stream.pause()   # 暂停
stream.resume()  # 恢复
stream.stop()    # 停止

高级配置

TextToAudioStream 参数

stream = TextToAudioStream(
    engine=engine,                    # TTS引擎
    on_text_stream_start=callback,    # 文本流开始回调
    on_audio_stream_start=callback,   # 音频流开始回调
    output_device_index=None,         # 音频输出设备
    tokenizer="nltk",                # 分词器选择
    language="en",                   # 语言代码
    muted=False,                     # 是否静音
    level=logging.WARNING            # 日志级别
)

播放参数

stream.play(
    fast_sentence_fragment=True,      # 快速句子片段处理
    buffer_threshold_seconds=0.0,     # 缓冲阈值
    minimum_sentence_length=10,       # 最小句子长度
    log_synthesized_text=False,       # 记录合成文本
    reset_generated_text=True,        # 重置生成文本
    output_wavfile=None,             # 保存到WAV文件
    on_sentence_synthesized=callback, # 句子合成完成回调
    before_sentence_synthesized=callback, # 句子合成前回调
    on_audio_chunk=callback          # 音频块就绪回调
)

引擎特定配置

OpenAI引擎

from RealtimeTTS import OpenAIEngine

engine = OpenAIEngine(
    api_key="your-api-key",  # 或设置环境变量 OPENAI_API_KEY
    voice="alloy",           # 可选: alloy, echo, fable, onyx, nova, shimmer
    model="tts-1"           # 或 tts-1-hd
)

Azure引擎

from RealtimeTTS import AzureEngine

engine = AzureEngine(
    speech_key="your-speech-key",    # 或设置环境变量 AZURE_SPEECH_KEY
    service_region="your-region",    # 例如: "eastus"
    voice_name="en-US-AriaNeural"   # Azure语音名称
)

Coqui引擎(语音克隆)

from RealtimeTTS import CoquiEngine

engine = CoquiEngine(
    voice="path/to/voice/sample.wav",  # 语音克隆源文件
    language="en"                      # 语言代码
)

测试文件

项目提供了丰富的测试示例:

  • simple_test.py: 基本"Hello World"演示
  • complex_test.py: 全功能演示
  • coqui_test.py: 本地Coqui TTS引擎测试
  • translator.py: 实时多语言翻译(需要安装openai realtimestt
  • openai_voice_interface.py: 语音激活的OpenAI API界面
  • advanced_talk.py: 高级对话系统
  • minimalistic_talkbot.py: 20行代码的简单聊天机器人
  • test_callbacks.py: 回调功能和延迟测试

CUDA支持

为了获得更好的性能,特别是使用本地神经引擎时,推荐安装CUDA支持:

安装步骤

  1. 安装NVIDIA CUDA Toolkit(版本11.8或12.X)
  2. 安装NVIDIA cuDNN
  3. 安装ffmpeg
  4. 安装支持CUDA的PyTorch
# 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
pip install torch==2.5.1+cu121 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu121

应用场景

1. AI助手和聊天机器人

  • 实时响应用户查询
  • 自然的对话体验
  • 多语言支持

2. 可访问性工具

  • 屏幕阅读器
  • 视觉障碍辅助
  • 学习辅助工具

3. 内容创作

  • 播客制作
  • 有声读物
  • 教育内容

4. 客户服务

  • 自动客服系统
  • 电话机器人
  • 实时翻译服务

5. 游戏和娱乐

  • 游戏内语音
  • 虚拟角色配音
  • 互动娱乐应用

项目生态系统

RealtimeTTS是一个更大生态系统的一部分:

  • RealtimeSTT: 配套的语音转文本库,两者结合可创建完整的实时音频处理系统
  • Linguflex: 原始项目,一个功能强大的开源AI助手
  • LocalAIVoiceChat: 基于Zephyr 7B模型的本地AI语音对话系统

许可证信息

项目本身是开源的,但需要注意各引擎的许可限制:

  • 开源引擎: SystemEngine、GTTSEngine(MIT许可证)
  • 商业限制引擎: CoquiEngine、ElevenlabsEngine、AzureEngine(非商业使用免费)
  • 付费服务: OpenAI需要API密钥和付费计划

系统要求

  • Python版本: >= 3.9, < 3.13
  • 操作系统: Windows、macOS、Linux
  • 依赖项: PyAudio、pyttsx3、pydub等
  • GPU支持: 推荐NVIDIA显卡用于本地神经引擎

总结

RealtimeTTS是一个功能强大、设计精良的实时文本转语音库,适合需要高质量、低延迟语音合成的现代应用。它的多引擎支持、健壮的错误处理机制和丰富的配置选项使其成为构建专业级语音应用的理想选择。无论是个人项目还是企业级应用,RealtimeTTS都能提供可靠和高效的解决方案。

Star History Chart