有什么方法可以提高口袋狮身人面像在语音识别方面的准确性?

时间:2018-07-06 11:05:45

标签: speech-recognition pocketsphinx

我有一个脚本,可以简单地将视频转换为具有特定参数的wav格式,然后转录其音频。

def video_to_wav(self):
    mp4_video = os.path.join(self.dir, self.name + ".mp4")
    if os.path.isfile(mp4_video):
        subprocess.call("ffmpeg -i {0} -acodec pcm_s16le -ac 1 -ar 16000 {1}.wav".format(
            mp4_video, os.path.join(self.dir, self.name)), shell=True, env=os.environ)
        os.remove(mp4_video)
    else:
        raise SystemError
    return self.name + ".wav"

对于音频转录,PocketSphinx是我的选择,但我在speech-recognition库中使用了它。

PocketSphinx是非常不准确的,除非音频具有很高的质量(它几乎不能识别出体面/高质量的语音)。您可以看到转换参数是专门为狮身人面像识别而选择的:

ffmpeg -i {0} -acodec pcm_s16le -ac 1 -ar 16000 {1}.wav


我可以做些什么来提高准确性吗?也许声学模型会调整语音识别的准确性?如果可以,如何将其与speech-recognition模块一起使用?

谢谢!

2 个答案:

答案 0 :(得分:0)

为了准确起见,您可以使用更高级的工具包,例如Kaldi。对于python,您可以检查https://github.com/gooofy/py-kaldi-asr

答案 1 :(得分:0)

在给定的采样率(即Hz)下,提高PocketSphinx准确性的最佳方法是减小您希望其识别的词汇范围。如果您可以将其限制为可能的几千个单词,则其准确性会大大提高。 CMU Sphinx网站提供了可帮助您完成此任务的工具。

此外,由于您正在处理记录,因此可以调整回溯和置信度参数,以得到较慢但更准确的结果。

PocketSphinx在文本输出中包含时间戳,并在对转录的置信度低时包含通知。您可以尝试运行两个过程-第一个过程使用较小的词汇,然后在第二个过程中尝试使用较大的词汇重新尝试那些低置信度间隔。然后,您将不得不合并文本转录。