coqui-ai/TTS – 用于虚拟数字人的企业级语音机器人
https://github.com/coqui-ai/TTS
现在几乎一半的短视频配音是通过人工智能来配音的。开发一个配音软件,赚钱钱吧!
Coqui AI的TTS是一个先进的深度学习文本到语音(TTS)工具包,旨在通过提供高性能的深度学习模型,为文本到语音任务提供革命性的解决方案。
它建立在最新的研究成果之上,力求在易于训练、速度和质量之间实现最佳平衡。该项目已经在GitHub上开源,并获得了超过20.5K的star量,显示出其在开发者社区中的广泛受欢迎和认可。
Coqui TTS具有以下几个显著特点:
1. 高性能深度学习模型:Coqui TTS提供了包括Tacotron、Tacotron2、Glow-TTS、SpeedySpeech等多种文本到语音规范模型,以及MelGAN、Multiband-MelGAN、GAN-TTS、ParallelWaveGAN、WaveGrad、WaveRNN等多种声码器模型。这些模型的高效性和多功能性使得Coqui TTS能够处理复杂的文本到语音转换任务,同时保持高质量的语音输出。
2. 多语言支持:Coqui TTS支持多种语言的文本到语音转换,这使得它成为国际化应用的理想选择。特别适用于全球化的市场,其中需要生成多种语言的语音内容。
3. 高效的模型训练:Coqui TTS提供了详细的训练日志和支持,在终端和Tensorboard上查看训练进度,使得模型训练过程透明且高效。
4. 功能完备的训练API:Coqui TTS的训练API设计灵活,便于实现新的想法和模型。这一特点使得Coqui TTS不仅适用于当前的文本到语音任务,还可以轻松适应未来的技术发展和需求变化。
5. 预训练模型:Coqui TTS提供了多种语言的预训练模型,极大地简化了多语言文本到语音转换的过程。这一丰富的预训练模型库为开发者提供了便利。
总的来说,Coqui AI的TTS是一个功能强大、性能优越的开源深度学习TTS工具包,适用于多种文本到语音任务,尤其在多语言支持和高效模型训练方面表现出色。
安装
🐸TTS 在 Ubuntu 18.04 上测试,Python >= 3.9, < 3.12。。
如果您只对使用已发布的 🐸TTS 模型合成语音感兴趣,从 PyPI 安装是最简单的选择。
pip install TTS
如果您计划编码或训练模型,请克隆 🐸TTS 并在本地安装。
git clone https://github.com/coqui-ai/TTS
pip install -e .[all,dev,notebooks] # Select the relevant extras
如果您使用的是 Ubuntu (Debian),您还可以运行以下命令进行安装。
$ make system-deps # intended to be used on Ubuntu (Debian). Let us know if you have a different OS.
$ make install
如果您使用的是 Windows,👑@GuyPaddock在此编写了安装说明。
Docker 镜像
您还可以尝试 TTS,无需安装 docker 镜像。只需运行以下命令,您无需安装即可运行 TTS。
docker run --rm -it -p 5002:5002 --entrypoint /bin/bash ghcr.io/coqui-ai/tts-cpu
python3 TTS/server/server.py --list_models #To get the list of available models
python3 TTS/server/server.py --model_name tts_models/en/vctk/vits # To start a server
然后,您可以在此处享受 TTS 服务器有关 docker 映像(例如 GPU 支持)的更多详细信息可以在此处 找到
通过 🐸TTS 合成语音
🐍Python API
运行多说话人和多语言模型
import torch
from TTS.api import TTS
# Get device
device = "cuda" if torch.cuda.is_available() else "cpu"
# List available 🐸TTS models
print(TTS().list_models())
# Init TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)
# Run TTS
# ❗ Since this model is multi-lingual voice cloning model, we must set the target speaker_wav and language
# Text to speech list of amplitude values as output
wav = tts.tts(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en")
# Text to speech to a file
tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")
运行单扬声器模型
# Init TTS with the target model name
tts = TTS(model_name="tts_models/de/thorsten/tacotron2-DDC", progress_bar=False).to(device)
# Run TTS
tts.tts_to_file(text="Ich bin eine Testnachricht.", file_path=OUTPUT_PATH)
# Example voice cloning with YourTTS in English, French and Portuguese
tts = TTS(model_name="tts_models/multilingual/multi-dataset/your_tts", progress_bar=False).to(device)
tts.tts_to_file("This is voice cloning.", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")
tts.tts_to_file("C'est le clonage de la voix.", speaker_wav="my/cloning/audio.wav", language="fr-fr", file_path="output.wav")
tts.tts_to_file("Isso é clonagem de voz.", speaker_wav="my/cloning/audio.wav", language="pt-br", file_path="output.wav")
语音转换示例
将语音转换source_wav
为语音target_wav
tts = TTS(model_name="voice_conversion_models/multilingual/vctk/freevc24", progress_bar=False).to("cuda")
tts.voice_conversion_to_file(source_wav="my/source.wav", target_wav="my/target.wav", file_path="output.wav")
语音克隆与语音转换模型的示例。
这样,您就可以使用 🐸TTS 中的任何模型来克隆声音。
tts = TTS("tts_models/de/thorsten/tacotron2-DDC")
tts.tts_with_vc_to_file(
"Wie sage ich auf Italienisch, dass ich dich liebe?",
speaker_wav="target/speaker.wav",
file_path="output.wav"
)
使用🐸Coqui Studio声音的示例。
您可以在🐸Coqui Studio中访问所有克隆的声音和内置扬声器。为此,您需要一个 API 令牌,您可以从帐户页面获取该令牌。获取 API 令牌后,您需要配置 COQUI_STUDIO_TOKEN 环境变量。
一旦您拥有有效的 API 令牌,录音室扬声器将在列表中显示为不同的型号。这些模型将遵循命名约定coqui_studio/en/<studio_speaker_name>/coqui_studio
# XTTS model
models = TTS(cs_api_model="XTTS").list_models()
# Init TTS with the target studio speaker
tts = TTS(model_name="coqui_studio/en/Torcull Diarmuid/coqui_studio", progress_bar=False)
# Run TTS
tts.tts_to_file(text="This is a test.", language="en", file_path=OUTPUT_PATH)
# V1 model
models = TTS(cs_api_model="V1").list_models()
# Run TTS with emotion and speed control
# Emotion control only works with V1 model
tts.tts_to_file(text="This is a test.", file_path=OUTPUT_PATH, emotion="Happy", speed=1.5)
使用Fairseq 模型的约 1100 种语言的文本转语音示例。
对于 Fairseq 模型,请使用以下名称格式:tts_models/<lang-iso_code>/fairseq/vits
. 您可以在此处找到语言 ISO 代码,并在此处 了解 Fairseq 模型。
# TTS with on the fly voice conversion
api = TTS("tts_models/deu/fairseq/vits")
api.tts_with_vc_to_file(
"Wie sage ich auf Italienisch, dass ich dich liebe?",
speaker_wav="target/speaker.wav",
file_path="output.wav"
)
命令行tts
在命令行上合成语音。
您可以使用经过训练的模型或从提供的列表中选择模型。
如果不指定任何模型,则使用基于 LJSpeech 的英语模型。
单扬声器型号
-
列出提供的型号:
$ tts --list_models
-
获取模型信息(tts_models 和 vocoder_models):
-
按类型/名称查询: model_info_by_name 使用 –list_models 中的名称。
$ tts --model_info_by_name "<model_type>/<language>/<dataset>/<model_name>"
例如:
$ tts --model_info_by_name tts_models/tr/common-voice/glow-tts
$ tts --model_info_by_name vocoder_models/en/ljspeech/hifigan_v2 -
按类型/idx 查询:model_query_idx 使用–list_models 中相应的idx。
$ tts --model_info_by_idx "<model_type>/<model_query_idx>"
例如:
$ tts --model_info_by_idx tts_models/3
-
按全名查询型号信息:
$ tts --model_info_by_name "<model_type>/<language>/<dataset>/<model_name>"
-
使用默认模型运行 TTS:
$ tts --text "Text for TTS" --out_path output/path/speech.wav
-
运行 TTS 并输出生成的 TTS wav 文件数据:
$ tts --text "Text for TTS" --pipe_out --out_path output/path/speech.wav | aplay
-
运行 TTS 并定义用于 🐸Coqui Studio 模型的速度因子,介于 0.0 和 2.0 之间:
$ tts --text "Text for TTS" --model_name "coqui_studio/<language>/<dataset>/<model_name>" --speed 1.2 --out_path output/path/speech.wav
-
使用默认声码器模型运行 TTS 模型:
$ tts --text "Text for TTS" --model_name "<model_type>/<language>/<dataset>/<model_name>" --out_path output/path/speech.wav
例如:
$ tts --text "Text for TTS" --model_name "tts_models/en/ljspeech/glow-tts" --out_path output/path/speech.wav
-
使用列表中的特定 TTS 和声码器模型运行:
$ tts --text "Text for TTS" --model_name "<model_type>/<language>/<dataset>/<model_name>" --vocoder_name "<model_type>/<language>/<dataset>/<model_name>" --out_path output/path/speech.wav
例如:
$ tts --text "Text for TTS" --model_name "tts_models/en/ljspeech/glow-tts" --vocoder_name "vocoder_models/en/ljspeech/univnet" --out_path output/path/speech.wav
-
运行您自己的 TTS 模型(使用 Griffin-Lim Vocoder):
$ tts --text "Text for TTS" --model_path path/to/model.pth --config_path path/to/config.json --out_path output/path/speech.wav
-
运行您自己的 TTS 和声码器模型:
$ tts --text "Text for TTS" --model_path path/to/model.pth --config_path path/to/config.json --out_path output/path/speech.wav
--vocoder_path path/to/vocoder.pth --vocoder_config_path path/to/vocoder_config.json
多扬声器型号
-
列出可用的发言人并在其中选择一个 <speaker_id>:
$ tts --model_name "<language>/<dataset>/<model_name>" --list_speaker_idxs
-
使用目标说话人 ID 运行多说话人 TTS 模型:
$ tts --text "Text for TTS." --out_path output/path/speech.wav --model_name "<language>/<dataset>/<model_name>" --speaker_idx <speaker_id>
-
运行您自己的多扬声器 TTS 模型:
$ tts --text "Text for TTS" --out_path output/path/speech.wav --model_path path/to/model.pth --config_path path/to/config.json --speakers_file_path path/to/speaker.json --speaker_idx <speaker_id>
语音转换模型
$ tts --out_path output/path/speech.wav --model_name "<language>/<dataset>/<model_name>" --source_wav <path/to/speaker/wav> --target_wav <path/to/reference/wav>
目录结构
|- notebooks/ (Jupyter Notebooks for model evaluation, parameter selection and data analysis.)
|- utils/ (common utilities.)
|- TTS
|- bin/ (folder for all the executables.)
|- train*.py (train your target model.)
|- ...
|- tts/ (text to speech models)
|- layers/ (model layer definitions)
|- models/ (model definitions)
|- utils/ (model specific utilities.)
|- speaker_encoder/ (Speaker Encoder models.)
|- (same)
|- vocoder/ (Vocoder models.)
|- (same)
coqui-ai/TTS – 用于虚拟数字人的企业级语音机器人
https://github.com/coqui-ai/TTS
现在几乎一半的短视频配音是通过人工智能来配音的。 开发一个配音软件,赚钱钱吧!
原文始发于微信公众号(GitHubTopp):基于虚拟数字人的企业级语音机器人
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/201659.html