ChatTTS,语气韵律媲美真人的开源TTS模型,文字转语音界的新魁首,对标微软Azure-tts

在这里插入图片描述

前两天 2noise 团队开源了ChatTTS项目,并且释出了相关的音色模型权重,效果确实非常惊艳,让人一听难忘,即使摆在微软的商业级项目Azure-tts面前,也是毫不逊色的。

ChatTTS是专门为对话场景设计的文本转语音模型,例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。目前在huggingface中的开源版本为4万小时训练且未SFT的版本。

本次分享一下如何在本地部署ChatTTS项目。

配置ChatTTS环境

首先确保本地已经安装好Anaconda软件包,运行命令创建虚拟环境:

conda create -n ChatTTS python=3.11

之所以选择Python3.11的版本,是因为该版本的整体性能更好。

随后克隆官方的项目:

git clone https://github.com/2noise/ChatTTS.git

进入项目

cd ChatTTS

激活虚拟环境

conda activate ChatTTS

安装项目依赖:

pip install -r requirements.txt

最后安装gpu版本的torch:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

注意这里默认的cuda版本是12.1,如果你的本地cuda是11.8,那么就安装对应11.8的torch:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

至此,环境就配置好了。

ChatTTS的基本使用

首先,是最基本的文字转语音功能:

import ChatTTS  
from IPython.display import Audio  chat = ChatTTS.Chat()  
chat.load_models()  texts = ["你好啊",]  wavs = chat.infer(texts, use_decoder=True)  
Audio(wavs[0], rate=24_000, autoplay=True)

这里 ChatTTS 是项目内的文件夹模块,初始化后直接调用infer方法即可进行音频推理。

需要注意的是,首次运行会默认在Huggingface上下载模型,需要学术上网环境。

ChatTTS的进阶用法

###################################  
# Sample a speaker from Gaussian.  
import torch  
std, mean = torch.load('ChatTTS/asset/spk_stat.pt').chunk(2)  
rand_spk = torch.randn(768) * std + mean  params_infer_code = {  'spk_emb': rand_spk, # add sampled speaker   'temperature': .3, # using custom temperature  'top_P': 0.7, # top P decode  'top_K': 20, # top K decode  
}  ###################################  
# For sentence level manual control.  # use oral_(0-9), laugh_(0-2), break_(0-7)   
# to generate special token in text to synthesize.  
params_refine_text = {  'prompt': '[oral_2][laugh_0][break_6]'  
}   wav = chat.infer("<PUT YOUR TEXT HERE>", params_refine_text=params_refine_text, params_infer_code=params_infer_code)  ###################################  
# For word level manual control.  
# use_decoder=False to infer faster with a bit worse quality  
text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'  
wav = chat.infer(text, skip_refine_text=True, params_infer_code=params_infer_code, use_decoder=False)

这里通过 std, mean = torch.load(‘ChatTTS/asset/spk_stat.pt’).chunk(2) 方法来固定音色。

随后通过 params_refine_text 来人为的增加笑声和断句。

ChatTTS的中文样例

最后是一个ChatTTS的中文推理例子:

inputs_cn = """  
chat T T S 是一款强大的对话式文本转语音模型。它有中英混读和多说话人的能力。  
chat T T S 不仅能够生成自然流畅的语音,还能控制[laugh]笑声啊[laugh],  
停顿啊[uv_break]语气词啊等副语言现象[uv_break]。这个韵律超越了许多开源模型[uv_break]。  
请注意,chat T T S 的使用应遵守法律和伦理准则,避免滥用的安全风险。[uv_break]'  
""".replace('\n', '')  params_refine_text = {  'prompt': '[oral_2][laugh_0][break_4]'  
}   
audio_array_cn = chat.infer(inputs_cn, params_refine_text=params_refine_text)  
audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)

文本内容可以通过[laugh]和[uv_break]标识来进行笑声和语气停顿的定制化操作

结语

