一、背景
公司前同事留下了一套语音识别项目,内部使用百度PaddleSpeech。在项目验收的时候发现无法识别大音频文件,但是可以识别小音频文件。
这套项目是通过python调用的百度PaddleSpeech,然后提供了restful接口,然后java项目可以通过接口来进行语音识别。
二、解决方案
我看了一下前同事留下的代码,发现报错信息来自百度PaddleSpeech内部,所以修改源代码这条路基本无解。
我通过互联网搜索到"根据百度AI开放平台的错误码汇总,如果音频时长超过60秒,将会导致错误。"
基于上述情况,我准备调用java代码操作ffmpeg工具将大音频文件进行分割,然后针对小音频逐个识别,最终拼接识别结果即可。
我切分的标准是50s一段,基本都是可以识别出来的。
拓展:
百度PaddleSpeech语音识别目前格式仅支持pcm、wav或amr,我们常见一点的是wav格式。由于不支持mp3格式,如果想识别mp3格式文件内容,也可以使用ffmpeg进行文件格式转换,转换完成之后就可以识别了