实时低延迟高质量文本转语音库
RealtimeTTS是一款低延迟、高质量的实时文本转语音库。支持OpenAI、Elevenlabs、Azure、Coqui、gTTS和系统TTS引擎,兼容多语言,适用于专业和关键场景。新增灵活定制安装选项,用户可以选择所需功能模块。通过回退机制确保持续运行,完美兼容大语言模型,实现即时文本流转换和清晰自然的语音输出。
易于使用,低延迟的实时应用文本转语音库
RealtimeTTS 是一款为实时应用设计的最先进的文本转语音 (TTS) 库。它以其快速将文本流转换为高质量音频输出且具有最小延迟而著称。
重要: ❗️ 安装 已更改以允许更多自定义。请使用
pip install realtimetts[all]
而不是pip install realtimetts
。更多 信息在这里。
提示: <strong>查看 Linguflex</strong>,这是 RealtimeTTS 派生的原始项目。它让您通过讲话控制环境,是目前最强大和复杂的开源助理之一。
注意: 如果您遇到“General synthesis error: isin() received an invalid combination of arguments”错误,这是由于新的 transformers 库引入了与 Coqui TTS 的不兼容性(见 此处)。此问题在最新版本中不应出现,但如果出现,请降级到旧版 transformers 版本:
pip install transformers==4.38.2
。
https://github.com/KoljaB/RealtimeTTS/assets/7604638/87dcd9a5-3a4e-4f57-be45-837fc63237e7
提示: 查看 RealtimeSTT,该库的输入对应部分,具有语音转文本功能。它们共同构成了一个强大的实时音频封装大语言模型。
查看 FAQ 页面 以获取有关使用 RealtimeTTS 的许多问题的答案。
最新版本:v0.4.5
查看 发布历史。
此库使用了:
文本转语音引擎
句子边界检测
通过使用“行业标准”组件,RealtimeTTS 提供了可靠的高端技术基础,以开发先进的语音解决方案。
注意: 不再推荐使用
pip install realtimetts
的基本安装,请使 用pip install realtimetts[all]
。
RealtimeTTS 库提供了根据您的使用案例安装各种依赖项的选项。以下是根据需求安装 RealtimeTTS 的不同方式:
要安装支持所有 TTS 引擎的 RealtimeTTS:
pip install -U realtimetts[all]
RealtimeTTS 允许通过最小库安装进行自定义安装。以下是可用的选项:
例如,如果您只想为本地神经 Coqui TTS 使用安装 RealtimeTTS,则应使用:
pip install realtimetts[coqui]
例如,如果您只想安装支持 Azure 认知服务语音、ElevenLabs 和 OpenAI 的 RealtimeTTS:
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
使用系统的内置 TTS 功能开箱即用。无需额外设置。
GTTSEngine
使用 Google 翻译的文本转语音 API 开箱即用。无需额外设置。
要使用 OpenAIEngine
:
要使用 AzureEngine
,您将需要:
确保在初始化 AzureEngine
时已正确配置这些凭据。
对于 ElevenlabsEngine
,您需要:
Elevenlabs API 密钥(通过 ElevenlabsEngine 构造器参数 "api_key" 提供,或在环境变量 ELEVENLABS_API_KEY 中)
系统中安装了 mpv
(用于流式传输 mpeg 音频,Elevenlabs 仅提供 mpeg)。
🔹 安装 mpv
:
macOS:
brew install mpv
Linux 和 Windows:请访问 mpv.io 获取安装说明。
提供高质量的本地神经 TTS 和语音克隆。
首先下载神经 TTS 模型。在大多数情况下,使用 GPU 合成可以快到足以实现实时需要大约 4-5 GB 的 VRAM。
在大多数系统上需要 GPU 支持运行以足够快的速度实现实时,否则您会遇到音频卡顿。
这是一个基本的应用示例:
from RealtimeTTS import TextToAudioStream, SystemEngine, AzureEngine, ElevenlabsEngine engine = SystemEngine() # 用您的 TTS 引擎替换 stream = TextToAudioStream(engine) stream.feed("Hello world! How are you today?") stream.play_async()
您可以输入独立字符串:
stream.feed("Hello, this is a sentence.")
或者您可以输入生成器和字符迭代器以进行实时流:
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()
测试子目录包含一组脚本,帮助您评估和理解 RealtimeTTS 库的功能。
请注意,大多数测试仍依赖于 旧版 OpenAI API (<1.0.0)。在 openai_1.0_test.py 中展示了如何使用新版 OpenAI API。
simple_test.py
complex_test.py
coqui_test.py
translator.py
pip install openai realtimestt
。openai_voice_interface.py
pip install openai realtimestt
。advanced_talk.py
pip install openai keyboard realtimestt
。minimalistic_talkbot.py
pip install openai realtimestt
。simple_llm_test.py
pip install openai
。test_callbacks.py
pip install openai
。暂停音频流 :
stream.pause()
恢复已暂停的流:
stream.resume()
立即停止流:
stream.stop()
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)BaseEngine
或其子类的实例以启用音频合成。on_text_stream_start
(callable)on_text_stream_stop
(callable)on_audio_stream_start
(callable)on_audio_stream_stop
(callable)on_character
(callable)output_device_index
(int)tokenizer
(字符串)language
(string)muted
(bool)level
(int)logging.WARNING
logging
模块中的任何整数常量。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