如何在几秒钟的沉默后结束SFSpeechRecognitionTask

时间:2017-02-16 16:43:44

标签: swift voice-recognition sfspeechrecognizer

我正在使用新的Apple语音库,我无法找到一个命令来翻转isFinal bool并在几秒钟的静音后结束转录。有人沉默后有谁知道如何结束任务?

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

    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
        }
    })

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您最好的选择是使用计时器来检测调用最后一个委托的时间间隔。查看使用NSTimer

this

答案 1 :(得分:0)

if let result = result {
                
  if (isFinal == true) {
    self.speechRecogTask?.finish()
  }

}