在我尝试使用PocketSphinx for Android之前,我使用了Google的语音识别API。 我不需要设置搜索名称或字典文件。它只是认出了所说的每一个字。
现在,在PocketSphinx中,我需要这样做。但是我只能找到如何为一个单词设置识别,或者设置字典(演示项目中可用的字典只有很少的单词),识别器认为这些是唯一存在的单词,这意味着如果有人说类似的话,识别器认为它是字典中列出的单词。
我只是想问一下,我怎么能设置一些搜索名称,或者如何设置它来识别所有可用的单词(或者甚至是大量的单词)?也许某人有一个包含大量单词的字典文件?
答案 0 :(得分:17)
在我尝试使用PocketSphinx for Android之前,我使用了Google的语音识别API。我不需要设置搜索名称或字典文件。它只是认出了所说的每一个字。
Google API也会识别一大堆但仍然有限的单词。很长一段时间它都未能识别出“Spotify”。谷歌离线语音识别器使用大约50k字,如publication中所述。
我只是想问一下,我怎么能设置一些搜索名称,或者如何设置它来识别所有可用的单词(或者甚至是大量的单词)?也许某人有一个包含大量单词的字典文件?
演示包括使用语言模型(预测部分)的大词汇量语音识别。可以下载更大的英语语言模型,例如En-US generic language model。
运行识别的简单代码就是:
recognizer = defaultSetup()
.setAcousticModel(new File(assetsDir, "en-us-ptm"))
.setDictionary(new File(assetsDir, "cmudict-en-us.dict"))
.getRecognizer();
recognizer.addListener(this);
// Create keyword-activation search.
recognizer.addNgramSearch(NGRAM_SEARCH, new File(assetsDir, "en-us.lm.bin"););
// Start the search
recognizer.startListening(NGRAM_SEARCH);
然而,它们不容易适应设备并实时解码。如果您想要使用大量词汇实时解码语音,则需要将音频流式传输到服务器。或者您需要将词汇和语言限制为通用英语的一小部分。您可以在tutorial中了解有关CMUSphinx中语音识别的更多信息。
答案 1 :(得分:1)
更新,2019年,我建议每个人都在Android上尝试Kaldi库。您可以找到演示here。它实际上是一个实时运行的大型词汇语音识别器(LM中为70k个单词)。