SFSpeechRecognizer crashing application when User Active Siri during Runtime

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)

    }