在演示项目中,switchSearch()方法,KWS_SEARCH属性和startListening()方法的参数是什么意思?

时间:2017-03-15 12:55:45

标签: android speech-recognition cmusphinx pocketsphinx-android

所有问题都与android为pocketphinx的演示项目有关,在CMUSphinx的官方网站上给出。

我不明白方法switchSearch()到底做了什么。该方法使用KWS_SEARCH="wakeup"属性,该属性的用途是什么?它不会出现在语法文件(.gram)中。这个属性的目的是什么?该方法将searchNameKWS_SEARCH进行比较,我不知道为什么。 KWS_SEARCH它也作为参数传递给识别器对象上的startListening()方法。为什么呢?

我不明白如何使用10000ms的超时来改善结果。

这是switchSearch()方法:

private void switchSearch(String searchName) {
    recognizer.stop();

    // If we are not spotting, start listening with timeout (10000 ms or 10 seconds).
    if (searchName.equals(KWS_SEARCH))
        recognizer.startListening(searchName);
    else
        recognizer.startListening(searchName, 10000);

    String caption = getResources().getString(captions.get(searchName));
    ((TextView) findViewById(R.id.caption_text)).setText(caption);
}

1 个答案:

答案 0 :(得分:0)

来自Pocketsphinx tutorial

  

开发人员可以配置多个不同的“搜索”对象   语法和语言模型,并在运行时切换它们提供   为用户提供互动体验。

     

有不同的搜索模式:

     
      
  • keyword - 有效地查找关键短语并忽略其他语音。允许配置检测阈值。
  •   
  • 语法 - 根据JSGF语法识别语音。与关键词语法不同,搜索不会忽略不在语法中的词   但试图认出它们。
  •   
  • ngram / lm - 用语言模型识别自然语音。
  •   
  • allphone - 使用语音语言模型识别音素。每个搜索都有一个名称,可以通过名称引用,名称是   专用。函数ps_set_search允许激活   以前通过名称添加的搜索。
  •   
     

要添加搜索,需要指向语法/语言模型   描述搜索。语法的位置是特定的   应用。如果只需要简单识别就足够了   添加单个搜索或只配置所需的模式   配置选项。

     

搜索的确切设计取决于您的应用程序。对于   例如,您可能希望首先监听激活关键字   一旦关键字被识别,切换到ngram搜索以识别实际   命令。一旦识别出命令,就可以切换到语法   搜索以识别确认,然后切换回关键字   监听模式等待另一个命令。

     

我不明白switchSearch()方法的作用。该方法使用KWS_SEARCH =“wakeup”属性,该属性的用途是什么?

“wakeup”是关键字定位搜索的搜索名称。识别器初始化时添加了它。名称可以是任意的,它只是标识搜索。

  

KWS_SEARCH它也作为参数传递给识别器对象上的startListening()方法。为什么呢?

startListening开始使用命名搜索进行侦听。

  

我不明白如何使用10000ms的超时来改善结果。

它没有结果,它只是一种用户体验。当我们连续发现一个单词时,我们不需要超时。当我们识别命令时,我们等待10秒然后返回到定位模式。