0. 背景
近期有一位公司的人找到我,让我给他训练ASR语音识别的模型,使用的是阿里开源的funasr中的paraformer-zh模型,改模型可以把通用的普通话通话录音转为文字内容,但是在面临一些方言口音的时候,或者是特定领域的时候,往往会识别不够准确,那么就需要微调训练。
这篇文章主要讲解我使用funasr做paraformer-zh模型训练时遇到的困难,同时也适用训练流式的模型,即paraformer-zh-streaming模型。
1. 训练
首先我们需要准备好训练的数据集,需要主要训练的音频采样率最低16k,并且编码为pcm_s16le单声道的wav音频。注意训练一定不要使用有损压缩后的音频,比如使用mp3格式的音频,这样训练出来的模型难以保证效果。
在这里使用的数据集是阿里提供的几条音频,并且含有对应的标注。同时需要格式上的要求,如果你训练的是paraformer的模型那么只需要txt和scp文件即可,然后jsonl文件会根据这两个文件自动生成。
txt的格式如下:
audioId content
scp文件的格式如下:
audioId audioPath
具体可以看我往期的一篇文件:训练funasr实时语音识别模型
上面的这篇文章中详细描述了如何准备训练数据集,有需要的同学可以去查阅。
2. 报错TypeError: device.init() missing 1 required positional argument: 'device’的解决方法
通过上面的准备,有很多人在执行sh脚本进行训练的时候会看到TypeError: device.init() missing 1 required positional argument: 'device’的报错信息,这个猜测是funasr更新版本导致的。我年前给别人付费做训练演示的时候还是可以的,然后过完年后,重新拉取的funasr代码,重新训练,发现这个报错,当时也找了很久原因。
还有就是官方默认是使用两张显卡训练的,如果你是一张显卡,那么一定要记得修改为0,而不是1,因为我们知道数组的下标都是从0开始的,而不是从1开始的。
具体如何解决,欢迎访问报错device.init() missing解决方法