J'applique la reconnaissance vocale dans mon application. Lorsque je présente pour la première fois le contrôleur de vue avec la logique de reconnaissance vocale, tout fonctionne bien. Cependant, lorsque je tente de présenter à nouveau le contrôleur de vue, je reçois l'accident suivant:AVAudioEngine inputNode installTap se bloque lors du redémarrage de l'enregistrement
ERROR: [0x190bf000] >avae> AVAudioNode.mm:568: CreateRecordingTap: required condition is false: IsFormatSampleRateAndChannelCountValid(format)
*** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: IsFormatSampleRateAndChannelCountValid(format)'
Voici le code utilisé pour le démarrage et l'arrêt de l'enregistrement:
@available(iOS 10.0, *)
extension DictationViewController {
fileprivate func startRecording() throws {
guard let recognizer = speechRecognizer else {
debugLog(className, message: "Not supported for the device's locale")
return
}
guard recognizer.isAvailable else {
debugLog(className, message: "Recognizer is not available right now")
return
}
mostRecentlyProcessedSegmentDuration = 0
guard let node = audioEngine.inputNode else {
debugLog(className, message: "Could not get an input node")
return
}
let recordingFormat = node.outputFormat(forBus: 0)
node.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { [weak self] (buffer, _) in
self?.request.append(buffer)
}
audioEngine.prepare()
try audioEngine.start()
recognitionTask = recognizer.recognitionTask(with: request, resultHandler: {/***/})
}
fileprivate func stopRecording() {
audioEngine.stop()
audioEngine.inputNode?.removeTap(onBus: 0)
request.endAudio()
recognitionTask?.cancel()
}
}
startRecording()
est appelé à viewDidLoad une fois que nous avons demande d'autorisation. stopRecording()
est appelée lorsque le contrôleur de vue est fermé.
Veuillez nous aider. Je me bats pour trouver une solution à cet accident
Avez-vous trouvé une solution à ce problème? Je rencontre un crash similaire, mais seulement lors de l'exécution sur iOS 8.1 ?? –