CosyVoice语音模型微调实践:数据处理到部署全流程
模型版本选择:CosyVoice与CosyVoice2对比
| 配置项 | CosyVoice | CosyVoice2 |
|---|---|---|
| 采样率 | 22050Hz | 24000Hz |
| 语音令牌数量 | 4096 | 6561 |
| 基础架构 | TransformerLM | Qwen2LM |
| 学习率设置 | 0.001(基础)/1e-5(SFT) | 1e-5 |
| 适用场景 | 通用合成 | 流式合成 |
| 配置文件路径 | examples/libritts/cosyvoice/conf/config_v1.yaml | examples/libritts/cosyvoice2/conf/config_v2.yaml |
版本选择建议
实时语音交互应用建议选择CosyVoice2,支持流式推理配置:
stream_chunk: 25 # 流式块大小(令牌数)
left_context: -1 # 解码上下文范围,负值表示全上下文
离线高质量合成推荐CosyVoice基础版,兼容性更广。
数据处理流程
以LibriTTS数据集为例的操作流程:
# 数据集下载
bash scripts/fetch_dataset.sh /your/data/dir www.openslr.org/60 train-set
# 格式转换
python scripts/convert_format.py \
--input_dir /source/LibriTTS \
--output_dir /processed/train-set
生成关键文件:音频路径列表、文本内容、语音片段映射关系。
特征提取操作
提取说话人特征:
python tools/get_speaker_vectors.py \
--data_dir /processed/train-set \
--model_file pretrained/campplus.onnx
提取语音令牌:
# CosyVoice版本
python tools/get_audio_tokens.py \
--data_path /processed/train-set \
--token_model pretrained/tokenizer_v1.onnx
# CosyVoice2版本
python tools/get_audio_tokens.py \
--data_path /processed/train-set \
--token_model pretrained/tokenizer_v2.onnx
训练数据格式化
转换为Parquet格式:
python tools/create_parquet_sets.py \
--samples_per_file 1000 \
--worker_count 8 \
--source_dir /processed/train-set \
--target_dir /parquet/train-set
模型训练执行
训练配置示例:
processing_steps: [
!ref ,
!ref ,
!ref ,
!ref ,
!ref ,
!ref ,
!ref ,
!ref ,
!ref ,
!ref
]
启动训练命令:
torchrun --nproc_per_node=4 \
voice_model/trainer.py \
--engine ddp \
--config conf/train_v2.yaml \
--train_set /parquet/train.list \
--val_set /parquet/val.list \
--pretrain_path /models/base_model \
--model_component language_model \
--checkpoint /models/lm_checkpoint.pt \
--output_dir /training_output \
--use_mixed_precision
模型优化与导出
权重平均优化:
python model_tools/average_weights.py \
--output_model /optimized/lm.pt \
--model_dir /training_output \
--snapshot_count 5 \
--select_best
导出部署格式:
# 导出JIT格式
python export/convert_jit.py --model_dir /optimized
# 导出ONNX格式
python export/convert_onnx.py --model_dir /optimized
部署实施方案
主要部署方式:
- Web交互界面
- API服务接口
- Triton推理服务器
命令行合成示例:
python voice_synth/cli/synthesize.py \
--model_path /deploy_models/cosyvoice2 \
--text "语音合成测试内容" \
--output test_audio.wav \
--speaker 5
常见问题处理
训练过拟合:降低学习率,增强数据过滤
推理延迟:调整流式参数:
stream_chunk: 50
inference_speed: 0.5
音质问题:验证数据预处理流程,增加训练轮次