开源的语音合成工具_ChatTTS_用法及资源

1 引言

5 月开源的 ChatTTS,最近文章十篇里有五篇以上都在讨论它。很多新的 TTS 模型也用它来做比较。感觉没用过 ChatTTS 都不敢评测其他的。

目前,ChatTTS 支持英文和中文。在 arxiv 上没找到相关论文,所以本文主要评测使用感受。

(下文仅代表个人观点)

2 主要资源

3 使用方法

3.1 安装

为了避免影响现有环境,我在 Docker 镜像中进行安装,选择了 PyTorch 官方提供的镜像。由于软件依赖于 PyTorch 2.1.0,版本要求较高,所以我下载了重新的 Docker 镜像。

PLAINTEXT

|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | $ git clone https://github.com/2noise/ChatTTS.git $ docker pull pytorch/pytorch:2.1.0-cuda11.8-cudnn8-runtime $ nvidia-docker run --name chattts --network host --rm -v /exports:/exports -it pytorch/pytorch:2.1.0-cuda11.8-cudnn8-runtime bash > apt-get update > apt-get install gcc > cd /exports/git/ChatTTS/ > pip install -r requirements.txt > python examples/web/webui.py |

在浏览器 8080 端口打开界面:http://ip:8080/

  • 制作完成的镜像大小为 9.77G。
  • 运行时下载约 860M 的 GPT 模型。
  • 在我的旧机器 (1080ti) 上,合成 60 个字需要 12 秒,速度约为 5 字/秒。
  • 使用 nvidia-smi 看资源占用,合成过程中 GPU 显存大约增加了 2G。
  • 虽然有时后台会出现错误信息,但前台仍能正常进行合成。

3.2 界面参数

  • refine_text:将文本转换成更口语化的形式。程序调用时,可以细化设置口语化程度、笑声频率和停顿次数。
  • top_P:控制模型在生成下一个词时考虑的词汇范围。如果设置为 0.7,模型将只考虑前 30% 的词汇。调大这个值有助于生成更多样化的文本。
  • top_K:限制生成词汇的数量,即模型在生成下一个词时只考虑概率最高的 K 个词汇。
  • Audio Temperature:控制生成文本时的随机性。设得过高,声音会严重变形。
  • Timbre:生成不同的 Seed 以选择音色。

3.3 运行过程

  • refine_text 转换文本
  • infer_code 生成语音编码
  • dvae/decoder 将语音编码转换成声学特征
  • vocos 将声学特征转换成音频

3.4 问题与解决

3.5 源码分析

  • 整体由 Python 实现,基于 Pytorch 模型,Python 代码约 3000 行左右。
  • 核心代码主要是:模型部分 gpt.py 和推理部分 core.py
  • 我没有找到 train 和 fine-tune 部分的代码。
  • 更多原理解析请见参考部分。

3.6 使用示例

整个使用过程中,我个人觉得比较惊喜的是它对文本的理解能力、情感感受能力以及生成文本的自然度,示例如下:

  • 输入:笑不活了!美团这些神评价也太搞笑了,我要笑死在评论区!
  • refine 处理后文本:笑 不 活 了 。 然 后 [uv_break] 美 团 这 些 神 [uv_break] 评 价 也 太 [uv_break] 搞 笑 了 , 我 要 笑 死 在 评 论 区 [laugh] 。
  • 听起来最后一句都带着笑意,真的很传神。我个人认为这方面明显优于 GPT_SoVits。

4 用后感

4.1 优势

  • 将语义融入了声音生成
  • 提供多种声音选择,每种 seed 相对稳定,不需要 fine-tune,对非专业用户非常友好
  • 模型大小和生成速度都在可接受范围内
  • 界面和接口简单易用,学习成本低
  • 工具链设计完善,几乎是一键安装,不需要手动下载模型
  • README 内容恰到好处,满足多数用户的好奇心或直接使用需求

4.2 不足

  • 音色随机,虽然可以复用 seed,但需要逐个试验。不同 Seed 的声音效果参差不齐,可控性差。
  • 整体人声表现一般,多是普通话的平均水平,试了几个都不惊艳。
  • 初始版本不能生成超过 30 秒的音频。
  • 不能定制声音(后来的阿里模型在这方面更好一些)。

4.3 总结

  • ChatTTS 在情绪的可控性显著提升,但对说话人的控制相对较弱。

5 官方说明

官方说明引自 GitHub 项目的 README。为了确保知识的完整性,来看看官方是怎么说的。

5.1 亮点

  1. 对话式 TTS: ChatTTS 专为对话任务优化,能够生成自然且富有表现力的合成语音。它支持多个说话者,便于生成互动式对话。
  2. 精细控制: 该模型可以预测和控制精细的韵律特征,包括笑声、停顿和插入语。
  3. 更好的韵律: ChatTTS 在韵律方面超越了大多数开源 TTS 模型。我们提供预训练模型以支持进一步的研究和开发。

5.2 数据集和模型

  • 主模型使用了超过 100k 小时的中文和英文音频数据进行训练。
  • HuggingFace 上的开源版本是在 40k 小时数据上进行无监督微调的预训练模型。

6 参考

介绍文档比较同质化,下面列几个我认为比较实用的:

相关推荐
MTB201210 天前
基于 Web Speech API 实现网页上的语音合成和语音识别功能
语音识别·语音合成·web speech api
shichaog2 个月前
大模型之三十二-语音合成TTS(coqui) 之二 fine-tune
人工智能·语音合成
芭拉拉小魔仙3 个月前
实现语音合成的三种方法:HTML5 Web Speech 、speak-tts、百度语音合成
前端·百度·语音识别·html5·语音合成·speech
王者鳜錸3 个月前
SPIRNGBOOT+VUE实现浏览器播放音频流并合成音频
人工智能·音视频·语音合成
代码讲故事4 个月前
AI文本转语音:Toucan TTS 支持 7000 多种语言的语音合成工具箱,突破性 OCR 技术:支持多种语言识别,媲美顶级云服务
人工智能·ocr·语音识别·语音合成·tts·文本转语音·语种
AI码上来4 个月前
CosyVoice 实测,阿里开源语音合成模型,3s极速语音克隆,5分钟带你部署实战
语音合成·语音克隆
学术菜鸟小晨5 个月前
语音合成-TTS文字转语音(专业版)
工具·语音合成·tts
xieyan08115 个月前
阿里开源的音频模型_原理与实操
论文阅读·人工智能·语音合成
我的运维人生6 个月前
AudioLM音频生成模型:技术革新与应用前景
深度学习·自然语言处理·语音合成·audiolm·音频生成