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

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

时间:2024-05-31 17:11:08浏览次数:12  
标签:ChatTTS tts text TTS params refine chat infer

前两天 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

标签:ChatTTS,tts,text,TTS,params,refine,chat,infer
From: https://www.cnblogs.com/v3ucn/p/18224909

相关文章

  • Google使用AI改进了 Sheets;开源视觉语言模型llama3v;开源情绪语音模型ChatTTS;
    ✨1:GooglehasimprovedSheetswithAI.Google使用AI改进了Sheets您可以使用Gemini处理您的数据并将其变成老师。优化您的数据Gemini了解您的数据并提出改进建议。例如,它可以将重复数据转换为更实用的下拉框。解释数据通过单击双子座图标,您可以自动获......
  • Python中的pyttsx3库:文本到语音转换的利器
    pyttsx3是一个跨平台的文本到语音转换库,它可以在没有安装其他依赖项的情况下在Windows、Linux和macOS上运行。pyttsx3使用系统自带的TTS(文本到语音)引擎,因此可以确保在各种操作系统上都具有较高的稳定性和可用性。官方文档:https://pyttsx3.readthedocs.io/en/latest/https://py......
  • 阿里云语音合成TTS直播助手软件开发
    阿里云的TTS比较便宜,效果比不了开源克隆的那种,比纯机器人效果好一点点阿里云samberthttps://help.aliyun.com/zh/dashscope/developer-reference/quick-start-13Sambert系列模型1万字1元,每主账号每模型每月3万字免费创建API-KEYhttps://dashscope.console.aliyun.com/apiK......
  • vue + websocket + speak-tts 实现推送的告警消息弹框显示在右下角并语音播报出内容
    最近接了个项目需求,给设备配置语音加弹框告警。用户登录项目后不管在哪个页面,有告警就全局在右下角消息弹框加语音播报,下面浅介绍下我在开发中的流程以及遇到的坑!!!1、首先项目中安装speak-tts语音播报插件。npminstallspeak-tts2、创建一个全局的speech.js文件,文件中引入插......
  • OpenVoiceV2本地部署教程,苹果MacOs部署流程,声音响度统一,文字转语音,TTS
    最近OpenVoice项目更新了V2版本,新的模型对于中文推理更加友好,音色也得到了一定的提升,本次分享一下如何在苹果的MacOs系统中本地部署OpenVoice的V2版本。首先下载OpenVoiceV2的压缩包:OpenVoiceV2-for-mac代码和模型https://pan.quark.cn/s/33dc06b46699该版本针对MacOs系统做......
  • 文本到语音(tts)
    WebSpeechAPI使你能够将语音数据合并到Web应用程序中。WebSpeechAPI有两个部分:SpeechSynthesis语音合成(文本到语音TTS)和SpeechRecognition语音识别(异步语音识别)SpeechSynthesis:语音服务的控制器接口,获取设备上关于可用的合成声音的信息,开始、暂停语音,或除此之外......
  • 用edge_tts和Flask写一个语音生成接口
    1、安装Flask和edge_ttspipinstalledge-ttspipinstallflask[async]2、接口调用用application/json,POST参数:例子{"text":"现在是11:30分=,小爱提醒您,现在要出发了,请注意时间","lang":"zh-CN-YunxiNeural"}3、完整代码fromflaskimportFlask,requestim......
  • TTS通用播放库技术设计
    TTS音频播放库技术设计目录介绍01.整体介绍概述1.1项目背景介绍1.2遇到问题1.3基础概念介绍1.4设计目标1.5问题答疑和思考02.技术调研说明2.1语音播放方案2.2TTS技术分析2.3语音合成技术2.4方案选择说明2.5方案设计思路2.6文本生成音频03.系统TT......
  • 银河麒麟系统V10上安装TTS语音模块,并使用C#调用进行语音播报
    银河麒麟系统V10上安装TTS语音模块,并使用C#调用进行语音播报系统版本什么是TTS需求背景环境部署更新系统安装版本包安装完成执行命令测试C#环境下调用语音播报系统版本什么是TTS从文本到语音TTS是“TextToSpeech”的缩写,即“从文本到语音”,是人......
  • TTS 擂台: 文本转语音模型的自由搏击场
    对文本转语音(text-to-speech,TTS)模型的质量进行自动度量非常困难。虽然评估声音的自然度和语调变化对人类来说是一项微不足道的任务,但对人工智能来说要困难得多。为了推进这一领域的发展,我们很高兴推出TTS擂台。其灵感来自于LMSys为LLM提供的Chatbot擂台。借鉴Chatb......