开源的语音合成工具_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 参考

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

相关推荐
ZHW_AI课题组7 天前
调用通义千问实现语音合成并将合成的音频通过扬声器播放
python·音视频·语音合成·通义千问·tts
天命小猪1 个月前
FishSpeech应用篇——专属朗读人
语音合成·tts
shichaog3 个月前
第四章 神经网络声码器
人工智能·深度学习·神经网络·语音合成·声码器
Luke Ewin3 个月前
解决安装pynini和WeTextProcessing报错问题
python·大模型·llm·语音识别·语音合成·tts·asr
MTB20124 个月前
基于 Web Speech API 实现网页上的语音合成和语音识别功能
语音识别·语音合成·web speech api
shichaog6 个月前
大模型之三十二-语音合成TTS(coqui) 之二 fine-tune
人工智能·语音合成
芭拉拉小魔仙6 个月前
实现语音合成的三种方法:HTML5 Web Speech 、speak-tts、百度语音合成
前端·百度·语音识别·html5·语音合成·speech
王者鳜錸7 个月前
SPIRNGBOOT+VUE实现浏览器播放音频流并合成音频
人工智能·音视频·语音合成
代码讲故事7 个月前
AI文本转语音:Toucan TTS 支持 7000 多种语言的语音合成工具箱,突破性 OCR 技术:支持多种语言识别,媲美顶级云服务
人工智能·ocr·语音识别·语音合成·tts·文本转语音·语种
AI码上来8 个月前
CosyVoice 实测,阿里开源语音合成模型,3s极速语音克隆,5分钟带你部署实战
语音合成·语音克隆