0. 环境搭建

安装funasr, modelscope, torch, torchaudio

pip install funasr modelscope torch torchaudio

1. 数据准备

使用 DeepSeek-R1 大模型生成关于 AI 和云计算相关的句子,根据句子自己录制高质量无损音频,要求音频采样率大于等于16k,单通道,pcm_s16le 编码的 wav 音频。

需要准备两个文本文件,一个是标注文件,一个是音频路径文件。

标注文件 train_text.txt 格式如下:注意标注文本中不带标点符号。

dhfajks234123 你用过 DeepSeek-R1 大模型吗
bfdafkfkf1234 你觉得通义千问和 DeepSeek-R1 哪个更好用呢

音频路径文件 train_wav.scp 格式如下:注意音频一定要和标注文本对应上。

dhfajks234123 /root/autodl-tmp/data/audio/dhfajks234123.wav
bfdafkfkf1234 /root/autodl-tmp/data/audio/bfdafkfkf1234.wav

除了训练集外,还需要准备验证集和测试集,格式一样。

2. 生成jsonl文件

根据 train_text.txt 和 train_wav.scp 两个文件生成 jsonl 文件,执行下面命令生成。

sensevoice2jsonl \
++scp_file_list='["../../../data/list/train_wav.scp", "../../../data/list/train_text.txt"]' \
++data_type_list='["source", "target"]' \
++jsonl_file_out="../../../data/list/train.jsonl" \
++model_dir='iic/SenseVoiceSmall'

3. 训练

bash finetune.sh

4. 查看loss曲线

执行下面命令启动 tensorboard 进程

ps -ef | grep tensorboard | awk '{print $2}' | xargs kill -9
nohup tensorboard --port 6007 --logdir /path/to/your/tf-logs/direction > tensorboard.log 2>&1 &

训练 loss 曲线如下图所示

image-20250419041826891

可以看到这个 loss 值很接近0,下降的很明显,说明模型有学习到内容。

5. 评估字错率

5.1 训练前字错率

image-20250419051449840

5.2. 训练后字错率

image-20250419051515741

经过训练前后字错率对比发现,训练后的字错率下降了大概23.7%,说明训练是有效果的。

6. 应用

把训练好后的模型 model.pt 文件替换官方默认的 model.pt 文件。

集成到 ASR_LLM_TTS 项目中,训练之前的效果如下:
image-20250419045800349

训练之后的效果如下:

image-20250419051331885

Q.E.D.


热爱生活,热爱程序