swift - OSX Sierra Nsspeechrecognizer 问题

标签 swift macos speech-recognition macos-sierra nsspeechrecognizer

为了避免让您厌烦一堆代码,我将在下面对其进行总结。

在应用委托(delegate)中,我创建了一个 nsspeechrecognizer 设置它的委托(delegate),添加命令,然后开始监听。

语音识别器会在第一时间识别命令并继续,只要我不阻止它听。

一旦我通过调用 stoplistening 停止语音识别器,就会进行后续调用以开始收听,但不会再次识别之前识别过的命令。

我已确认命令数组保持不变。这是一种“每个命令只工作一次”类型的东西。

再次识别命令的唯一方法是终止 speech recognizercore.broker 进程。重新启动我的应用程序不会执行此操作。

这不是 el cap 的问题。有没有人在 Sierra 遇到过这样的怪事。

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

在direcognize命令委托(delegate)中

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 编译的

最佳答案

虽然我没有解决这个问题。我能够通过将所有命令从“为 (firstAndLastName) 做某事”缩短为“为 (昵称) 做某事”

来解决这个问题

这样解决问题是不合逻辑的。我在 Xcode 中输入和输出的“经纪人”现在向我暗示 nsspeechrecognizer 可能正在“分级”识别。

关于swift - OSX Sierra Nsspeechrecognizer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39802182/

相关文章:

android - 如何教 Android 语音识别器一门新语言

swift - iOS 8 高度约束动画未按预期工作

javascript - Google Chrome 扩展临时文件的位置

macos - Macos 上的 jmeter 启动 GUI 时卡住

macos - iOS 上运行的问题

android - 语音识别语言模型

android - Android 中的连续语音识别

ios - 更改将您带到上一个 View Controller 的按钮的标题值

swift - 在 ios 8 和 9 swift 中滚动时 Tableview 摇晃

json - 从 Swift 中选定的下拉选项中获取数据