2013-02-07 43 views
0

我正在製作一個語音識別應用程序,該應用程序可以在網絡不存在的情況下識別我的聲音,因此我正在使用OpenEars sdk。我已經拿了它的一個示例代碼,我已經做了一個類似的應用程序的示例代碼,但在我的代碼中我的openearsEventDelegate方法不是調用。 我已採用協議<openEarsEventObserverDelegate>和我的viewDidLoad方法我已設置openEarseventObserver.delegate=selfOpenEarsEventObserverDelegate方法沒有調用

請指導我,如果我失去了一些東西。 謝謝。

+0

此鏈接可能會讓你開始:[代理方法不被調用](http://www.politepix.com/forums/topic/delegate-methods-not-being-called) – Jeremy

+0

有沒有任何警告或什麼?您是否在.h上添加了確認到協議語法?另請檢查您是否將代表設置爲自我。 –

+2

只需按照http://www.politepix.com/openears/tutorial上的教程創建您自己的應用程序即可。它涵蓋了如何以複製/粘貼的形式連接OpenEarsEventsObserver委託。 – Halle

回答

1

沒有更多的代碼很難說你到底是什麼問題,但這裏有幾件事我會嘗試:

確保當您將委託你OpenEarsEventObserver對象不是零:

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

確保您pocketsphinxController不是零,你已經正確開始聽,爲了這個,我使用延遲實例:

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

然後當竟被你倒要開始識別語音的使用:OpenEars Tutorials

0

我有同樣的問題:

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

在所有這些信息都可以找到。當我在開始監聽之前嘗試設置代理self.openEarsEventsObserver的時候是nil,因此您可以在開始監聽之前簡單地檢查它是否爲零,然後爲您的屬性設置一個新的OpenEarsEventsObserver實例。這對我來說是一個快速解決方案。

相關問題