gpt4 book ai didi

ios - Swift SFSpeechRecognizer 不工作两次

转载 作者:可可西里 更新时间:2023-11-01 01:24:59 27 4
gpt4 key购买 nike

这是我第一次在 Swift 中使用 SFSpeechRecognizer,有一个功能无法正常工作。当我按下按钮 audioButtonPressed 时,它似乎开始识别正常,再次按下它会停止。当我尝试再次按下它以再次开始识别时,识别不起作用并给我留下空白 TextView 。我应该怎么做?

这是我的代码

@IBAction func audioButtonPressed(_ sender: Any) {
if isRecording {
stopRecording()
delegate?.speechRecognitionComplete(query: query)
audioButton.backgroundColor = UIColor.red
isRecording = false
} else {
startRecording()
audioButton.backgroundColor = UIColor.green
isRecording = true
}
}

func stopRecording() {
audioEngine.stop()
audioEngine.inputNode?.removeTap(onBus: 0)
recognitionRequest = nil
recognitionTask = nil
}

func startRecording() {
recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
guard let recognitionRequest = recognitionRequest else {
return
}
recognitionRequest.shouldReportPartialResults = true
recognitionTask = speechRecognizer?.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
var isFinal = false
if result != nil {
self.query = result?.bestTranscription.formattedString
self.audioTextField.text = self.query
isFinal = (result?.isFinal)!
}
if error != nil || isFinal {
self.stopRecording()
}
})
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setMode(AVAudioSessionModeMeasurement)
try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
} catch {
print("the audio session isn't configured correctly")
}
let recordingFormat = audioEngine.inputNode?.outputFormat(forBus: 0)
audioEngine.inputNode?.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, time) in
self.recognitionRequest?.append(buffer)
}
audioEngine.prepare()
do {
try audioEngine.start()
audioTextField.text = "How may I help you"
} catch {
print("audio engine failed to start")
}
}

当我第一次按下音频按钮时,开始录音被调用并且它完美地工作,再次按下它停止录音被调用并且工作正常,但是再次按下不会使识别再次开始......想法?

最佳答案

我认为您在 stopRecording 函数中释放任务之前缺少 recognitionTask.cancel()

关于ios - Swift SFSpeechRecognizer 不工作两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42020544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com