【避坑全攻略】如何让私人的LLM拥有一个嗓子——ChatTTS

OpenAI 发布 GPT4o 之后,使得越来越多的人都开始幻想属于自己的AI“伴侣”,这最让人惊艳的就是他们出色的TTS技术。而在此之前,主流的开源TTS有 XTTS 2 和 Bark。而近日,一个名为 ChatTTS 文本转语音项目爆火出圈,引来大家极大的关注。

在这里插入图片描述

项目地址:https://github.com/2noise/ChatTTS/tree/main

官方描述:ChatTTS 是专为 LLM 助手等对话场景设计的文本到语音模型。它支持中英文两种语言。我们的模型经过 100,000+ 小时的中英文训练。HuggingFace 上的开源版本是不含 SFT 的 40,000 小时预训练模型。

特点

  • 对话式 TTS: ChatTTS 针对基于对话的任务进行了优化,可实现自然且富有表现力的语音合成。它支持多人发言,促进互动对话。
  • 细粒度控制: 该模型可预测和控制细粒度的前音特征,包括笑声、停顿和插话。
  • 更好的拟声: ChatTTS 在拟声方面超越了大多数开源 TTS 模型。我们提供预训练模型,以支持进一步的研究和开发。

commit fb54155b47404dbf7f61f230b117cf36b577ffec
Code

import ChatTTS
from IPython.display import Audiochat = ChatTTS.Chat()
chat.load_models()texts = ["作者写百草园,以“乐”为中心,以简约生动的文字,描绘了一个奇趣无穷的儿童乐园,其间穿插“美女蛇”的传说和冬天雪地捕鸟的故事,动静结合,详略得当,趣味无穷。",]wavs = chat.infer(texts, use_decoder=True)
Audio(wavs[0], rate=24_000, autoplay=True)

高级用法

###################################
# Sample a speaker from Gaussian.
import torch
std, mean = torch.load('ChatTTS/asset/spk_stat.pt').chunk(2)
rand_spk = torch.randn(768) * std + meanparams_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("作者写百草园,以“乐”为中心,以简约生动的文字,描绘了一个奇趣无穷的儿童乐园,其间穿插“美女蛇”的传说和冬天雪地捕鸟的故事,动静结合,详略得当,趣味无穷。", params_refine_text=params_refine_text, params_infer_code=params_infer_code)Audio(wav[0], rate=24_000, autoplay=True)
###################################
# For word level manual control.
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)Audio(wav[0], rate=24_000, autoplay=True)

这里进度条跟不上4090的速度,而且作者没写Audio,导致我误认为挂了。。。(我在秋山涉面前,86太慢了)

commit 1c022eeebe577ba3651f4e568fa2dccabaf16e78
拉了新版的

 except:197     self.logger.log(logging.WARNING, f'Package nemo_text_processing not found! \198         Run: conda install -c conda-forge pynini=2.1.5 && pip install nemo_text_processing')
--> 199 self.normalizer[lang] = partial(Normalizer(input_case='cased', lang=lang).normalize, verbose=False, punct_post_process=True)UnboundLocalError: local variable 'Normalizer' referenced before assignment

我看了一下 https://github.com/2noise/ChatTTS/issues/164,把提示的 conda install -c conda-forge pynini=2.1.5 && pip install nemo_text_processing 运行一遍。

秀儿,怎么不把 requirements.txt更新一下?

Code

# Import necessary libraries and configure settings
import torch
import torchaudio
torch._dynamo.config.cache_size_limit = 64
torch._dynamo.config.suppress_errors = True
torch.set_float32_matmul_precision('high')import ChatTTS
from IPython.display import Audio# Initialize and load the model: 
chat = ChatTTS.Chat()
chat.load_models(compile=False) # Set to True for better performance# Define the text input for inference (Support Batching)
texts = ["So we found being competitive and collaborative was a huge way of staying motivated towards our goals, so one person to call when you fall off, one person who gets you back on then one person to actually do the activity with.",]# Perform inference and play the generated audio
wavs = chat.infer(texts)
Audio(wavs[0], rate=24_000, autoplay=True)# Save the generated audio 
torchaudio.save("output.wav", torch.from_numpy(wavs[0]), 24000)

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

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

相关文章

Python中的random.choices详解

