То, что я пытался сделать, - это извлечь аудиофайл mp3 через URL-адрес его загрузки в Firebase Storage и передать его в функцию transcribeAudio.Последняя вызывает следующую ошибку:
Error Domain = AVFoundationErrorDomain Code = -11838 "Невозможно инициализировать экземпляр AVAssetReader с активом по нелокальному URL-адресу
Любая идея, что может вызвать это, икак обойти это?
Я попытался передать другие значения, которые привели к ошибке, которая в основном говорила, что передаваемое значение должно быть URL-адресом.
Здесь я получаю URL-адрес из базы данных Firebase.хранение и передать его для расшифровки:
let clipRef = storageRef.child("audio/test_audio/CA138clip.mp3")
// Fetch the download URL
clipRef.downloadURL { url, error in
if let error = error {
// Handle any errors
print("error in download url")
print(error)
} else {
// Get the download URL for "audio/test_audio/CA138clip.mp3"
print("Got download url")
let localURL = URL(string: (url?.absoluteString)!)
print("Local url")
print(localURL)
self.transcribeAudio(url: localURL!)
}
}
А вот и сама функция транскрипции:
func transcribeAudio(url: URL) {
// create a new recognizer and point it at our audio
let recognizer = SFSpeechRecognizer()
let request = SFSpeechURLRecognitionRequest(url: url)
// start recognition!
recognizer?.recognitionTask(with: request) { [unowned self] (result, error) in
// abort if we didn't get any transcription back
guard let result = result else {
print("Error Detected: \(error!)")
return
}
// if we got the final transcription back, print it
if result.isFinal {
// pull out the best transcription...
print(result.bestTranscription.formattedString)
}
}
}
Короче я пытаюсь сделать следующее: Захват аудио mp3-файла из Firebaseхранилище, передайте этот аудиофайл в функцию транскрипции, распечатайте (пока) результаты транскрипции
Так, например, если в ролике говорящий говорит: «Мне нравится ходить в походы и кататься на сноуборде», это будет преобразовано из речи.к тексту через функцию транскрипции.