Home
Login

一個先進的即時文字轉語音Python庫,支援多種TTS引擎,具有低延遲、高品質的音訊輸出能力

MITPython 3.2kKoljaBRealtimeTTS Last Updated: 2025-06-17

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