1. Coqui TTS介绍


Coqui TTS 是一款开源的深度学习文本转语音工具包,在语音合成领域具有广泛的应用和较高的知名度。它源于 Mozilla TTS 项目,经过不断的迭代优化,现已成为一个独立且成熟的 AI 语音合成框架。Coqui TTS 提供了超过 1100 种语言的预训练模型库,支持多种先进的文本转语音模型,能生成高度自然的语音。

Coqui TTS 的核心功能强大且丰富:

  • 高质量语音合成:可生成自然流畅的语音,有效减少电子合成音的生硬感,十分接近真人语音效果。
  • 多语言支持:支持包括中文、英文、日语、法语、西班牙语等在内的多种语言,能满足不同语言环境下的语音合成需求。
  • 语音克隆与个性化声音定制:通过 YourTTS 模型,用户仅需少量音频样本,如 3 秒的音频样本,即可克隆自己的声音,生成个性化 TTS 模型。
  • 低延迟推理:提供轻量级与高质量模型选择,在保证音质的同时,能够实现低延迟推理,适用于直播、智能语音助手等对实时性要求较高的应用场景。

一句话概括,Coqui TTS 是一款强大的开源文本转语音工具,提供了高质量的语音合成能力。

使用 Docker 部署 Coqui TTS 可以简化安装过程,确保环境一致性。

2. 前提条件


在开始之前,请确保系统已满足以下要求:

  • 已安装 Docker 引擎(建议版本 20.10 或更高)
  • 至少 2GB 可用内存(运行大型模型可能需要更多)
  • 网络连接(很重要,用于拉取 Docker 镜像)

检查 Docker 是否正常运行:

docker --version

3. 下载安装Coqui TTS


Coqui 官方提供了预构建的 Docker 镜像,可直接拉取

# 拉取 CPU 版本(适合没有 NVIDIA 显卡的系统)
docker pull ghcr.io/coqui-ai/tts-cpu

# 拉取 GPU 版本(需要 NVIDIA 显卡和 nvidia-docker 支持)
docker pull ghcr.io/coqui-ai/tts

镜像下载还挺大的,有10.2G,下载时长取决于网速

在这里插入图片描述

4. 启动 Coqui TTS 容器


可通过如下命令来启动docker

# 对于 CPU 版本
docker run -it -p 5002:5002 --entrypoint /bin/bash ghcr.io/coqui-ai/tts-cpu

# 对于 GPU 版本
docker run -it -p 5002:5002 --entrypoint /bin/bash ghcr.io/coqui-ai/tts

参数说明:

  • -it:创建交互式终端
  • -p 5002:5002:将容器的 5002 端口映射到主机的 5002 端口
  • ghcr.io/coqui-ai/tts-cpu:指定容器镜像名称
  • --entrypoint /bin/bash:进入容器的 bash 终端

如果出现以下错误,则说明服务器没有开启ipv4的转发功能,一定要解决,否则没办法访问

WARNING: IPv4 forwarding is disabled. Networking will not work.

此时编辑系统文件

vi /etc/sysctl.conf

修改如下字段

net.ipv4.ip_forward = 1

使配置生效

sysctl -p /etc/sysctl.con

再次输入命令即可启动容器

5. 启动 Coqui TTS 服务


在容器内部,可查看支持的模型

tts --list_models

图中第34行就是中文模型tts_models/zh-CN/baker/tacotron2-DDC-GST,但此时并没有下载

在这里插入图片描述

在容器内部,启动 TTS 服务器

python3 TTS/server/server.py --model_name tts_models/zh-CN/baker/tacotron2-DDC-GST

我试了好几次,完全不可能成功,一般都是连接超时

在这里插入图片描述
既然有办法下载模型,那肯定也有办法导入模型

前往发行版本内寻找已经公布的模型,https://github.com/coqui-ai/TTS/releases,随便找一个版本的模型即可

在这里插入图片描述

找到中文模型并且下载

在这里插入图片描述

下载好的模型解压缩,将其复制到容器的/root/.local/share/tts/目录下

docker cp /root/tts_models--zh-CN--baker--tacotron2-DDC-GST eeb383168656:/root/.local/share/tts/

此时再次利用命令tts --list_models查看模型,会显示已经下载

在这里插入图片描述

再次启动 TTS 服务器

python3 TTS/server/server.py --model_name tts_models/zh-CN/baker/tacotron2-DDC-GST

如果能看到如下界面,表示服务启动成功

在这里插入图片描述

6. 测试 Coqui TTS 服务


6.1 前端访问


可访问前端测试,输入: http://192.168.78.145:5002/,其中192.168.78.145替换为服务器ip

在这里插入图片描述

6.2 restful 接口访问


也可以发送get请求, url请求地址:http://192.168.78.145:5002/api/tts,其中192.168.78.145替换为服务器ip

参数

字段含义示例
style_wav音频分割风格默认{"0": 0.1}即可
text需要朗读的文本内容测试朗读文本内容

完整的示例如下,但是记得朗读的句子结尾加上句号,否则文本内容会有点奇怪

http://192.168.78.145:5002/api/tts?style_wav={"0": 0.1}&text=要生成语音的文本,结尾一定要有标点符号,不然音频会抽风。

将返回音频wav文件

在这里插入图片描述

7. Coqui TTS 存在的小问题


  • 中文模型只有一个女声,没办法选择
  • 中文模型没办法中英文混度,貌似是转译的问题
  • 处理长文本会有中断现象发生
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