Я пытаюсь использовать распознавание речи, чтобы преобразовать его в текст и отобразить его. Распознавание речи и AudioPlaying работают на симуляторе, но не на iPhone? Почему это так?
Я получаю эту ошибку в консоли при попытке распознавания на iphone:
Домен = kAFAssistantErrorDomain Code = 203 «Corrupt» UserInfo = {NSLocalizedDescription = Corrupt, NSUnderlyingError = 0x28063f240 {Ошибка домена = SiriSpeechErrorDomain Code = 102 "(null)"}}
Это мой код:
func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {
self.animateSpinner(forStatus: false)
do {
try audioPlayer = AVAudioPlayer(contentsOf: recorder.url)
audioPlayer.play()
} catch let error {
debugPrint(error)
}
SFSpeechRecognizer.requestAuthorization({ (authStatus) in
if authStatus == .authorized {
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: self.language))
let request = SFSpeechURLRecognitionRequest(url: recorder.url)
recognizer?.recognitionTask(with: request, resultHandler: { (result, err) in
if let err = err {
debugPrint(err)
return
}
self.textView.text = result?.bestTranscription.formattedString
})
}
})
}
а вот настройка рекордера в viewDidLoad ()
func setupRecorder() {
let dirPaths = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask)
let soundFileURL = dirPaths[0].appendingPathComponent("sound.caf")
do {
audioRecorder = try AVAudioRecorder(url: soundFileURL, settings: [
AVEncoderAudioQualityKey: AVAudioQuality.min.rawValue,
AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 2,
AVSampleRateKey: 44100.0])
audioRecorder.delegate = self
audioRecorder.prepareToRecord()
}
catch let error {
debugPrint(error)
}
}