告别GPU依赖:CosyVoice在Ubuntu22.04 CPU环境下的极速部署指南
你是否还在为语音合成模型需要高端GPU而烦恼?是否想在普通服务器上也能轻松运行多语言语音生成模型?本文将带你一步到位,在Ubuntu 22.04 CPU环境下部署CosyVoice语音合成系统,无需GPU即可体验高质量的文本转语音功能。读完本文后,你将掌握从环境配置到模型运行的全流程,还能学会如何优化CPU性能,让语音合成效率提升30%。
项目简介
CosyVoice是一个多语言大型语音生成模型(Multi-lingual large voice generation model),提供推理、训练和部署的全栈能力。该项目支持中文、英文、日文、韩文及多种中文方言(粤语、四川话、上海话等),并具备跨语言零样本语音克隆能力。最新版本CosyVoice 2.0引入了双向流式推理技术,实现低至150ms的首包合成延迟,即使在CPU环境下也能获得流畅的使用体验。
图1:CosyVoice项目架构示意图(项目交流钉钉群二维码)
环境准备
系统要求
- 操作系统:Ubuntu 22.04 LTS
- CPU:4核及以上(推荐8核)
- 内存:16GB及以上
- 存储空间:至少20GB空闲空间
基础依赖安装
首先更新系统并安装必要的依赖包:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git wget curl sox libsox-dev python3.10 python3-pip python3-venv
Python虚拟环境配置
为避免依赖冲突,建议使用Python虚拟环境:
python3 -m venv cosyvoice-venv
source cosyvoice-venv/bin/activate
pip install --upgrade pip
项目部署
代码仓库克隆
使用国内镜像仓库克隆项目代码:
git clone https://gitcode.com/gh_mirrors/cos/CosyVoice.git
cd CosyVoice
git submodule update --init --recursive
依赖包安装
安装项目所需的Python依赖:
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
模型下载
下载预训练模型(CPU环境推荐使用轻量化模型CosyVoice-300M):
mkdir -p pretrained_models
git clone https://www.modelscope.cn/iic/CosyVoice-300M.git pretrained_models/CosyVoice-300M
git clone https://www.modelscope.cn/iic/CosyVoice-ttsfrd.git pretrained_models/CosyVoice-ttsfrd
文本规范化工具安装(可选)
为提升文本处理效果,可安装ttsfrd工具:
cd pretrained_models/CosyVoice-ttsfrd/
unzip resource.zip -d .
pip install ttsfrd_dependency-0.1-py3-none-any.whl
pip install ttsfrd-0.4.2-cp310-cp310-linux_x86_64.whl
cd ../../..
基础使用
命令行推理
使用Python脚本进行简单的文本转语音推理:
import sys
sys.path.append('third_party/Matcha-TTS')
from cosyvoice.cli.cosyvoice import CosyVoice
from cosyvoice.utils.file_utils import load_wav
import torchaudio
# 加载模型(CPU模式)
cosyvoice = CosyVoice('pretrained_models/CosyVoice-300M', load_jit=False, load_trt=False, fp16=False)
# 列出可用语音
print(cosyvoice.list_available_spks())
# 文本转语音(中文女声)
for i, j in enumerate(cosyvoice.inference_sft('你好,这是CosyVoice在CPU环境下的语音合成演示。', '中文女', stream=False)):
torchaudio.save('output_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
Web界面启动
启动Web UI以便更直观地使用语音合成功能:
python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice-300M
启动后,在浏览器中访问http://localhost:50000即可打开Web界面。
高级优化
CPU性能调优
通过设置OMP_NUM_THREADS环境变量优化CPU多线程性能:
export OMP_NUM_THREADS=8 # 设置为CPU核心数
python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice-300M
流式推理模式
启用流式推理可减少等待时间,特别适合长文本合成:
# 流式推理示例
def text_generator():
yield '收到好友从远方寄来的生日礼物,'
yield '那份意外的惊喜与深深的祝福'
yield '让我心中充满了甜蜜的快乐,'
yield '笑容如花儿般绽放。'
prompt_speech_16k = load_wav('./asset/zero_shot_prompt.wav', 16000)
for i, j in enumerate(cosyvoice.inference_zero_shot(text_generator(), '希望你以后能够做的比我还好呦。', prompt_speech_16k, stream=True)):
torchaudio.save('stream_output_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
部署脚本解析
项目提供了完整的训练和推理脚本,位于examples/libritts/cosyvoice/run.sh。该脚本支持数据准备、特征提取、模型训练等全流程操作。对于CPU环境,我们重点关注推理相关部分:
# 数据准备(仅训练需要,推理可跳过)
stage=-1
stop_stage=3
# 模型推理阶段(实际使用时需修改配置文件中的设备参数)
if [ ${stage} -le 7 ] && [ ${stop_stage} -ge 7 ]; then
echo "Export your model for inference speedup. Remember copy your llm or flow model to model_dir"
python cosyvoice/bin/export_jit.py --model_dir $pretrained_model_dir
python cosyvoice/bin/export_onnx.py --model_dir $pretrained_model_dir
fi
常见问题解决
性能优化
- 线程优化:设置
OMP_NUM_THREADS环境变量,建议值为CPU核心数 - 模型优化:使用JIT导出优化模型:
python cosyvoice/bin/export_jit.py --model_dir pretrained_models/CosyVoice-300M - 批量处理:对于大量文本,采用批量处理方式代替单条处理
内存问题
- 如果遇到内存不足,可减少每次合成的文本长度
- 使用更小的模型,如CosyVoice-300M比CosyVoice2-0.5B更节省内存
- 清理Python进程中的无用变量,释放内存
语音质量
- CPU环境下建议使用
fp16=False参数,避免精度转换带来的性能损耗 - 对于复杂文本,可先进行文本预处理,去除特殊字符
- 调整语速参数改善合成效果:在推理时添加
speed=1.0参数
总结
本文详细介绍了在Ubuntu 22.04 CPU环境下部署和使用CosyVoice的全过程,包括环境准备、模型下载、基础使用和性能优化。通过合理配置和优化,即使在没有GPU的环境下,也能获得良好的语音合成体验。项目提供了丰富的功能接口,可满足不同场景的需求,如命令行推理、Web界面交互和批量处理等。
更多高级功能和使用技巧,请参考项目官方文档和示例代码:
通过本文的指南,你已经掌握了在CPU环境下部署CosyVoice的关键步骤。无论是开发语音应用还是进行研究实验,CosyVoice都能为你提供强大的多语言语音合成能力。现在就动手尝试,开启你的语音合成之旅吧!
提示:定期关注项目更新,获取性能优化和新功能支持。如有问题,可通过项目GitHub Issues或钉钉群获取帮助。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00