1. 什么是random.choices函数? random.choices是Python标准库中random模块提供的一个函数,用于从给定的序列中随机选择一个值。这个函数可以用于实现随机抽样、按照概率进行选择等功能。 random.choices(population, weightsNone, *, cum_weightsNone,…

.gitignore 文件

一.什么是 .gitignore 文件 在任何当前工作的 Git 仓库中,每个文件都是这样的: 追踪的(tracked)- 这些是 Git 所知道的所有文件或目录。这些是新添加(用 git add 添加)和提交(用 git commit 提…

汽美汽修店管理系统会员小程序的作用是什么

汽车后市场汽美汽修赛道同样存在着大量商家,连锁品牌店或个人小店等,门店扎堆且区域覆盖面积广,当然每天车来车往也有不少生意。 随着线上化程度加深和商家不断拓展市场的需要,传统运营模式可能难以满足现状,尤其是年…

Element - UI <el-table-column>多选数据提交后禁用已提交的多选框

1. 通过 selection-change"selectionChange" 将已选择的数据存入selectData数组中 <el-table :data"tableData" class"my-5" selection-change"selectionChange" > //多选框已选择的数据 const selectData ref([]); const sel…

在线图片测试用例

开发中经常需要mock图片&#xff0c;下面是可用于测试的在线图片URL示例&#xff0c; https://picsum.photos/200/200?random2 https://picsum.photos/200/200?random1 https://picsum.photos/300/200?random2 https://picsum.photos/300/200?random1 说明&#xff1a…

前端环境配置(后端使用前端版,简易版非专业前端)

声明本人不是专业做前端的&#xff0c;只是平常开发有时候需要运行前端代码&#xff0c;记录一下配置环境。 安装nvm nvm 即 (node version manager)&#xff0c;好处是方便切换 node.js 版本。 自己网上下载安装包即可&#xff0c;傻瓜式安装。 安装注意事项 要卸载掉现有的 …

HALCON-从入门到入门-图像格式的互相转换

1.废话 上次说到了图片的读取和写入到本地&#xff0c;这次说一下图片的格式相关。 位图和矢量图 photoshop处理出来的图片肯定叫做图片&#xff0c;那么coreDraw处理出来的图片是不是也叫图片。 之间就有区分&#xff0c;一种叫做位图&#xff0c;一种叫做矢量图 位图和矢…

AI大模型探索之路-实战篇13: 从对话到报告:打造能记录和分析的Agent智能数据分析平台

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5&#xff1a;探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6&#xff1a;掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

echarts 图表不显示的问题

是这样的&#xff0c;点击详情&#xff0c;再点击统计&#xff0c;切换的时候就不会显示echarts图表&#xff0c;刚开始使用的是next Tick&#xff0c;没有使用定时器&#xff0c;后来加上了定时器就实现了如下所示&#xff1a; 代码是如下 const chartContainer ref(null); …

【面试题-011】如何设计一个三高系统

设计一个“三高”系统&#xff08;即高可用、高性能、高并发&#xff09;需要综合考虑系统架构、技术选型、运维管理等多个方面。以下是一些关键的设计原则和步骤&#xff1a; 1. 确定系统需求和目标 高可用&#xff1a;系统需要能够承受故障&#xff0c;并在故障发生时快速恢…

【Text2SQL 论文】DBCopilot:将 NL 查询扩展到大规模数据库

论文&#xff1a;DBCopilot: Scaling Natural Language Querying to Massive Databases ⭐⭐⭐⭐ Code: DBCopilot | GitHub 一、论文速读 论文认为目前的 Text2SQL 研究大多只关注具有少量 table 的单个数据库上的查询&#xff0c;但在面对大规模数据库和数据仓库的查询时时却…

618商品网页制作编程示例开发案列优质学习资料资源工具与案列应用场景开发文档教程资料】

创建一个简单的商品网页可以用HTML、CSS和JavaScript来实现。这种网页会包括商品的图片、名称、描述、价格和购买按钮等。下面是一个详细的源码案例及其讲解&#xff1a; 1. 文件结构 假设我们有以下文件结构&#xff1a; /product-page/imagesproduct.jpgindex.htmlstyle.c…

UML静态图-对象图

概述 静态图包含类图、对象图和包图的主要目的是在系统详细设计阶段&#xff0c;帮助系统设计人员以一种可视化的方式来理解系统的内部结构和代码结构&#xff0c;包括类的细节、类的属性和操作、类的依赖关系和调用关系、类的包和包的依赖关系。 对象图与类图之间的关系&…

python中获取文件和图片类型的方法

目录 一. 使用第三方库 filetype安装 filetype 库&#xff1a;示例代码&#xff1a; 二. 使用第三方库 Pillow&#xff08;针对图片&#xff09;安装 Pillow 库&#xff1a;示例代码&#xff1a; 三. 使用Python标准库imghdr&#xff08;针对图片&#xff09;示例代码&#xff…

Linux 命令:tail

1. 写在前面 本文主要介绍 Linux tail 命令&#xff1a;可用于查看文件的内容&#xff0c;有一个常用的参数 -f 常用于查阅实时更新的日志文件。 关注 公众号 获取最新博文&#xff1a; 滑翔的纸飞机 2. tail 命令 tail 命令的基本语法是&#xff1a; tail [OPTION]... [FIL…

Day46 动态规划part06

完全背包问题 完全背包和01背包问题唯一不同的地方就是&#xff0c;每种物品有无限件。先遍历物品还是先遍历背包以及遍历顺序 根据递推公式可知&#xff1a;每一个dp需要根据上方和左方的数据推出&#xff0c;只要保证数据左上方数据是递推出来的这种两个for循环的顺序就是可…

【故障诊断】基于EMD的振动信号时频分析新方法研究附matlab代码

matlab % 步骤1&#xff1a;加载振动信号数据 load(‘vibration_signal.mat’); % 加载振动信号数据&#xff0c;假设信号存储在变量signal中 % 步骤2&#xff1a;定义EMD函数 function imfs emd(signal) imfs []; % 存储提取的IMF分量 while ~isMonotonic(signal)[imf, r…

PostgreSQL的内存参数

PostgreSQL的内存参数 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;5777PostgreSQL 提供了多种内存参数&#x…

一个高效的go语言字符串转驼峰命名算法实现函数

在go语言的开发中我们经常需要对各种命名进行规范&#xff0c; 今天给大家介绍的是一个高效的将字符串转 驼峰命名 &#xff08;即 首字母大写的命名方式&#xff09;的函数。 // 字符串转驼峰命名 // author tekintian <tekintiangmail.com> func CamelStr(str string) …

【python学习】Anaconda的介绍、下载及conda和pip换源方式(切换到国内镜像源)

什么是Anaconda Anaconda 是一个专为数据科学和机器学习预装了多种库的Python发行版。 提供了包管理与环境管理的功能解决了多个版本python并存的问题解决了第三方包安装问题 如何下载Anaconda 官网地址&#xff1a;https://www.anaconda.com/ 点击右上角的 Free Download …