通义实验室在前期的工作中提出了基于监督离散语音标记的多语言语音合成模型CosyVoice。通过使用两种流行的生成模型:语言模型 (LM) 和流匹配进行渐进式语义解码,CosyVoice 在语音语境学习中实现了较高的韵律自然度、内容一致性和说话人相似性。近年来,多模态大型语言模型 (LLM) 取得了重大进展,其中语音合成的响应延迟和实时性对交互体验至关重要。因此,本文提出了一种改进的流式语音合成模型CosyVoice 2,并进行了全面而系统的优化。
首先,引入有限标量量化来提高语音tokens的codebase利用率。其次,简化了文本-语音 LM 的模型架构,以便可以直接使用预训练的 LLM 作为主干。此外,设计了一个块感知的因果流匹配模型以适应不同的合成场景。因此,可以在单个模型中执行流式和非流式合成。通过在大型多语言数据集上进行训练,CosyVoice 2 实现了与人类相当的合成质量,并且具有非常低的响应延迟和实时性。
小编敲黑板,模型特点:
超低延迟:CosyVoice 2.0引入了离线与流式建模相结合的大规模语音生成模型技术,支持双向流式语音合成,首包合成延迟可达150ms,且音质损失极小。
高准确率:与CosyVoice 1.0相比,CosyVoice 2.0将合成音频的发音错误率降低了30%-50%,在Seed-TTS评估集的硬测试集上实现了目前最低的字符错误率。
稳定性强:CosyVoice 2.0 保证了零样本语音生成和跨语言语音合成的音色一致性,跨语言合成性能较 1.0 版本有显著提升。
自然体验:CosyVoice 2.0 合成音频的韵律、音质、情感对齐等均较 1.0 版本有大幅提升,MOS 评分由 5.4 提升至 5.53(商用大规模语音合成模型可比得分 5.52)。此外,CosyVoice 2.0 升级了可控音频生成能力,支持更精细的情感控制和方言口音调整。
模型链接:
https://modelscope.cn/models/iic/CosyVoice2-0.5B
体验链接:
https://modelscope.cn/studios/iic/CosyVoice2-0.5B
零样本上下文生成
Prompt
Generated 1
Generated 2
跨语言上下文生成
ZH
EN
JP
KO
混合语言上下文生成
Prompt
CosyVoice1.0
CosyVoice2.0
更多案例:
https://funaudiollm.github.io/cosyvoice2/
模型下载:
cli下载
modelscope download --model iic/CosyVoice2-0.5B
python SDK下载
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('iic/CosyVoice2-0.5B')
模型推理
clone代码repo
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
# If you failed to clone submodule due to network failures, please run following command until success
cd CosyVoice
git submodule update --init --recursive
pip install -r requirements.txt
下载模型到对应路径
from modelscope import snapshot_download
snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
指定python路径
export PYTHONPATH=third_party/Matcha-TTS
CosyVoice2模型推理
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=True, load_onnx=False, load_trt=False)
# zero_shot usage
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)
# fine grained control, for supported control, check cosyvoice/tokenizer/tokenizer.py#L248
prompt_speech_16k = load_wav('zero_shot_prompt.wav', 16000)
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)
# instruct usage
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)
模型WebUI部署
clone创空间代码
git clone https://www.modelscope.cn/studios/iic/CosyVoice2-0.5B.git
安装依赖并推理
cd CosyVoice2-0.5B
pip install -r requirements.txt
python app.py
页面示例
点击阅读原文,即可跳转模型链接~