AI语音:ChatTTS 真有点东西啊!

今天要介绍一个最近刚出的语音合成项目,效果非常惊艳

发布三天已经有9K的Star了,听过的都说好。

演示视频

这效果怎么样?逼真吗?

这个项目的名字叫ChatTTS,一个充满情感的语音合成项目!

简介

ChatTTS是一款专为对话场景设计的语音生成模型,适用于AI助手对话、对话语音和视频介绍,支持中英文。

它优化了对话任务,实现自然流畅的多说话人语音合成,并能控制细粒度的韵律特征,如笑声、停顿和插入词。

ChatTTS在韵律方面表现卓越,提供预训练模型,支持进一步研究。

亮点

  • 对话式TTS: ChatTTS针对对话式任务进行了优化,实现了自然流畅的语音合成,同时支持多说话人。
  • 细粒度控制:该模型能够预测和控制细粒度的韵律特征,包括笑声、停顿和插入词等。
  • 更好的韵律:ChatTTS在韵律方面超越了大部分开源TTS模型。同时提供预训练模型,支持进一步的研究。

这些亮点,在同类型开源项目中却是非常突出。

用法

项目主页提供了一些代码实例,便于快速体验。运行下面代码前记得克隆项目,安装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这两个参数。
通过参数设置,可以更加精准的控制生成效果。

计划路线

  •  开源4w小时基础模型和spk_stats文件
  •  开源VQ encoder和Lora训练代码
  •  在非refine text情况下,流式生成音频*
  •  开源多情感可控的4w小时版本
  •  ChatTTS.cpp maybe? (欢迎社区PR或独立的新repo)

从介绍中可以看到,已经开源了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

最后强调一下,这个项目真不错!值得研究一下!

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值