コードの束であなたを退屈させるのではなく、以下でそれを要約します。OSX Sierra Nsspeechrecognizerの問題
アプリケーションデリゲートでは、nsspeechrecognizerを作成してデリゲートを設定し、コマンドを追加してリスニングを開始します。
スピーチレコグナイザは、最初にコマンドを認識し、リスニングを止めない限り継続します。
ストップストリステニングを呼び出すことによって音声認識装置を停止すると、その後のリスン開始呼び出しが行われますが、以前に認識装置であったコマンドは認識されません。
私はコマンド配列が同じままであることを確認しました。それは、 "それぞれのコマンドが一度動作する"というものです。
もう一度コマンドを認識させる唯一の方法は、音声認識cartore.brokerプロセスを強制終了することです。私のアプリをリニューアルすることはこれをしません。
これはエルキャップの問題ではありませんでした。シエラとのこのような奇妙な体験があります。
didrecognizeコマンドデリゲートでLet speechRecognizer = NSSpeechRecognizer()
speechRecognizer.delegate = self
speechRecognizer.listenInBackgroundOnly = false
speechRecognizer.commands = cmdArray
speechRecognizer.startListening()
If cmd== specificCommand {
Print("heard")
// commenting out the following line allows recognizer to continue functioning correctly
speechRecognizer.stopListening()
}
呼び出しが再び聴き始めるもう一つの方法。すでに認識されているコマンドを除き、スタートリスニングが.....と呼ばれた後にコマンドが認識されます。
これは、私は、この問題を解決しませんでしたがシエラ・マシン