chenkui164 / FastASR

这是一个用C++实现ASR推理的项目,它依赖很少,安装也很简单,推理速度很快,在树莓派4B等ARM平台也可以流畅的运行。 支持的模型是由Google的Transformer模型中优化而来,数据集是开源wenetspeech(10000+小时)或阿里私有数据集(60000+小时), 所以识别效果也很好,可以媲美许多商用的ASR软件。
Apache License 2.0
482 stars 74 forks source link

从油管下载的wav文件识别效果不佳 #68

Closed JanusTida closed 1 year ago

JanusTida commented 1 year ago

我使用了油管上的一个中文视频,用ffmpeg将音频从其中分离出来导出成wav.但是识别效果不理想,是采样率有问题吗?

https://github.com/chenkui164/FastASR/assets/29449156/f1ec2005-aadd-40dc-9a68-3904e68cfdc7

这是下载下来的原视频,因为github只能上传mp4文件,所以我直接上传了mp4文件,可使用如下命令将其转化为wav文件(需安装ffmpeg): ./ffmpeg -i .\1.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 -b:a 128k 1.wav 非常期待您的帮助

csukuangfj commented 1 year ago

但是识别效果不理想,是采样率有问题吗?

至少有3个问题,其中,有两个是致命的

  1. -ar 44100 需要改成 -ar 16000
  2. -ac 2 需要改成 -ac 1

第3个问题是,你选择了 ffmpeg 这个工具。它会在 wave header 44 字节后面,再加一些 metadata, 这些 metadata 被当作了 audio samples (至少目前代码是这样处理的)。


你把前面两个 fix 了,应该可以看到识别结果。第三个不是那么致命,但也是不完美。

JanusTida commented 1 year ago

十分感谢大佬的帮助,问题完美解决!第三个问题确实不受影响。-ac这个确实是我没有理解参数的含义导致的。另外采样率这个要求一般人可能不太容易注意到,可以考虑把它加到ReadMe中。

chenkui164 commented 1 year ago

可以试试sherpa-ncnnsherpa-onnx,里面有最先进的模型,而且支持会更好 @JanusTida