诚然,没有完美的产品,ChatTTS的模型稳定性似乎还有待提高, 偶尔会出现其他音色或音质很差的现象,这是自回归模型通常都会出现的问题,说话人的音色也有可能会在一定范围内变化, 可能会采样到音质非常差的结果, 这通常难以避免. 可以多采样几次来找到合适的结果,俗称抽卡,最后奉上一键整合包,与众乡亲同飨:

ChatTTS新版整合包:https://pan.quark.cn/s/e07f47edf82a

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

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

相关文章

文件上传题目练习

[HNCTF 2022 Week1]easy_upload 先尝试上传一个php文件&#xff0c;发现直接就成功了 用蚁剑测试连接成功 找到flag [NISACTF 2022]bingdundun~ 白名单上传 这里因为尝试了很多绕过方式都不成功&#xff0c;去搜索了一下wp&#xff0c;发现要用到Phar://伪协议 补充&#xff…

SSRF及相关例题

SSRF及相关例题 服务端请求伪造&#xff08;Server Side Request Forgery, SSRF&#xff09;指的是攻击者在未能取得服务器所有权限时&#xff0c;利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。SSRF攻击通常针对外部网络无法直接访问的内部系统。 SSR…

sql注入 (运用sqlmap解题)

注:level参数 使用–batch参数可指定payload测试复杂等级。共有五个级别&#xff0c;从1-5&#xff0c;默认值为1。等级越高&#xff0c;测试的payload越复杂&#xff0c;当使用默认等级注入不出来时&#xff0c;可以尝试使用–level来提高测试等级。 --level 参数决定了 sql…

鸿蒙应用开发之OpenGL应用和X组件12

在这个应用程序里还有一个功能,就是点击绘画四边形作出响应,也就是触摸X组件进行响应,所以X组件的点击函数响应在前面已经做设置了回调,当用户触摸这个组件时,就会调用函数DispatchTouchEventCB,再从这个函数里调用渲染对象的函数ChangeColor来改变颜色,如下两图是不同的…

<网络安全VIP>第二篇《工业控制软件》

1 PLC PLC,(Programmable Logic Controller),可编程逻辑控制器(PLC)是种专门为在工业环境下应用而设计的数字运算操作电子系统。 2 DCS 四、DCS的发展趋势 一、DCS的基本定义 DCS是分布式控制系统(Distributed Control System)的英文缩写,在国内自控行业又称之为集…

使用wireshark分析tcp握手过程

开启抓包 tcpdump -i any host 127.0.0.1 and port 123 -w tcp_capture.pcap 使用telnet模拟tcp连接 telnet 127.0.0.1 123 如果地址无法连接&#xff0c;则会一直重试SYN包&#xff0c;各个平台SYN重试间隔并不一致&#xff0c;如下&#xff1a; 异常站点抓包展示&#xff…

Fatfs

STM32进阶笔记——FATFS文件系统&#xff08;上&#xff09;_stm32 fatfs-CSDN博客 STM32进阶笔记——FATFS文件系统&#xff08;下&#xff09;_stm32 文件系统怎样获取文件大小-CSDN博客 STM32——FATFS文件基础知识_stm32 fatfs-CSDN博客 021 - STM32学习笔记 - Fatfs文件…

godot.bk4:how to make NPC roam and attack player with global variable‘s usage

1.为什么会有重力的影响&#xff1a;因为CharacterBody2D默认的代码是重力影响的&#xff0c;删掉即可 只需要添加 extends CharacterBody2Dconst SPEED 200.0 var directionfunc _physics_process(delta):direction Input.get_vector("ui_left", "ui_right&…

第一周:计算机网络概述(上)

一、计算机网络基本概念 1、计算机网络通信技术计算机技术 计算机网络就是一种特殊的通信网络&#xff0c;其特殊之处就在于它的信源和信宿就是计算机。 2、什么是计算机网络 在计算机网络中&#xff0c;我们把这些计算机统称为“主机”&#xff08;上图中所有相连的电脑和服…

【Java】---- SpringBoot 统一数据返回格式

