Tortoise 是一个文本转语音程序,其构建重点如下:
此存储库包含在推理模式下运行 Tortoise TTS 所需的所有代码。
手稿:https://arxiv.org/abs/2305.07243
Hugging Face Spaces 上举办了现场演示。如果您想避免排队,请复制空间并添加 GPU。请注意,仅 CPU 空间不适用于此演示。
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
如果您想安装最新的开发版本,也可以直接从 git 存储库安装:
pip install git+https://github.com/neonbjb/tortoise-tts
我以莫哈韦沙漠动植物群命名我的与语音相关的存储库。乌龟有点开玩笑:这个模型慢得要命。它利用自回归解码器和扩散解码器;两者都以其低采样率而闻名。在 K80 上,预计每 2 分钟生成一个中等长度的句子。
好吧......不再那么慢了,现在我们可以在 4GB vram 上获得0.25-0.3 RTF ,并且通过流式传输,我们可以获得 < 500 毫秒的延迟!
请参阅此页面以获取大量示例输出列表。
Tortoise + GPT-3 的一个很酷的应用程序(不隶属于此存储库):https://twitter.com/lexman_ai。不幸的是,这个项目似乎不再活跃了。
如果你想在自己的计算机上使用它,你必须有 NVIDIA GPU。
提示
在 Windows 上,我强烈建议使用 Conda 安装方法。有人告诉我,如果您不这样做,您将花费大量时间来解决依赖性问题。
首先,安装miniconda:https://docs.conda.io/en/latest/miniconda.html
然后运行以下命令,使用 anaconda 提示符作为终端(或配置为使用 conda 的任何其他终端)
这将:
conda create --name tortoise python=3.9 numba inflect
conda activate tortoise
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
conda install transformers=4.29.2
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install
或者,可以将 pytorch 安装在基础环境中,以便其他 conda 环境也可以使用它。为此,只需在激活 tortoise 环境之前发送conda install pytorch...
行即可。
笔记
当你想使用 tortoise-tts 时,你必须确保tortoise
conda 环境已激活。
如果您使用的是 Windows,您可能还需要安装 pysoundfile: conda install -c conda-forge pysoundfile
这是一种快速上手的简单方法,也是一个良好的起点,具体取决于您的用例。
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
docker build . -t tts
docker run --gpus all
-e TORTOISE_MODELS_DIR=/models
-v /mnt/user/data/tortoise_tts/models:/models
-v /mnt/user/data/tortoise_tts/results:/results
-v /mnt/user/data/.cache/huggingface:/root/.cache/huggingface
-v /root:/work
-it tts
这为您提供了一个可以在环境中执行一些 tts 的交互式终端。现在您可以探索 tortoise 为 tts 公开的不同接口。
例如:
cd app
conda activate tortoise
time python tortoise/do_tts.py
--output_path /results
--preset ultra_fast
--voice geralt
--text " Time flies like an arrow; fruit flies like a bananna. "
在配备 M1/M2 芯片的 macOS 13+ 上,您需要安装 PyTorch 的 nightly 版本,如官方页面所述,您可以执行以下操作:
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
请务必在激活环境后执行此操作。如果您不使用 conda,命令将如下所示:
python3.10 -m venv .venv
source .venv/bin/activate
pip install numba inflect psutil
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
pip install transformers
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
pip install .
请注意,Apple Silicon 上的 DeepSpeed 已被禁用,因为它不起作用。标志--use_deepspeed
被忽略。您可能需要在下面的命令前面添加PYTORCH_ENABLE_MPS_FALLBACK=1
才能使其正常工作,因为 MPS 不支持 Pytorch 中的所有操作。
该脚本允许您用一个或多个声音说出单个短语。
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast
python tortoise/socket_server.py
将在端口 5000 监听
该脚本提供了用于阅读大量文本的工具。
python tortoise/read_fast.py --textfile < your text to be read > --voice random
该脚本提供了用于阅读大量文本的工具。
python tortoise/read.py --textfile < your text to be read > --voice random
这会将文本文件分解成句子,然后一次一个地将它们转换为语音。它将在生成时输出一系列语音剪辑。生成所有剪辑后,它会将它们组合成一个文件并输出。
有时乌龟会搞砸输出。您可以通过使用 --regenerate 参数重新运行read.py
来重新生成任何错误的剪辑。
Tortoise 可以通过编程方式使用,如下所示:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ()
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
要使用 Deepspeed:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
使用 kv 缓存:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( kv_cache = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
要在 float16 中运行模型:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
为了更快的运行,请使用所有三个:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True , kv_cache = True , half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
这个项目获得的赞誉超出了我的预期。不过,我站在巨人的肩膀上,我想感谢社区中一些令人惊叹的人,他们帮助实现了这一目标:
Tortoise 完全由作者(James Betker)使用他们自己的硬件构建。他们的雇主没有参与 Tortoise 开发的任何方面。
Tortoise TTS 根据 Apache 2.0 许可证获得许可。
如果您使用此存储库或其中的想法进行研究,请引用它! bibtex 主菜可以在 GitHub 的右侧窗格中找到。