3

我正在使用新的 Apple Speech 库,但在几秒钟的沉默后,我找不到翻转 isFinal 布尔并结束转录的命令。有谁知道沉默后如何结束任务?

这是我收到语音转录结果的代码。

    recognitionRequest.shouldReportPartialResults = true

    speechRecogTask = speechRecognizer.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
        var isFinal = false
        if result != nil {

            self.textField.text = result?.bestTranscription.formattedString
            isFinal = (result?.isFinal)!
        }

        if error != nil || isFinal {
            self.audioEngine.stop()
            inputNode.removeTap(onBus: 0)

            self.speechRecogRequest = nil
            self.speechRecogTask = nil
        }
    })

有任何想法吗?

4

2 回答 2

3

您最好的选择是使用计时器来检测调用最后一个委托的时间间隔。看看这个库,它正在使用NSTimer

于 2017-02-17T06:41:40.803 回答
0
if let result = result {
                
  if (isFinal == true) {
    self.speechRecogTask?.finish()
  }

}
于 2020-09-10T18:34:47.583 回答