Views
No views yet
| Model | Open-Source | Model Size | test-zh CER (%) ↓ | test-zh Speaker Similarity (%) ↑ | test-en WER (%) ↓ | test-en Speaker Similarity (%) ↑ | test-hard CER (%) ↓ | test-hard Speaker Similarity (%) ↑ |
|---|---|---|---|---|---|---|---|---|
| Human | - | - | 1.26 | 75.5 | 2.14 | 73.4 | - | - |
| Seed-TTS | ❌ | - | 1.12 | 79.6 | 2.25 | 76.2 | 7.59 | 77.6 |
| MiniMax-Speech | ❌ | - | 0.83 | 78.3 | 1.65 | 69.2 | - | - |
| F5-TTS | ✅ | 0.3B | 1.52 | 74.1 | 2.00 | 64.7 | 8.67 | 71.3 |
| Spark TTS | ✅ | 0.5B | 1.2 | 66.0 | 1.98 | 57.3 | - | - |
| CosyVoice2 | ✅ | 0.5B | 1.45 | 75.7 | 2.57 | 65.9 | 6.83 | 72.4 |
| FireRedTTS2 | ✅ | 1.5B | 1.14 | 73.2 | 1.95 | 66.5 | - | - |
| Index-TTS2 | ✅ | 1.5B | 1.03 | 76.5 | 2.23 | 70.6 | 7.12 | 75.5 |
| VibeVoice-1.5B | ✅ | 1.5B | 1.16 | 74.4 | 3.04 | 68.9 | - | - |
| VibeVoice-Realtime | ✅ | 0.5B | - | - | 2.05 | 63.3 | - | - |
| HiggsAudio-v2 | ✅ | 3B | 1.50 | 74.0 | 2.44 | 67.7 | - | - |
| VoxCPM | ✅ | 0.5B | 0.93 | 77.2 | 1.85 | 72.9 | 8.87 | 73.0 |
| GLM-TTS | ✅ | 1.5B | 1.03 | 76.1 | - | - | - | - |
| GLM-TTS RL | ✅ | 1.5B | 0.89 | 76.4 | - | - | - | - |
| Fun-CosyVoice3-0.5B-2512 | ✅ | 0.5B | 1.21 | 78.0 | 2.24 | 71.8 | 6.71 | 75.8 |
| Fun-CosyVoice3-0.5B-2512_RL | ✅ | 0.5B | 0.81 | 77.4 | 1.68 | 69.5 | 5.44 | 75.0 |
1git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
2# If you failed to clone the submodule due to network failures, please run the following command until success
3cd CosyVoice
4git submodule update --init --recursive1conda create -n cosyvoice -y python=3.10
2conda activate cosyvoice
3pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
4
5# If you encounter sox compatibility issues
6# ubuntu
7sudo apt-get install sox libsox-dev
8# centos
9sudo yum install sox sox-devel1from modelscope import snapshot_download
2snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
3snapshot_download('iic/CosyVoice-ttsfrd', local_dir='pretrained_models/CosyVoice-ttsfrd')ttsfrd resource and install ttsfrd package for better text normalization performance.ttsfrd package, we will use wetext by default.1cd pretrained_models/CosyVoice-ttsfrd/
2unzip resource.zip -d .
3pip install ttsfrd_dependency-0.1-py3-none-any.whl
4pip install ttsfrd-0.4.2-cp310-cp310-linux_x86_64.whl1import sys
2sys.path.append('third_party/Matcha-TTS')
3from cosyvoice.cli.cosyvoice import AutoModel
4import torchaudio
5
6""" CosyVoice2 Usage, check https://funaudiollm.github.io/cosyvoice2/ for more details
7"""
8cosyvoice = AutoModel(model_dir='pretrained_models/CosyVoice2-0.5B')
9
10# NOTE if you want to reproduce the results on https://funaudiollm.github.io/cosyvoice2, please add text_frontend=False during inference
11# zero_shot usage
12for i, j in enumerate(cosyvoice.inference_zero_shot('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '希望你以后能够做的比我还好呦。', './asset/zero_shot_prompt.wav')):
13 torchaudio.save('zero_shot_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
14
15# save zero_shot spk for future usage
16assert cosyvoice.add_zero_shot_spk('希望你以后能够做的比我还好呦。', './asset/zero_shot_prompt.wav', 'my_zero_shot_spk') is True
17for i, j in enumerate(cosyvoice.inference_zero_shot('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '', '', zero_shot_spk_id='my_zero_shot_spk')):
18 torchaudio.save('zero_shot_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
19cosyvoice.save_spkinfo()
20
21# fine grained control, for supported control, check cosyvoice/tokenizer/tokenizer.py#L248
22for i, j in enumerate(cosyvoice.inference_cross_lingual('在他讲述那个荒诞故事的过程中,他突然[laughter]停下来,因为他自己也被逗笑了[laughter]。', './asset/zero_shot_prompt.wav')):
23 torchaudio.save('fine_grained_control_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
24
25# instruct usage
26for i, j in enumerate(cosyvoice.inference_instruct2('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '用四川话说这句话<|endofprompt|>', './asset/zero_shot_prompt.wav')):
27 torchaudio.save('instruct_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
28
29# bistream usage, you can use generator as input, this is useful when using text llm model as input
30# NOTE you should still have some basic sentence split logic because llm can not handle arbitrary sentence length
31def text_generator():
32 yield '收到好友从远方寄来的生日礼物,'
33 yield '那份意外的惊喜与深深的祝福'
34 yield '让我心中充满了甜蜜的快乐,'
35 yield '笑容如花儿般绽放。'
36for i, j in enumerate(cosyvoice.inference_zero_shot(text_generator(), '希望你以后能够做的比我还好呦。', './asset/zero_shot_prompt.wav', stream=False)):
37 torchaudio.save('zero_shot_bistream_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
1@article{du2024cosyvoice,
2 title={Cosyvoice: A scalable multilingual zero-shot text-to-speech synthesizer based on supervised semantic tokens},
3 author={Du, Zhihao and Chen, Qian and Zhang, Shiliang and Hu, Kai and Lu, Heng and Yang, Yexin and Hu, Hangrui and Zheng, Siqi and Gu, Yue and Ma, Ziyang and others},
4 journal={arXiv preprint arXiv:2407.05407},
5 year={2024}
6}
7
8@article{du2024cosyvoice,
9 title={Cosyvoice 2: Scalable streaming speech synthesis with large language models},
10 author={Du, Zhihao and Wang, Yuxuan and Chen, Qian and Shi, Xian and Lv, Xiang and Zhao, Tianyu and Gao, Zhifu and Yang, Yexin and Gao, Changfeng and Wang, Hui and others},
11 journal={arXiv preprint arXiv:2412.10117},
12 year={2024}
13}
14
15@article{du2025cosyvoice,
16 title={CosyVoice 3: Towards In-the-wild Speech Generation via Scaling-up and Post-training},
17 author={Du, Zhihao and Gao, Changfeng and Wang, Yuxuan and Yu, Fan and Zhao, Tianyu and Wang, Hao and Lv, Xiang and Wang, Hui and Shi, Xian and An, Keyu and others},
18 journal={arXiv preprint arXiv:2505.17589},
19 year={2025}
20}
21
22@inproceedings{lyu2025build,
23 title={Build LLM-Based Zero-Shot Streaming TTS System with Cosyvoice},
24 author={Lyu, Xiang and Wang, Yuxuan and Zhao, Tianyu and Wang, Hao and Liu, Huadai and Du, Zhihao},
25 booktitle={ICASSP 2025-2025 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
26 pages={1--2},
27 year={2025},
28 organization={IEEE}
29}