Zonos新型TTS语音克隆模型开源,如何集成部署?
最近,语音技术领域王炸消息——新型高保真TTS语音克隆模型Zonos开源了!这个消息一经传出,就在技术圈引起了不小的轰动。短短不到5天时间,它在GitHub上就收获了1.1k的标星,人气相当高。今天,咱们就来好好聊聊这个Zonos模型,教大家如何集成部署Zonos!
1、Zonos是什么?
Zonos是一款功能强大的高保真TTS模型,简单来说,它能把文本转化为听起来特别真实的语音,可以快速生成带有特定情绪的语音,也能精准模仿某个人的声音。
和其他TTS模型相比,Zonos还有个很大的优势,就是它的训练数据非常丰富。虽然大部分数据是英文的,但也包含了大量的中文、日语等其他语言的数据,所以在对中文的支持上,Zonos要更胜一筹。
目前,Zonos提供了两种1.6B模型,分别是Transformer和SSM。这里面的SSM模型可不简单,它是首个能用于TTS(也就是把文本变成语音)的开源模型。凭借独特的结构设计,SSM模型让语音生成的质量和多样性都有了很大提升。
2、Zonos核心亮点
(一)高保真语音克隆
只需要输入5到30秒的语音样本,Zonos就能克隆出高保真的语音,克隆出来的声音和原声音非常相似,几乎可以以假乱真。
(二)多语言支持
它支持多种语言,像英语、日语、中文、法语和德语等。
(三)情绪调节与语音定制
在语音定制方面,Zonos提供了很多选项,可以调整音高、语速、音质,还能让语音带上悲伤、恐惧、愤怒、快乐和惊讶等不同的情绪,能让生成的语音更符合使用场景。
(四)前缀匹配与说话人定制
通过添加文本和音频前缀,Zonos能实现更精细的说话人匹配效果,进一步提升语音克隆的精准度。
(五)超高性能与实时生成
在性能方面,Zonos表现得十分出色。尤其是在RTX 4090显卡上运行时,实时率能达到约2倍,生成语音的速度非常快。
(六)内置简易界面
Zonos内置了一个基于gradio的简易界面,操作简单易懂,可以轻松上手。
3.、如何使用Zonos?
(一)小白用户体验测试版
对于小白用户来说,想要体验Zonos的魅力,直接去测试版就可以。目前有两个Beta地址:
- Beta地址1
- Beta地址2
在测试版页面,不仅可以试试默认的语音效果,还能点击麦克风直接克隆自己的声音,或者拖放提前录制好的语音文件进行克隆。
(二)开发者部署与使用
对于开发者而言,Zonos的安装和使用也很方便,可以通过Docker快速部署。具体步骤如下:
git clone https://github.com/Zyphra/Zonos.git cd Zonos # 启动gradio界面 docker compose up # 或者,如果是开发用途,可以这样操作 docker build -t Zonos. docker run -it --gpus=all --net=host -v /path/to/Zonos:/Zonos -t Zonos cd /Zonos python sample.py # 这会在/Zonos目录下生成一个sample.wav文件
在Python中使用Zonos的示例代码如下:
import torch import torchaudio from zonos.model import Zonos from zonos.conditioning import make_cond_dict # 从预训练模型中加载Zonos,这里使用的是Transformer模型,并且指定在cuda设备上运行 # 如果想用Hybrid模型,把"Zyphra/Zonos-v0.1-transformer"替换为"Zyphra/Zonos-v0.1-hybrid"即可 model = Zonos.from_pretrained("Zyphra/Zonos-v0.1-transformer", device="cuda") # 加载示例音频文件 wav, sampling_rate = torchaudio.load("assets/exampleaudio.mp3") # 根据加载的音频生成说话人嵌入向量 speaker = model.make_speaker_embedding(wav, sampling_rate) # 构建包含文本、说话人、语言等信息的条件字典 cond_dict = make_cond_dict(text="Hello, world!", speaker=speaker, language="en-us") # 根据条件字典准备模型所需的条件信息 conditioning = model.prepare_conditioning(cond_dict) # 生成语音代码 codes = model.generate(conditioning) # 解码语音代码并将结果转换到CPU上 wavs = model.autoencoder.decode(codes).cpu() # 保存生成的语音为sample.wav文件,指定采样率 torchaudio.save("sample.wav", wavs[0], model.autoencoder.sampling_rate)
这些代码展示了如何在Python环境中使用Zonos生成语音,开发者可以根据实际需求进行调整和拓展。
4、项目地址
最后附上项目地址和模型地址,如下:
GitHub项目地址
模型地址
对语音技术感兴趣的朋友,不妨去试试Zonos,感受一下!