🐸 Coqui TTS 是一个用于高级文本转语音生成的库。
🚀 支持 1100 多种语言的预训练模型。
🛠️ 用于训练新模型和微调任意语言现有模型的工具。
📚 用于数据集分析和整理的实用程序。
[!NOTE] 从
coqui-tts0.27.4 版本开始,默认不再包含 PyTorch,您需要自行安装。
🐸TTS 已在 Ubuntu 24.04 上通过测试,要求 python >= 3.10
| 依赖项 | 说明 |
|---|---|
codec-cuda | 安装 torchcodec (CUDA),PyTorch>=2.9 时需要 |
如果您使用 Ubuntu (Debian),也可以运行以下命令进行安装:
make system-deps
make install
您也可以使用 Docker 镜像无需安装即可试用 Coqui TTS。只需运行以下命令,即可运行 TTS:
docker run --rm -it -p 5002:5002 --entrypoint /bin/bash ghcr.io/idiap/coqui-tts-cpu
python3 TTS/server/server.py --list_models # 获取可用模型列表
python3 TTS/server/server.py --model_name tts_models/en/vctk/vits # 启动服务器
然后您可以通过 此处 访问 TTS 服务器。更多详细信息,如 GPU 支持和 Docker Compose 配置,可参见 文档。
import torch
from TTS.api import TTS
# 获取设备
device = "cuda" if torch.cuda.is_available() else "cpu"
# 列出可用的 🐸TTS 模型
print(TTS().list_models())
# 初始化 TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)
# 列出说话人
print(tts.speakers)
# 运行 TTS
# ❗ XTTS 两者都支持,但许多模型只允许使用 `speaker` 和 `speaker_wav` 参数中的一个
# TTS 输出振幅值列表,从 `speaker_wav` 克隆语音
wav = tts.tts(
text="Hello world!",
speaker_wav="my/cloning/audio.wav",
language="en"
)
# TTS 输出到文件,使用预设说话人
tts.tts_to_file(
text="Hello world!",
speaker="Craig Gutsy",
language="en",
file_path="output.wav"
)
从 0.27.0 版本开始,您可以使用自定义 speaker ID 缓存克隆的语音,因此只需在 speaker_wav 中传递一次音频文件。
[!NOTE] 如需更多控制或额外输出(例如时间戳),请使用底层 Synthesizer API。
# 使用目标模型名称初始化 TTS
tts = TTS("tts_models/de/thorsten/tacotron2-DDC").to(device)
# 运行 TTS
tts.tts_to_file(text="Ich bin eine Testnachricht.", file_path=OUTPUT_PATH)
将 source_wav 中的语音转换为 target_wav 的语音:
tts = TTS("voice_conversion_models/multilingual/vctk/freevc24").to("cuda")
tts.voice_conversion_to_file(
source_wav="my/source.wav",
target_wav="my/target.wav",
file_path="output.wav"
)
其他可用的语音转换模型:
voice_conversion_models/multilingual/multi-dataset/knnvcvoice_conversion_models/multilingual/multi-dataset/openvoice_v1voice_conversion_models/multilingual/multi-dataset/openvoice_v2更多详情,请参见此 专门页面。
通过这种方式,您可以使用 🐸TTS 中的任何模型克隆语音。合成语音后使用 FreeVC 模型进行语音转换。
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"
)
对于 Fairseq 模型,请使用以下名称格式:tts_models/<语言ISO代码>/fairseq/vits。您可以在 此处 找到语言 ISO 代码,并在 https://github.com/***research/fairseq/tree/main/examples/mms 了解 Fairseq 模型。
# 使用 fairseq 模型进行 TTS
api = TTS("tts_models/deu/fairseq/vits")
api.tts_to_file(
"Wie sage ich auf Italienisch, dass ich dich liebe?",
file_path="output.wav"
)
注意: 某些 Fairseq 模型需要安装罗马化库 uroman。为此,您可以安装带有 languages 扩展的 coqui-tts。
tts在命令行合成语音。
您可以使用训练好的模型或从提供的列表中选择模型。
tts --list_models
--list_models 获得的名称。tts --model_info_by_name "<语言>/<数据集>/<模型>"
例如:
tts --model_info_by_name tts_models/tr/common-voice/glow-tts
tts --model_info_by_name vocoder_models/en/ljspeech/hifigan_v2
tts_models/en/ljspeech/tacotron2-DDC)运行 TTS:tts --text "Text for TTS" --out_path output/path/speech.wav
tts --text "Text for TTS" --pipe_out --out_path output/path/speech.wav | aplay
tts --text "Text for TTS" \
--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 --text "Text for TTS" \
--model_name "<语言>/<数据集>/<模型>" \
--vocoder_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 --text "Text for TTS" \
--model_path path/to/model.pth \
--config_path path/to/config.json \
--out_path output/path/speech.wav
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
<说话人ID>:tts --model_name "<语言>/<数据集>/<模型>" --list_speaker_idxs
tts --text "Text for TTS." --out_path output/path/speech.wav \
--model_name "<语言>/<数据集>/<模型>" --speaker_idx <说话人ID>
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 <说话人ID>
tts --out_path output/path/speech.wav --model_name "<语言>/<数据集>/<模型>" \
--source_wav <源音频路径> --target_wav <目标音频路径>
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务