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

1 引言

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

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

(下文仅代表个人观点)

2 主要资源

  • Github:  https://github.com/2noise/ChatTTS,目前 27.4K Star
  • HuggingFace: https://huggingface.co/2Noise/ChatTTS

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 问题与解决

  • 太旧的 gpu 不能直接用,github issue 中有对应的报错及解决方法,请参见:
    • https://github.com/2noise/ChatTTS/issues/235

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 参考

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

  • ChatTTS使用技巧:如何精细化控制语气、音色、语速 附一键整合包!
  • 相关资源总汇
  • 不同Seed声音列表
  • 揭秘最像真人的TTS:从方法看ChatTTS如何工作
  • 试用地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web服务器1

( 1 )仅提供用户浏览的单向静态网页 单纯是由服务器单向提供数据给客户端, Server 不需要与 client 端有互动,所以你可以到该网站上去浏 览,但是无法进行数据的上传。 ( 2 )提供用户互动接口的…

深入理解Linux网络(三):TCP对象创建

深入理解Linux网络(三):TCP对象创建 TCP对象创建inet_createsock_init_data TCP对象创建 常见的三句TCP编程: int main() {int sk socket(AF_INET, SOCK_STREAM, 0);connect(sk, ...)recv(sk, ...) }简单的两三⾏代码&#xff…

十年前的老电脑能装win10吗_十年前的老电脑用U盘安装win10教程

十年前的老电脑能装win10吗?十年前的老电脑只要满足win10最低要求的配置都可以安装win10。安装win10方法很多,有一键重装方法、U盘安装、硬盘安装等方式,但最靠谱的方式还是U盘安装。十年前的老电脑用U盘安装win10首先要将u盘制作成u盘启动盘…

react自定义校验报错问题修复 ProFormText

1、以下是tsx组件 自定义校验告警导致表单无法提交问题修复 修改如下:

体态识别开发记录

1.多标签输出分类算法 https://aiuai.cn/aifarm1372.html 2.体态识别算法 体态对比 体态判断 2.1 3D建模的方案 stable diffusion 插件地址: ControlNet https://github.com/Mikubill/sd-webui-controlnet 3D Openpose https://github.com/nonnonstop/sd…

VsCode SSH远程连接服务器【内网穿透公网连接】

文章目录 1.前言2.VS code的安装和设置2.1 VS code的下载安装2.2 OpenSSH的启用2.3 为VS code配置ssh2.4 局域网内测试VS code的ssh连接2.5 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 记得笔者小时候看电视&#xff…

速盾:cdn除了网站还有哪些应用?

CDN(内容分发网络)是一种通过将内容分布到离用户更近的服务器上,以提供更快速、可靠的内容传输的技术。虽然CDN最初被广泛用于网站和静态内容的传输,但随着技术的进步,它已经应用于更广泛的领域。下面是一些CDN除了网站…

仿源码大师主界面UI的iAPP源文件

仿源码大师首页主界面的布局 首页,分类,需求,我的 就只有这几个界面内容而已 资源静态 没有任何动画和功能 纯UI布局 纯UI布局 他的最新版已经不是这个UI布局 放心使用 以学习参考为目的,如有不妥望告知 原创,纯…

vue-virtual-scroll-list 虚拟滚动,解决数组大量卡顿问题

vue-virtual-scroll-list - npm npm install vue-virtual-scroll-list --save 参数: :data-key"某一行唯一标识符" :data-sources"列表数据" :data-component"单行数据需要展示的内容" :keeps"虚拟列表在在页面展示的数量&quo…

【Java数据结构】线性表之栈和队列

栈(Stack) 简单描述 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out&…

初识网络基础知识

关于网络的一些核心概念 局域网 局域网(Local Area Network,简称LAN)是一种计算机网络,覆盖的范围通常是相对较小的地理区域,比如一个办公室、一栋大楼或一个校园。 局域网的组成通常包括以下部分: 网络…

数据结构-C语言-排序(3)

代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排序分…

录取查询老师在哪里制作?

随着考试的落幕,家长们焦急等待的心情终于可以稍微缓解,因为录取结果即将揭晓。然而,对于老师来说,这仅仅是另一项繁重工作的开始。他们需要将每一份录取通知单逐一发送给学生家长,这个过程不仅耗时而且容易出错。面对…

Blender中的重拓扑修改器如何使用?

许多人还不了解Blender中的重拓扑编辑器及其使用方法。Blender中的重拓扑修改器提供了一系列工具和选项,以简化创建优化网格的过程,无论是出于何种目的,都能为3D艺术家和建模者节省大量时间和精力。那么,在Blender中重拓扑的定义是…

《数据结构:C语言实现双链表》

文章目录 一、链表的分类二、双向链表1、概念与结构 三、双向链表实现1、双向链表要实现的功能2、哨兵位初始化3、双链表头插数据4、判断链表是否为空5、打印链表数据6、尾插数据7、头删数据8、尾删数据9、寻找数据所在结点10、在任意结点之后插入数据11、删除任意结点12、销毁…

FastGPT 代码调试配置

目录 一、添加 launch.json 文件 二、调试 本文简单介绍如何通过 vscode 对 FastGPT 进行调试。 这里假设已经安装 vsocde 和 FastGPT本地部署。 一、添加 launch.json 文件 vscode 打开 FastGPT 项目,点击 调试 -> 显示所有自动调试配置 -> 添加配置 -&…

使用 Vue 和 ECharts 打造动态数据可视化图表

大家好,今天我们来聊聊如何使用 Vue 和 ECharts 来创建动态数据可视化图表。Vue 是一个渐进式的 JavaScript 框架,非常适合构建用户界面。而 ECharts 是一个强大的开源图表库,能够帮助我们轻松创建各种类型的图表。将这两者结合起来&#xff…

IDEA创建Java工程、Maven安装与建立工程、Web工程、Tomcat配置

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …

响应式编程(Reactive Programming)是什么?

响应式编程的概念 Reactive Programming(反应式编程或响应式编程)是一种面向数据流和变化传播的编程范式,它允许程序组件以声明式的方式响应数据的变化。 响应式编程强调以数据流作为核心,利用观察者模式等机制自动处理数据的变化和传播。 响应式编程的核心思想 以异步数…

【Nacos】Nacos服务注册与发现 心跳检测机制源码解析

在前两篇文章,介绍了springboot的自动配置原理,而nacos的服务注册就依赖自动配置原理。 Nacos Nacos核心功能点 服务注册 :Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端…