yeyupiaoling / PPASR

基于PaddlePaddle实现端到端中文语音识别,从入门到实战,超简单的入门案例,超实用的企业项目。支持当前最流行的DeepSpeech2、Conformer、Squeezeformer模型
Apache License 2.0
797 stars 131 forks source link

音频预处理方法linear mfcc fbank三种 有优劣么 #102

Closed a00147600 closed 1 year ago

a00147600 commented 1 year ago

因为目前模型对不同录音识别效果时好时不好 想寻求不同的改进方法。

yeyupiaoling commented 1 year ago

这三个预处理方式都差不多,实测Linear会好一点点。

提供准确率方法:

a00147600 commented 1 year ago

这三个预处理方式都差不多,实测Linear会好一点点。

提供准确率方法:

  • 使用集束搜索解码器ctc_beam_search
  • 使用适合自己的数据集训练
  • 使用更大的模型

谢谢回答。目前我已经用了ctc_beam_search 确实比贪婪解码效果要好。数据集也确实是自己的。更大的模型是指更大的训练集还是deepspeech2_big模型呢?我的问题主要是集中在同音字等处理上 。 举个例子:录音上的部分“微信” 会被 识别为 “问一下”等这样的问题较多。

yeyupiaoling commented 1 year ago

是指deepspeech2_big模型,你的数据多吗?不多可以合成一批作为训练数据,

a00147600 commented 1 year ago

是指deepspeech2_big模型,你的数据多吗?不多可以合成一批作为训练数据,

数据量是足够的。我担心过大的数据会导致之前的内存溢出 又不得不调低我的batch_size。我目前这轮的deepspeech2_big模型在11轮的cer和loss居然下降的不明显了。

yeyupiaoling commented 1 year ago

你的batch_size是多少? deepspeech2_big模型在10个epoch之后收敛比较好了,下降不明显是正常,你的字错率是多少? 你的数据量足够,是怎么够法?

a00147600 commented 1 year ago

你的batch_size是多少? deepspeech2_big模型在10个epoch之后收敛比较好了,下降不明显是正常,你的字错率是多少? 你的数据量足够,是怎么够法?

之前内存不足 所以改了batch_size为8。数据量本次是160小时约16w条,当然可以增加的。字错率0.38 add_arg('batch_size', int, 8, '训练的批量大小') 顺带一提 我的识别效果来看 alpha beta这么改可能更符合生活中的语速逻辑 add_arg('alpha', float, 1.1, "集束搜索解码相关参数,LM系数") add_arg('beta', float, 2.0, "集束搜索解码相关参数,WC系数")

yeyupiaoling commented 1 year ago

batch_size改了,学习率也要改。

a00147600 commented 1 year ago

batch_size改了,学习率也要改。

啊这 请大佬指出改成多少合适。是不是batch_size越小 学习率要越高呢?

yeyupiaoling commented 1 year ago

按batch_size缩小倍数减小

a00147600 commented 1 year ago

按batch_size缩小倍数减小

这边还想问大佬一个问题。我把以往的最优best_model作为参数pretrained_model。此时进行新一轮数据第一轮epoch1进行训练。学习率或者别的什么东西需要更改么?

yeyupiaoling commented 1 year ago

不用,作为预训练模型或者恢复模型都不需要的。

a00147600 commented 1 year ago

不用,作为预训练模型或者恢复模型都不需要的。

还有个事情哈。原数据集的alpha beta的正确性会较大影响结果。教程中tools/tune.py执行的速度和结果让我感到头大。根据我自己的测试。alpha越小 识别的时间间隔会越小,在我的录音中的人说话语速较快,在alpha适当减少后识别效果更好。但是beta的系数我还不明白。 add_arg('alpha', float, 2.2, '集束搜索的LM系数') add_arg('beta', float, 4.3, '集束搜索的WC系数')

yeyupiaoling commented 1 year ago

影响解码速度的应该是beam_size(搜索宽度),你手动调整是不可能的,还有让tun.py执行,太久,可以减小beam_size