我正在制作一个语音识别应用程序,可以在没有网络的情况下识别我的声音,因为我正在使用OpenEars
sdk。我已经采用了它的示例代码,我已经制作了类似的示例代码应用程序,但在我的代码中,我的openearsEventDelegate
方法不是调用。
我已采用协议<openEarsEventObserverDelegate>
,并在viewDidLoad
方法中设置了openEarseventObserver.delegate=self
。
如果我错过了什么,请指导我。 谢谢。
答案 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实例设置为您的属性。这对我很快。