1. 克隆项目
确保你的设备上安装了Git Git - Downloads
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
cd CosyVoice
git submodule update --init --recursive
2. 创建虚拟环境
尝试过直接在windows直接安装pynini,编译过程中缺少一个Linux独有的OpenFST关键依赖库。因此必须通过Conda实现安装。
安装 Conda / MiniConda: 请参阅 Download Now | Anaconda
安装后在Win开始菜单中找到 Anaconda Prompt 并打开,此时你的终端应该是 :
(base) C:\User\Administrator >
conda create -n cosyvoice python=3.10
conda activate cosyvoice
conda install -y -c conda-forge pynini==2.1.5
注意在执行 conda activate cosyvoice
后,确保你的终端 (base)变成 (cosyvoice)再执行下一步安装,否则会安装在系统Python中。
3. 安装所需库
直接安装就行了,如果出现缺少了哪个库就手动安装一下。比如(Cython)
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
4. 下载模型
CosyVoice语音生成大模型2.0-0.5B · 模型库 官网的介绍给我写的懵懵的,如下图:

但我们只要部署 CosyVoice2 - 0.5B,只用下载第一个模型就可以了。如果你需要下载其他版本请自行操作。(直接全部复制粘贴下了快一个小时了,阿里源都给我下限速了)
注:Webui支持4种不同的推理模式:预训练音色、3s极速复刻、跨语种复刻、自然语言控制,以往的CosyVoice1要实现以上功能需要分为4个模型。现在CosyVoice2 - 0.5B一个模型就能完成四种功能!
其中,自然语言控制在WebUI中使用受限,如需体验完整功能请使用代码推理或等待官方后续更新。或者参阅新一篇文章中的解决方案:CosyVoice2实现音色保存及推理 < Ping通途说
from modelscope import snapshot_download
snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
5. 测试
官方原文档给的是CosyVoice1.0的使用方法,我们先以启动WebUI为例。
打开webui.py的源码,可以看到默认加载的就是CosyVoice2的模型。直接运行python webui.py
即可。

可能出现的问题
如果启动时出现pydoc.ErrorDuringImport: problem in cosyvoice.flow.flow_matching - ModuleNotFoundError: No module named 'matcha'
错误,请检查CosyVoice-main\third_party\Matcha-TTS
下是否有文件,在官方Git项目中这一块是使用了外链。如果没有请自行下载压缩包并解压
Matcha-TTS/configs at dd9105b34bf2be2230f4aa1e4769fb586a3c824e · shivammehta25/Matcha-TTS · GitHub
重新运行webui.py,可以看到成功进入webui界面。

预训练音色为空的情况:
CosyVoice2-0.5B 没有 spk2info.pt ·议题 #729 ·FunAudioLLM/CosyVoice
根据上面的issus,需要手动下载spk2info.pt文件粘贴到pretrained_models/CosyVoice2-0.5B
中,随后重新运行webui.py就能看到预训练模型:

以《饿殍·明末千里行》中满穗配音为基准进行各项测试,测试结果如下:
原声:
我知道,那件事之后,良爷可能觉得有些事都是老天定的,人怎么做都没用,但我觉得不是这样的。
3s急速复刻:
CosyVoice 2.0 已发布!与 1.0 版相比,新版本提供了更准确、更稳定、更快和更好的语音生成能力。
有情感的语音生成:
在他讲述那个荒诞故事的过程中,他突然[laughter]停下来,因为他自己也被逗笑了[laughter]。
方言控制:
用四川话说这句话 | 收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。
6. 最小化部署
成功运行了环境是好事,但不可能每次都要使用webui来手动转换音频。走过所有部署流程后,我们应该都知道哪些东西是没有必要安装的。
根据官方提供的使用案例,可以通过以下代码直接进行生成。
import sys
sys.path.append('third_party/Matcha-TTS')
from cosyvoice.cli.cosyvoice import CosyVoice, CosyVoice2
from cosyvoice.utils.file_utils import load_wav
import torchaudio
cosyvoice = CosyVoice2('pretrained_models/CosyVoice2-0.5B', load_jit=False, load_trt=False, fp16=False)
# 3秒复刻
prompt_speech_16k = load_wav('zero_shot_prompt.wav', 16000)
for i, j in enumerate(cosyvoice.inference_zero_shot('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '希望你以后能够做的比我还好呦。', prompt_speech_16k, stream=False)):
torchaudio.save('zero_shot_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
# 精细微调,即情感生成
for i, j in enumerate(cosyvoice.inference_cross_lingual('在他讲述那个荒诞故事的过程中,他突然[laughter]停下来,因为他自己也被逗笑了[laughter]。', prompt_speech_16k, stream=False)):
torchaudio.save('fine_grained_control_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
# 指导生成
for i, j in enumerate(cosyvoice.inference_instruct2('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '用四川话说这句话', prompt_speech_16k, stream=False)):
torchaudio.save('instruct_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
因此最小化部署CosyVoice2 - 0.5B,我们只需要准备以下依赖:
- main.py - 你的代码
- third_party/Matcha-TTS - CosyVoice2实现的关键模块
- requirements.txt - 项目所需的库
- pretrained_models/CosyVoice2-0.5B - CosyVoice2模型
- Pynini - 主要用于文本检查和语义纠错。conda install -y -c conda-forge pynini==2.1.5
附requirements.txt,仅供参考。
--extra-index-url https://download.pytorch.org/whl/cu121
--extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/ # https://github.com/microsoft/onnxruntime/issues/21684
conformer==0.3.2
diffusers==0.29.0
gdown==5.1.0
gradio==5.4.0
grpcio==1.57.0
grpcio-tools==1.57.0
hydra-core==1.3.2
HyperPyYAML==1.2.2
inflect==7.3.1
librosa==0.10.2
lightning==2.2.4
matplotlib==3.7.5
modelscope==1.15.0
networkx==3.1
omegaconf==2.3.0
onnx==1.16.0
onnxruntime==1.18.0
openai-whisper==20231117
protobuf==4.25
pydantic==2.7.0
pyworld==0.3.4
rich==13.7.1
soundfile==0.12.1
torch==2.3.1
torchaudio==2.3.1
transformers==4.40.1
WeTextProcessing==1.0.3
发表回复