微信扫码
添加专属顾问
我要投稿
探索最新开源TTS技术,体验语音合成的革命性进步。 核心内容: 1. CosyVoice 2.0的多语言和方言支持能力 2. 零样本声音克隆与跨语言混合语音合成 3. 快速响应与实时交互的双向流式处理
混迹技术圈有些年头了,平时就喜欢捣鼓各种新鲜玩意儿,特别是那些能改变我们生活、提升效率的技术。我总觉得,光会用还不够,得琢磨它背后是咋实现的,能用它来解决点啥实际问题,这样才带劲。
最近啊,语音技术是越来越火了,从智能音箱到各种 App 的语音助手,甚至虚拟人直播,都离不开一个核心技术——语音合成,也就是 TTS(Text-to-Speech)。让机器像人一样自然地说话,这事儿听起来简单,做起来可不容易。
市面上 TTS 工具不少,但要么效果差点意思,要么就是闭源收费,想自己定制或者深入研究就比较麻烦。不过,就在最近,我发现 FunAudioLLM 团队开源了一个叫 CosyVoice 的项目,特别是他们刚发布的 CosyVoice 2.0[1] 版本,简直让我眼前一亮,忍不住想跟大家唠唠。
这玩意儿可不是一般的 TTS,它不仅效果惊人,而且功能强大到有点“离谱”,关键还是开源的!Apache-2.0 许可,意味着你可以自由地使用、修改和分发,对于我们开发者来说,这简直是福音啊!
咱们直接上干货,看看 CosyVoice 2.0 都有哪些让人惊艳的本事:
虽然官方文档没深入讲底层架构,但从一些技术名词(比如 Flow matching、LLM、KV cache)和项目依赖(FunASR、Matcha-TTS 等)能看出,CosyVoice 应该也是融合了当前 AI 领域比较前沿的技术。
你给它文字和一段你的声音样本,它就能“看文说话”,而且是用你的声音说出来。
光说不练假把式。CosyVoice 团队很贴心地提供了详细的教程和预训练模型,上手不算复杂。
第一步:把代码“拉”下来
# 克隆主仓库,记得带 --recursive 把子模块也一起下了
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
# 如果子模块下载失败(网络原因你懂的),cd 到 CosyVoice 目录多试几次
cd CosyVoice
git submodule update --init --recursive
第二步:创建 Python 环境并安装依赖
官方推荐用 Conda,比较省事儿,能解决一些跨平台的依赖问题。
# 创建一个叫 cosyvoice 的新环境,用 Python 3.10
conda create -n cosyvoice -y python=3.10
# 激活环境
conda activate cosyvoice
# 安装 pynini (WeTextProcessing 需要),用 conda 安装比较稳
conda install -y -c conda-forge pynini==2.1.5
# 安装其他 Python 依赖,用了阿里云的镜像会快很多
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
# 如果后面运行遇到 sox 相关报错,按系统装一下 sox
# Ubuntu/Debian:
# sudo apt-get update && sudo apt-get install sox libsox-dev
# CentOS:
# sudo yum install sox sox-devel
第三步:下载预训练模型
模型文件比较大,官方提供了两种下载方式:ModelScope SDK 和 Git LFS。强烈推荐用 ModelScope SDK,国内下载速度快,管理也方便。
# 在 Python 环境里运行这段代码来下载模型
from modelscope import snapshot_download
# 推荐下载这个效果最好的 CosyVoice 2.0 模型 (0.5B参数)
snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
# 其他模型按需下载 (比如1.0版本、针对特定任务微调的版本等)
# 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')
# 还需要下载一个文本前端处理的资源 (可选,不装会用 WeTextProcessing)
snapshot_download('iic/CosyVoice-ttsfrd', local_dir='pretrained_models/CosyVoice-ttsfrd')
(可选) 如果你想用效果更好的 ttsfrd
做文本正则化,可以进入 pretrained_models/CosyVoice-ttsfrd/
目录,解压 resource.zip
并安装对应的 .whl
包。不过不装也能用,会自动用 WeTextProcessing
。
第四步:跑个 Demo 感受一下
官方提供了很简洁的 Python 调用方式。我们来试试最酷的 Zero-Shot 功能:
import sys
# 确保能找到子模块里的代码
sys.path.append('third_party/Matcha-TTS')
from cosyvoice.cli.cosyvoice import CosyVoice2 # 注意是 CosyVoice2
from cosyvoice.utils.file_utils import load_wav
import torchaudio
# --- CosyVoice 2.0 使用示例 ---
# 加载模型,这里用了推荐的 CosyVoice2-0.5B
# 参数可以调:load_jit/load_trt 控制是否加载优化后的模型,fp16 半精度加速,use_flow_cache 也是加速选项
cosyvoice = CosyVoice2('pretrained_models/CosyVoice2-0.5B', load_jit=False, load_trt=False, fp16=False, use_flow_cache=False)
# 准备一段提示音 (Prompt Speech),就是你想克隆的声音样本
# 需要是 16kHz 采样率的 WAV 文件,可以用自己的录音替换 './asset/zero_shot_prompt.wav'
prompt_speech_16k = load_wav('./asset/zero_shot_prompt.wav', 16000)
# 要合成的文本
text_to_speak = '收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。'
# 另一段参考文本 (影响韵律风格)
prompt_text = '希望你以后能够做的比我还好呦。'
print(f"开始使用提示音 '{'./asset/zero_shot_prompt.wav'}' 合成文本...")
# 调用 zero_shot 推理
# stream=False 表示非流式,一次性生成整段语音
# 返回的是一个生成器,可能有多段结果(比如根据标点自动切分了)
for i, output inenumerate(cosyvoice.inference_zero_shot(text_to_speak, prompt_text, prompt_speech_16k, stream=False)):
# 获取合成的语音数据 (PyTorch Tensor)
tts_speech = output['tts_speech']
# 保存成 WAV 文件
output_filename = f'zero_shot_output_{i}.wav'
torchaudio.save(output_filename, tts_speech, cosyvoice.sample_rate)
print(f"成功合成第 {i+1} 段语音,已保存为 {output_filename}")
print("Zero-shot 合成完成!")
# --- 如果想试试方言或特殊效果 (Instruct 模式) ---
# text_instruct = '收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。'
# instruction = '用四川话说这句话' # 或者 '用粤语说这句话', '用开心的语气说' 等
# for i, output in enumerate(cosyvoice.inference_instruct2(text_instruct, instruction, prompt_speech_16k, stream=False)):
# torchaudio.save(f'instruct_output_{i}.wav', output['tts_speech'], cosyvoice.sample_rate)
# print(f"成功合成 Instruct 模式语音,已保存为 instruct_output_{i}.wav")
运行这段代码,如果一切顺利,你就能在当前目录下找到 zero_shot_output_0.wav
文件,打开听听,是不是音色和你提供的 zero_shot_prompt.wav
很像?
还有 Web UI 可以玩!
如果你不想写代码,只想快速体验,官方还提供了一个 Web 界面。运行下面的命令启动(默认使用 CosyVoice-300M 模型,你可以改 --model_dir
参数用 2.0 的模型):
python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice2-0.5B
然后在浏览器打开 http://localhost:50000
就能玩耍了。
市面上 TTS 方案不少,简单对比下:
多语言支持 | |||
方言支持 | |||
Zero-Shot 克隆 | |||
低延迟流式 | |||
开源与许可 | |||
成本 | |||
定制化能力 | |||
易用性 | |||
效果自然度 |
简单来说:
对于想深入研究语音技术、需要高度定制化、或者想在自己产品里集成高质量 TTS 又不想受制于商业 API 的开发者和团队来说,CosyVoice 2.0 绝对是一个值得重点关注和尝试的选择。
看了一下项目的 Roadmap,团队还在持续迭代,计划推出更高压缩率的模型(25Hz)、声音转换模型、优化推理稳定性等等。项目在 GitHub 上也相当活跃(12.8k Star 了!),还有官方钉钉群可以交流讨论。
如果你对语音合成感兴趣,或者正在为你的项目寻找一个强大、灵活、效果出众的 TTS 解决方案,强烈建议去 GitHub (搜索 FunAudioLLM/CosyVoice
) 看看 CosyVoice 2.0。亲自跑一跑 Demo,听听效果,或许你也会像我一样,被它的能力所惊艳!
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-15
Spring AI 1.0.0 M7 发布!很炸裂!!
2025-04-15
OpenManus初体验,整合千问大模型Qwen/QwQ-32B
2025-04-15
小红书开源的中文语音转文字FireRedASR:一键整合包带webui、API
2025-04-15
MacOS 的 AI Agent 新星,本地沙盒驱动,解锁 macOS 操作新体验!
2025-04-15
万万没想到有这么一天,Open智谱狙击了Close OpenAI
2025-04-15
智谱开源 9B/32B 系列模型,上线 Z.ai
2025-04-15
比R1快8倍,智谱开源GLM-Z1系列,实测 Agentic AI 也能极速深度推理!
2025-04-15
手搓Manus?MCP 原理解析与MCP Client实践
2025-01-01
2024-07-25
2025-01-21
2024-05-06
2024-09-20
2024-07-20
2024-06-12
2024-07-11
2024-08-13
2024-12-26
2025-04-15
2025-04-13
2025-04-10
2025-04-07
2025-04-03
2025-04-03
2025-04-03
2025-04-01