我在一个Activity中使用Native SpeechRecognizer服务,它“有效”但我有一些严重的问题。
返回的“发送到文本的语音”非常令人震惊,非常非常糟糕,在应用程序中肯定无法使用(通过onResults回调)。有时结果是如此偏离我怀疑有一个故障的麦克风,但它发生在许多设备上。
我所需的词汇量只有16个字。是否有更有效的方法来实现这种有限词汇表的准确性,可能是第三方API?
我真的需要这个工作,如果申请要成功,因为通过触摸屏输入对我们的要求来说太慢了。
App使用Android 4.4 / Scala / Java / Some C Algs with NDK。
非常感谢任何帮助。
答案 0 :(得分:2)
不幸的是,您无法控制Google语音识别库,但您可以实现更可自定义的库,如PocketSphinx,也可以尝试对结果进行进一步分析。例如,我使用双音乐库来检查识别的单词是否听起来像您希望听到的那样。
答案 1 :(得分:0)
通常,onResults()中的结果有很多候选对象。您可以将每个候选人与您的目标词汇进行比较,而不仅仅是选择第一个。这应该提高命中率。您还可以设置候选者的数量,例如intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5);。 as the Android documents described
@Override
public void onResults(Bundle results) {
for (String res : resList) {
//compare every "String res" with your target vocabulary, instead
//of just choose first one.
}
}