RealtimeTTS 是一個先進的即時文本轉語音(TTS)Python庫,專為需要低延遲、高品質音訊輸出的即時應用而設計。該庫能夠快速將文本流轉換為高品質的音訊輸出,延遲極低,是構建語音助手、AI對話系統和可訪問性工具的理想選擇。
項目地址: https://github.com/KoljaB/RealtimeTTS
RealtimeTTS支持多種TTS引擎,提供豐富的選擇:
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 TTScoqui
: Coqui TTS引擎minimal
: 僅核心包(用於自定義引擎開發)play_async()
方法支持非阻塞播放play()
方法用於阻塞式播放提供豐富的回調函數用於監控和控制:
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() # 停止
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 # 音訊塊就緒回調
)
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
)
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語音名稱
)
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 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
RealtimeTTS是一個更大生態系統的一部分:
項目本身是開源的,但需要注意各引擎的許可限制:
RealtimeTTS是一個功能強大、設計精良的即時文本轉語音庫,適合需要高品質、低延遲語音合成的現代應用。它的多引擎支持、健壯的錯誤處理機制和豐富的配置選項使其成為構建專業級語音應用的理想選擇。無論是個人項目還是企業級應用,RealtimeTTS都能提供可靠和高效的解決方案。