OpenEarsEventObserverDelegate方法不是调用

时间:2013-02-07 11:50:08

标签: iphone objective-c voice-recognition openears

我正在制作一个语音识别应用程序,可以在没有网络的情况下识别我的声音,因为我正在使用OpenEars sdk。我已经采用了它的示例代码,我已经制作了类似的示例代码应用程序,但在我的代码中,我的openearsEventDelegate方法不是调用。 我已采用协议<openEarsEventObserverDelegate>,并在viewDidLoad方法中设置了openEarseventObserver.delegate=self

如果我错过了什么,请指导我。 谢谢。

2 个答案:

答案 0 :(得分:1)

如果没有更多代码,很难确切地说出你的问题是什么,但我会尝试一些事情:

设置委托时,请确保您的OpenEarsEventObserver对象不是nil:

        OpenEarsEventsObserver* openEarsEventsObserver = [[OpenEarsEventsObserver alloc] init];
        [openEarsEventsObserver setDelegate:self];

确保你的pocketsphinxController不是nil并且你已经正确地开始监听,为此我使用了懒惰的实例化:

   - (PocketsphinxController *)pocketsphinxController {
      if (_pocketsphinxController == nil) {
          _pocketsphinxController = [[PocketsphinxController alloc] init];
          }
     return _pocketsphinxController;
    }

然后,当您想开始识别语音使用时:

      [self.pocketsphinxController startListeningWithLanguageModelAtPath:<#(NSString *)#> dictionaryAtPath:<#(NSString *)#> acousticModelAtPath:<#(NSString *)#> languageModelIsJSGF:<#(BOOL)#>];
     // Change "AcousticModelEnglish" to "AcousticModelSpanish" to perform Spanish recognition instead of English.

所有这些信息都可以在以下网址找到:OpenEars Tutorials

答案 1 :(得分:0)

我遇到了同样的问题。当我在开始监听self.openEarsEventsObserver之前尝试设置委托是nil时,您可以在开始监听之前检查它是否为零,然后将新的OpenEarsEventsObserver实例设置为您的属性。这对我很快。