如何提升语音转写准确率?
1. 研究背景
无论是使用开源的ASR还是商业收费的ASR都面临着一个问题,就是识别某些领域内容的语音的时候不准确,比如在识别一些关于AI和云计算相关的一些名词的时候,市面上的ASR都是不能准确识别。比如当用户讲"你觉得ChatGPT和DeepSeek-R1哪个更好用?"。ASR识别出来的肯定是不准确的,在面对这些新兴的名词或者是特定领域的名词时,我们只能通过微调训练模型才能解决这个问题。
2. ASR微调
这里基于阿里巴巴开源的ASR模型SenseVoiceSmall来微调训练,该模型支持多语种,支持普通话,粤语,英语,日语和韩语。
首先我们需要准备好要训练的内容。我们首先要通过SenseVoiceSmall模型识别一遍,找出对哪些名词识别不准,那么我们获取到这些不准的名词后造句子,可以利用 DeepSeek-R1 帮忙造句,然后根据句子朗读并录制音频用于训练。
准备的文件有 train_text.txt 和 train_wav.scp 其中 train_text.txt 保存的是每条录音对应的文字内容,而 train_wav.scp 保存的是每条录音的地址。
train_text.txt 格式如下:
train_wav.scp 格式如下:
然后我们就可以使用官方提供的命令生成 jsonl 文件,同理 val 也需要生成 jsonl 文件。
3. 训练
做好上面工作后,我们就可以进行微调训练了。
执行官方提供的脚本 bash finetune.sh 开始训练。
如果想要看训练的 loss 曲线变化,我们需要启动 tensorboard 进程,并且指定正确的 tensorboard 日志路径。
训练的 loss 曲线变化如下图所示:
从图中可以看到这个 loss 下降了很多,并且最终模型收敛了。
4. 评估字错率
训练前模型的字错率是 25.5%,如下图所示:
训练后的模型字错率是 1.8%,如下图所示:
从上面两张图片就能明显对比出来,训练是有效果的。有些名词在训练之前不能准确识别,在训练之后可以准确识别。
5. 其它
更多 ASR 内容欢迎关注我,欢迎访问我的[个人博客]()。
如有需要微调提升 ASR 识别准确率也欢迎在我的个人博客首页中找到我的联系方式。