【问题标题】:OSX Sierra Nsspeechrecognizer issuesOSX Sierra Nsspeechrecognizer 问题
【发布时间】:2016-10-01 01:35:12
【问题描述】:

与其用一堆代码让你厌烦,我将在下面总结一下。

在应用程序委托中,我创建了一个 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 编译的

【问题讨论】:

    标签: swift macos speech-recognition macos-sierra nsspeechrecognizer


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2016-03-31
      • 2018-05-06
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      相关资源
      最近更新 更多