0

而不是給你一堆代碼,我會在下面總結它。OSX Sierra Nsspeechrecognizer問題

在應用程序委託中,我創建了一個nsspeechrecognizer來設置它的委託,添加命令,然後開始監聽。

語音辨識器可識別的命令在第一時間,並繼續只要我不從聽制止。

一旦我通過調用的stopListening停止語音識別,後續調用開始收聽由但沒有先前已識別的命令被視爲第二次。我已經確認命令數組保持不變。它是一種「每個命令都有效」的類型的東西。

讓命令再次被識別的唯一方法是殺掉語音識別器。經紀過程。重新啓動我的應用程序不會這樣做。

這不是el cap上的問題。有沒有人經歷過與塞拉利昂這樣的怪事。

Let speechRecognizer = NSSpeechRecognizer() 
speechRecognizer.delegate = self 
speechRecognizer.listenInBackgroundOnly = false 
speechRecognizer.commands = cmdArray 
speechRecognizer.startListening() 

在didrecognize命令委託

If cmd== specificCommand { 
    Print("heard") 
    // commenting out the following line allows recognizer to continue functioning correctly 
    speechRecognizer.stopListening() 
} 

另一種方法調用開始再次聆聽。除了已識別的命令之外,命令在啓動偵聽之後被識別。

這是編譯塞拉利昂機

回答

1

使用上的Xcode 8 SWIFT 2.3雖然我沒有解決這個問題。我能夠通過縮短所有命令來爲「(暱稱)」從「爲(firstAndLastName)做些事情」來解決此問題。

問題由此解決是不合邏輯的。我在Xcode中放置並輸出的「經紀人」現在向我表明,nsspeechrecognizer可能是「分級」識別。