目录 1. 统一数据返回格式介绍2. 实际应用2.1 添加前后的返回结果区别2.2 存在问题 3. 统一数据返回格式的优点 1. 统一数据返回格式介绍 通过使用ControllerAdvice和引用ResponseBodyAdvice接口来进行实现。 ResponseBodyAdvice这个接口里面有两个方法&#xff0c;分别是: s…

【专利 超音速】基于分类模型的轻量级工业图像关键点检测方法

申请号CN202311601629.7公开号&#xff08;公开&#xff09;CN117710683A申请日2023.11.27申请人&#xff08;公开&#xff09;超音速人工智能科技股份有限公司发明人&#xff08;公开&#xff09;张俊峰(总); 杨培文(总); 沈俊羽; 张小村 摘要 本发明涉及一种基于分类模型的…

外星人Alienware m16R1 原厂Windows11系统 oem系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…

VB.net实战(VSTO):Excel插件设计Ribbon界面

1. 新建Ribbon 1.1 开发环境 Visual Studio 2022 1.2 解决方案资源管理器中右击My Project 1.3 添加》新建项 1.4 office/SharePoint》功能区(可视化设计器)&#xff0c;双击 2.调出工具箱 Visual Studio 2022》视图》工具箱 3.设计界面 3.1 添加功能区选项卡 3.2拖动Group…

深度强化学习+大模型综述Survey on Large Language Model-Enhanced Reinforcement Learning

论文地址&#xff1a;[2404.00282] Survey on Large Language Model-Enhanced Reinforcement Learning: Concept, Taxonomy, and Methods (arxiv.org) 摘要 对 LLM 增强 RL 中现有文献进行了全面的回顾&#xff0c;并总结了其与传统 RL 方法相比的特征&#xff0c;旨在阐明未…

混合A*算法详解(一)路径搜索

描述 为了学习一下混合A*算法&#xff0c;我前面介绍了车辆运动学及非完整约束、差速轮及阿克曼运动学模型、Dubins曲线和RS曲线&#xff0c;现在终于可以看一下混合A*算法的相关内容了。 原文名称&#xff1a;Practical Search Techniques in Path Planning for Autonomous D…

Mac解决command not found:mvn 保姆级

1.背景 mac电脑已经安装了jdk1.8。如果不清楚自己jdk安装位置的可以到idea查看。但是命令行执行 mvn 会报 command not found 2.解决方案 默认安装的 jdk 是没有配置环境变量&#xff0c;因此需要手动配置 通常如果是默认安装则路径都会一样直接复制即可&#xff0c;只需更…

驱动开发之设备树语法

0.设备树由来 通过前面platform实验&#xff0c;使用platform总线&#xff0c;device与driver需要匹配才可以&#xff0c;device主要是存储一些硬件信息的&#xff0c;传递给driver使用。这样就会导致大量的硬件信息在linux内核源码里面&#xff0c;arch/arm/mach-xxx 和 arch…

undefined symbol: _ZN3c104impl8GPUTrace13gpu mmcv

这里写自定义目录标题 ImportError: //python3.8/site-packages/mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN3c104impl8GPUTrace13gpuTraceStateEERROR conda.cli.main_run:execute(49): 这样的问题往往都是版本不匹配导致的 pytorch的版本&#xff0c;m…

【C++】类和对象1.0

本鼠浅浅介绍一些C类和对象的知识&#xff0c;希望能得到读者老爷们的垂阅&#xff01; 目录 1.面向过程和面向对象 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1.类的访问限定符 4.2.封装 5.C中struct和class的区别 6.类域 7.类的实例化 8.类对象模型 8.1.类…

线性代数|机器学习-P5特征值和特征向量

文章目录 1. 特征值和特征向量1.1 特征向量1.2 向量分解 2. 矩阵相似2.1 特征值求解法-相似2.2 特殊特征值2.3 反对称矩阵 3.对称矩阵 1. 特征值和特征向量 1.1 特征向量 假设有一个n行n列的方阵A&#xff0c;有 n 个不相同的特征值为 λ \lambda λ,特征向量为 x 1 , x 2 , …