CosyVoice 是一个开源的多语言语音生成模型,专注于高质量的文本转语音(TTS)技术。它支持多种语言的语音合成,提供零样本语音生成、跨语言语音克隆和细粒度情感控制等功能。Cos–
yVoice 2.0 相比上一版本,显著降低了30%到50%的发音误差,音质和韵律自然度大幅提升,MOS评分从5.4提高到5.53。它通过简化的模型架构和优化算法,实现低延迟的流式和非流式语音合成,适用于实时交互场景。项目提供完整的推理、训练和部署支持,开发者可轻松上手,适合语音助手、配音和多语言内容创作等应用。
开放服务:CosyVoice:阿里推出的3秒急速语音克隆开源项目,支持情感控制标签
功能列表
- 零样本语音生成:基于短音频样本生成与目标声音相似的语音,无需额外训练。
- 跨语言语音合成:支持多语言语音生成,保持音色一致性,适用于全球内容创作。
- 细粒度情感控制:支持添加笑声、停顿等情感表达,生成更自然的语音。
- 方言和口音调整:可生成特定方言(如四川话)或口音的语音,增强本地化体验。
- 流式语音合成:支持低延迟流式输出,首包延迟低至150ms,适合实时应用。
- 模型训练支持:提供预训练模型和从头训练的完整流程,满足开发者需求。
- 高音质输出:优化音质和韵律,MOS评分达到5.53,接近商业化水平。
使用帮助
安装流程
要使用 CosyVoice,首先需要安装必要的环境和依赖。以下是详细的安装步骤,确保用户能够快速配置并运行项目。
- 安装 Conda
CosyVoice 推荐使用 Conda 管理环境。请访问https://docs.conda.io/en/latest/miniconda.html
下载并安装 Miniconda。然后创建并激活虚拟环境:conda create -n cosyvoice python=3.10 conda activate cosyvoice
- 安装依赖
使用 pip 安装项目所需的 Python 包。由于网络原因,建议使用国内镜像源(如阿里云):pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
安装
pynini
(用于文本处理):conda install -y -c conda-forge pynini==2.1.5
- 解决 sox 兼容性问题
如果遇到 sox 相关问题,根据操作系统安装 sox:- Ubuntu:
sudo apt-get install sox libsox-dev
- CentOS:
sudo yum install sox sox-devel
- Ubuntu:
- 下载预训练模型
CosyVoice 提供多个预训练模型(如CosyVoice2-0.5B
、CosyVoice-300M
、CosyVoice-300M-SFT
和CosyVoice-300M-Instruct
)。用户可从 GitHub 仓库下载这些模型并放置在pretrained_models
目录下。另需下载CosyVoice-ttsfrd
资源以支持文本前端处理。 - 克隆项目代码
使用 Git 克隆 CosyVoice 仓库,并确保子模块正确加载:git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git cd CosyVoice git submodule update --init --recursive
使用方法
CosyVoice 提供多种功能模块,包括零样本语音生成、跨语言合成和指令式语音生成。以下是具体操作流程。
零样本语音生成
零样本语音生成允许用户基于短音频样本生成目标音色的语音。例如,生成一段带有特定音色的语音:
from cosyvoice import CosyVoice2
import torchaudio
cosyvoice = CosyVoice2('pretrained_models/CosyVoice2-0.5B', load_jit=False, load_trt=False, fp16=False)
prompt_speech_16k = torchaudio.load('./asset/zero_shot_prompt.wav')[0]
for i, j in enumerate(cosyvoice.inference_zero_shot(
'收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。',
'希望你以后能够做的比我还好呦。',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'zero_shot_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- 操作步骤:
- 准备一段 16kHz 的提示音频(如
zero_shot_prompt.wav
)。 - 调用
inference_zero_shot
方法,传入目标文本、提示文本和音频。 - 保存生成的语音文件。
- 准备一段 16kHz 的提示音频(如
- 注意:若需复现官网结果,请设置
text_frontend=False
。
跨语言语音合成
跨语言合成支持生成多语言语音,并保持音色一致。例如,生成带有笑声的语音:
for i, j in enumerate(cosyvoice.inference_cross_lingual(
'在他讲述那个荒诞故事的过程中,他突然[laughter]停下来,因为他自己也被逗笑了[laughter]。',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'fine_grained_control_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- 操作步骤:
- 准备提示音频。
- 在文本中添加情感标签(如
[laughter]
),具体支持的标签见cosyvoice/tokenizer/tokenizer.py#L248
。 - 保存生成的语音文件。
指令式语音生成
指令式生成支持指定方言或风格。例如,生成四川话语音:
for i, j in enumerate(cosyvoice.inference_instruct2(
'收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。',
'用四川话说这句话',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'instruct_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- 操作步骤:
- 提供目标文本和指令(如“用四川话说”)。
- 使用提示音频生成语音。
- 保存输出文件。
流式合成
流式合成适合实时应用,首包延迟低至150ms。设置 stream=True
即可启用流式输出,具体代码参考上述示例。
其他注意事项
- 模型选择:推荐使用
CosyVoice2-0.5B
模型以获得最佳音质和性能。 - 环境配置:确保 Python 版本为 3.10,依赖安装无误。
- 调试:若克隆子模块失败,多次运行
git submodule update --init --recursive
直到成功。 - 文档参考:更多细节见
cosyvoice/tokenizer/tokenizer.py
和官方文档https://funaudiollm.github.io/cosyvoice2
。
应用场景
- 语音助手开发
CosyVoice 的低延迟流式合成和多语言支持非常适合开发智能语音助手。开发者可利用零样本生成快速定制个性化音色,生成自然流畅的语音回复,提升用户交互体验。 - 多语言内容创作
内容创作者可使用跨语言合成功能,快速生成多语言配音。例如,为视频或播客生成英语、汉语或其他语言的语音,保持音色一致,降低制作成本。 - 教育与语言学习
CosyVoice 支持方言和情感控制,可用于语言学习应用,生成特定口音或情感的语音,帮助学习者练习听力和发音。 - 影视与游戏配音
影视和游戏开发者可利用细粒度情感控制生成带有笑声、停顿等效果的语音,增强角色表现力,提升作品沉浸感。
QA
- CosyVoice 支持哪些语言?
CosyVoice 支持多种语言的语音合成,具体语言列表可在官方文档或cosyvoice/tokenizer/tokenizer.py
中查看,覆盖常见语言和部分方言。 - 如何降低语音生成的延迟?
使用流式合成模式(stream=True
)可将首包延迟降至150ms。确保使用高性能硬件和优化后的模型(如CosyVoice2-0.5B
)。 - 是否需要训练模型?
不需要。CosyVoice 提供预训练模型,直接下载即可使用。若需定制,可参考官方文档从头训练。 - 如何添加自定义音色?
使用inference_zero_shot
方法,传入目标音频样本和提示文本即可生成自定义音色。保存音色信息可调用cosyvoice.add_zero_shot_spk
。