Posts

Post not yet marked as solved
0 Replies
79 Views
Hi, I am trying to use the Speech Recognizer in the Apple's Official Document for my application, also I added the try and catch expression when calling SFSpeechRecognizer, if the user triggers Siri during the runtime, it would immediately crash the whole application when calling SFSpeechRecognizer again, has anyone encountered with similar problems? Here's the code from my application  func transcribe() {  DispatchQueue(label: "Speech Recognizer Queue", qos: .background).async { [weak self] in guard let self = self, let recognizer = self.recognizer, recognizer.isAvailable else {        self?.speakError(RecognizerError.recognizerIsUnavailable)                 return             }              do {           let (audioEngine, request) = try Self.prepareEngine()                 self.audioEngine = audioEngine                 self.request = request                 self.task = recognizer.recognitionTask(with: request, resultHandler: self.recognitionHandler(result:error:))             } catch {                 self.reset()                 self.speakError(error)             }         }     } private static func prepareEngine() throws -> (AVAudioEngine, SFSpeechAudioBufferRecognitionRequest) {         let audioEngine = AVAudioEngine()         let request = SFSpeechAudioBufferRecognitionRequest()         request.shouldReportPartialResults = true         let audioSession = AVAudioSession.sharedInstance()         try audioSession.setCategory(.record, mode: .measurement, options: .duckOthers)         try audioSession.setActive(true, options: .notifyOthersOnDeactivation)         let inputNode = audioEngine.inputNode                  let recordingFormat = inputNode.outputFormat(forBus: 0)         inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer: AVAudioPCMBuffer, when: AVAudioTime) in             request.append(buffer)         }         audioEngine.prepare()         try audioEngine.start()         return (audioEngine, request)     }
Posted
by PterRim.
Last updated
.