抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

书接上回,在体验过RVC实时音色转换后,调整了很多转换参数和各种音色模型,总是感觉效果差一点,在追求更好的效果的时候一个开源的AI模型出现了,即CosyVoice,据说拥有媲美人类录音的真实效果,同时有丰富的情感语气,自然发声。看官网的样式很吊,那么下面就来自己搭建一下体验效果。

Gemini_Generated_Image_1y8mfx1y8mfx1y8m

安装&体验

环境:windows10

python:3.10.11

官网:CosyVoice 领先的多语言语音生成工具

github:FunAudioLLM/CosyVoice: Multi-lingual large voice generation model, providing inference, training and deployment full-stack ability.

把代码块clone下来开始安装

1
2
3
4
5
6
7
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
cd CosyVoice
git submodule update --init --recursive

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com

在安装依赖的时候遇到一个小坑,由于我是window10+3060TI的显卡,在安装torch相关依赖的时候要指定一下版本,不然会报错

1
2
pip install torch==2.1.2+cu118 torchaudio==2.1.2+cu118 torchvision==0.16.2+cu118 ^
--index-url https://download.pytorch.org/whl/cu118

安装好后,还要下载一下对应预训练模型到本地

1
2
3
4
5
6
7
from modelscope import snapshot_download
snapshot_download('FunAudioLLM/Fun-CosyVoice3-0.5B-2512', local_dir='pretrained_models/Fun-CosyVoice3-0.5B')
snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
snapshot_download('iic/CosyVoice-300M', local_dir='pretrained_models/CosyVoice-300M')
snapshot_download('iic/CosyVoice-300M-SFT', local_dir='pretrained_models/CosyVoice-300M-SFT')
snapshot_download('iic/CosyVoice-300M-Instruct', local_dir='pretrained_models/CosyVoice-300M-Instruct')
snapshot_download('iic/CosyVoice-ttsfrd', local_dir='pretrained_models/CosyVoice-ttsfrd')

为了节省时间,我这里其实只下载了【CosyVoice-300M-Instruct】模型,下载完后就可以启动web demo来体验效果啦

1
python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice-300M-Instruct
image-20260126000325158

这里我们可以使用预训练音色,在最上面的文本框来直接体验效果,注意这里生成会比RVC这些慢挺多的,因为模型参数大很多,下面这段效果我用3060TI都跑了8秒。

文本:【今天深圳天气很不错,温度26度,空气适宜,适合躺平呀】

虽然还是缺少一点点活人感,但整体效果还是不错的。

下面再来体验一下代码方式生成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
sys.path.append('third_party/Matcha-TTS')
from cosyvoice.cli.cosyvoice import AutoModel
import torchaudio


def cosyvoice3_example():
# 加载CosyVoice3 模型
cosyvoice = AutoModel(model_dir='pretrained_models/Fun-CosyVoice3-0.5B')


# Zero-Shot 推理(语音克隆)
# 文本内容,风格/语气提示,参考音频路径
for i, j in enumerate(cosyvoice.inference_zero_shot('让我教你炒股秘诀,分别是全仓猛干,浮盈加仓,频繁交易,技术分析,绝对有搞头', 'You are a helpful assistant. 用开心、快乐、快速的语气<|endofprompt|>希望你以后能够做的比我还好呦。',
'./asset/zero_shot_prompt.wav', stream=False)):
torchaudio.save('money_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)


def main():
cosyvoice3_example()


if __name__ == '__main__':
main()

上面这段代码主要方法就是:inference_zero_shot

第一个参数:要生成音频的文本

第二参数:语音克隆的prompt(风格+语气+指令)

[系统指令] + [语气控制] + <|endofprompt|> + [引导性文本]

第三个参数:参考音频

这里返回是一个generator,一段文本会根据长度被切分为多段音频,所以要遍历保存一下。

原理

CosyVoice3 是一个支持多语言的语音合成(TTS)模型,它不仅能把文字变成自然语音,还能做到:

  • 零样本音色克隆(zero-shot voice cloning):只需一小段音频示例,就能模仿该人的声音;
  • 多语言和方言支持:覆盖 9 种通用语言和 18 种中文方言;
  • 情感/语气控制:语速、情绪等可用自然语言指令控制;
  • 跨语种合成:用一个语种的音色在其他语言中发音,且保持声音特征。

本质上是一个基于大规模深度学习模型的端到端语音生成系统

Gemini_Generated_Image_68iqu568iqu568iq