CMU Sphinx 4解码速度问题

时间:2015-09-22 09:13:35

标签: speech-recognition cmusphinx sphinx4

我使用CMU sphinx 4编写了语音识别应用程序,并按照此link的详细信息进行了操作。我已经定义了声学,词典和语言模型,如下所示

configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");

configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");

configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin");

使用上面的配置,20分钟的wav文件花了差不多20分钟来完成转录。比试图传递用户定义的config.xml要好。我没有找到配置管理器选项来传递用户定义的config.xml和当前版本的 Sphinx4 。然后我通过扩展AbstractSpeechRecognizer.java类编写了自己的识别器(它可能是无用的)并改变了config.xml的一些参数,我尝试了但仍然没有改进。

我已经跨多个源下载了视频和音频,并使用FFMPEG转换为WAV文件

命令如下

ffmpeg -i input.mp3 -acodec pcm_s16le -ac 1 -ar 16000 output.wav

环境详情:

Java 8

Ubuntu 14.04

RAM 4GB

I5处理器

我想知道的是,我在这里缺少什么以及如何提高绩效?

1 个答案:

答案 0 :(得分:1)

语音识别是资源密集型过程。准确的语音识别预计会很慢,您当前的速度1xRT(1分钟需要1分钟才能解码)是合理的。有些商用产品使用GPU加速,运行速度为0.05xRT,但在CPU上,运行速度通常不会超过0.2xRT。所以你仍然需要花时间解码。

如果您想更快地处理文件,可以将其拆分为零件,并在并行线程或并行机器上单独解码每个零件。