赞
踩
今天要介绍一个最近刚出的语音合成项目,效果非常惊艳!
发布三天已经有9K的Star了,听过的都说好。
这效果怎么样?逼真吗?
这个项目的名字叫ChatTTS,一个充满情感的语音合成项目!
ChatTTS是一款专为对话场景设计的语音生成模型,适用于AI助手对话、对话语音和视频介绍,支持中英文。
它优化了对话任务,实现自然流畅的多说话人语音合成,并能控制细粒度的韵律特征,如笑声、停顿和插入词。
ChatTTS在韵律方面表现卓越,提供预训练模型,支持进一步研究。
这些亮点,在同类型开源项目中却是非常突出。
项目主页提供了一些代码实例,便于快速体验。运行下面代码前记得克隆项目,安装req文件里面的依赖。
- #导入库:import ChatTTS和from IPython. display import Audio。
-
- import ChatTTS
-
- from IPython.display import Audio
-
- #初始化ChatTTS:创建一个ChatTTS对象chat= ChatTTS. Chat()。
-
- chat = ChatTTS.Chat()
-
- #加载模型:使用chat. load_models()加载预训练模型。
-
- chat.load_models()
-
- #设置文本:定义要转换为语音的文本列表texts=["< PUT YOUR TEXT HERE>",]。
-
- texts = ["<PUT YOUR TEXT HERE>",]
-
- #生成语音:使用chat. infer( texts, use_decoder= True)将文本转换为语音波形数据。
-
- wavs = chat.infer(texts, use_decoder=True)
-
- #播放语音:通过Audio( wavs[0], rate=24_000, autoplay= True)播放生成的语音。
-
- Audio(wavs[0], rate=24_000, autoplay=True)
基本用法总共7行代码,全是使用默认参数,非常简单。如果需要自定义一些参数,可以参考进阶代码。
- ###################################
-
- # 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)
进阶代码主要加载了一个pt文件,然后构建了params_refine_text和params_infer_code这两个参数。
通过参数设置,可以更加精准的控制生成效果。
从介绍中可以看到,已经开源了4万小时的基础模型和spk_stats文件。
接下来还有开源编码器和微调代码,包括流式生成,多情感可控版本,设置可能会有更高效的C代码版本。
可以期待一下啊。
以下是官方总结的一些常见问题,可以参考一下。
连不上HuggingFace
请使用modelscope的版本。并设置cache的位置
我要存多少钱?Infer的速度是怎么样的?
对于30s的音频,至少需要4G的显存。对于4090D,1s生成约7个字所对应的音频。RTF约0.65。
模型稳定性似乎不够好,会出现其他说话人或音质很差的现象。
这是自回归模型通常都会出现的问题。说话人可能会在中间变化,可能会采样到音质非常差的结果,这通常难以避免。可以多采样几次来找到合适的结果。
除了笑声还能控制什么吗?还能控制其他情感吗?
现在放出的模型版本中,只有[ laugh]和[ uv_break],[ lbreak]作为字级别的控制单元。在未来的版本中我们可能会开源其他情感控制的版本。
整理了一些扩展内容。包括官方完整的演示视频,在线体验地址,和Colab笔记本。
官方演示视频:
突破开源天花板!ChatTTS:对话式高可控的语音合成模型_哔哩哔哩_bilibili
在线体验地址:
https://huggingface.co/spaces/Dzkaka/ChatTTS
Colab笔记本:
https://github.com/dream80/TonyColab
最后强调一下,这个项目真不错!值得研究一下!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。