我会在下面总结一下代码,而不是给你一堆代码。
在app delegate中,我创建了一个nsspeechrecognizer设置其委托,添加命令,然后开始监听。
语音识别器会在第一次识别该命令并且只要我不阻止它进行监听就会继续。
一旦我通过调用stoplistening来停止语音识别器,就会进行后续的开始侦听调用,但是第二次没有识别先前识别器的命令。
我已经确认命令数组保持不变。这是一种"每个命令都有效一次"打字。
再次识别命令的唯一方法是终止语音识别。经纪人流程。重新启动我的应用程序不会这样做。
这不是el cap的问题。有任何一个奇怪的事情,比如这与Sierra。
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()
}
另一种方法调用再次开始侦听。并且在调用startlistening之后识别命令.....除了已经识别的命令。
这是在Sierra机器上的Xcode 8上使用swift 2.3进行编译
答案 0 :(得分:1)
虽然我没有解决这个问题。我能够解决这个问题,将所有命令缩短为“为某事做(昵称)”从“做某事(firstAndLastName)”
这个问题得到解决是不合逻辑的。我在Xcode中输出和输出的“经纪人”现在告诉我,nsspeechrecognizer可能会“评分”认识。