欢迎光临散文网 会员登陆 & 注册

《WeNet语音识别实战》答疑回顾(二)

2022-07-26 22:31 作者:语音之家  | 我要投稿



问 1:这个热词文件,有行数限制么?比如:3万行,可以么?

答:没有限制,但是多了效果不一定好。


问 2:热词输出带上 context 的标志了,是不是通过参数可以控制?还是要改下代码,去掉?

答:可以看一下 decoder/context_graph.cc
后续新版的热词不会更改识别结果,而是返回识别结果的同时,额外返回识别到的热词列表,可以关注一下。


问 3:我们测试websocket server 在高并发连接情况下出现连接慢的情况,这个是同时100个ws连接下出现的。这个有什么好的解决办法吗?

答:可以尝试一下grpc。


问 4:目前如果用WeNet,如果要使用一台服务器支持100个并发,这样需要什么要配置才能满足要求?

答:16c应该就能满足,在虚拟机上32c可以实现,实时内存3G左右,如果rtf 按 0.2 算的话,一核能搞定 5 并发,可以具体测一下 rtf。


问 5:conf中shuffle和sort为什么不冲突,而且注解说sort size必须小于shuffle size

答:目的不一样,sort目的是使一个batch中的wav数据长度一致。shuffle是打乱整个数据集中数据的顺序。


问 6:sort是让一个batch内的音频按顺序排列吗?

答:通过排序使batch中音频数据长度差距不大。


问 7:最后一个模型量化,在x86上也是有必要的吗?速度会提升多少?

答:x86略微改善,android提升两倍。具体RTF实验结果在WeNet第一版本论文中有。


问 8:这里用conv2d做降采样的原理是什么?为什么用两个conv2d,第一次conv2d通道是从1->odim,第二次conv2d从odim->odim?第一次通道数为什么要改变?

答:2d卷积用stride=2,就可以把原来的W*H的输入变为W/2*H/2的输入。就降采样了。

多个通道有多个卷积核,可以处理更多细节。

也可以不变,你就一直用1个channel也行。为啥图像一开始是3个channel,后面channel就变成32或者更大,一个道理。


问 9:实战课程AIshell-1模型训练,到stage4 neural network training训练的时候报了这个runtime 的错,是什么原因?

答:pytorch版本小于1.10.0


问 10:单并发,用的WeNetspeech离线大模型以及libtorch1.10,rescore和search都在500ms+,,为什么这么慢呢?一般TLG有多大呀?语言模型大小会很影响速度的吧?

答:Search很快,rescoring一般100~200ms,WeNetSpeech模型很大,这个时间和机器性能也有关系,语言模型大小不太影响速度。


问 11:aishell example运行stage 4,遇到这个报错,请问是什么问题?

答:使用 pytorch 1.10


问 12:如果想要在WeNet放出来的checkpoint模型u2pp_conformer_exp上增量训练,是要用WeNetspeech/run.sh, 还是可以用aishell/run.sh呢?还是说将下载的ckpt/train.yaml放到WeNetspeech/conf里面,然后跑WeNet speech/run.sh ?

答:都可以,但需要修改配置文件和模型匹配,可能也需要调整学习率等参数,建议尽量使用WeNetspeech对应的脚本。


问 13:模型测试时,使用的average model,这是什么方法?有没有参考资料。

答案:可以参考theoreticalecology.wordpress.com


问 14:我想训中英文混合的模型,是不是multi cn,是最好的模版?

答:multi_cn是将开源的数据集做整合,基于此调试的相关参数达到模型最优。


问 15:WeNetspeech数据集的采集处理脚本代码,有没有开源呢?能否用这个代码自己去采集数据?

答:不开源。


问 16:用了aishell的数据集报这种问题的原因是什么?

答:脚本中的stage0的download_and_untar 里会自动解压,手动下载的数据需要自己解压。


问 17:stage1这个报错是为什么?

sudo了一下,conda,pytorch环境都已经按要求配置好了。

答:错误提示没有这个目录下创建文件的权限,用“sudo chmod -R 777 目录”命令更改文件夹权限。


问 18:想着用自己电脑训模型,理论上可以吗?

答:理论上,pytorch是支持cpu训练的,

把代码的device从gpu改成cpu 除了慢应该是能跑。


问 19:请问cmake -B build的时候报这个错,大家有遇到的吗?

答:请用 msvc,而不是 mingw


问 20:配置了msvc和cmake,但是这里git默认用MinGW64,如何修改?

答:看环境变量的顺序,msvc 的 cl 也要添加到环境变量。


问 21:配置了git config --global http.github.com.proxy 127.0.0.1:10809还是下载不了,是什么原因呢?

答:可以参考github.com/shadowsocks/


问 22:在使用websocket_server_main的时候发现内存会随请求数不断增长,但是当识别任务结束连接断开的时候内存并未被释放,这大概是哪部分代码的引起的呢?

答:不是WeNet的问题,是libtorch和onnx内部的内存管理机制,可以在必要的地方强制free libtorch官方github里有相应issues。


问 23:执行./Debug/decoder_main.exe --help出现这样的错误,说找不到c10.dll,大佬们怎么解决呀?

我把本地的c10.dll放进去又会出现其他dll找不到,而且c10.dll就在build目录下。

答:需要处于 build 目录下。



问 24:单机多卡训练,WeNet的train.py总是在init_process_group就不往前了,是有什么特殊运行方式呢?

答:需要删除 ddp_init


问 25: 想问一下 加语言模型后转译结果都是生僻字,是什么原因呢?

答:检查一下 words.txt,应该用语言模型对应的词典。


《WeNet语音识别实战》答疑回顾(二)的评论 (共 条)

分享到微博请遵守国家法律