Ошибка: невозможно инициализировать экземпляр AVAssetReader с активом по нелокальному URL - PullRequest
0 голосов
/ 27 июня 2019

То, что я пытался сделать, - это извлечь аудиофайл 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хранилище, передайте этот аудиофайл в функцию транскрипции, распечатайте (пока) результаты транскрипции

Так, например, если в ролике говорящий говорит: «Мне нравится ходить в походы и кататься на сноуборде», это будет преобразовано из речи.к тексту через функцию транскрипции.

...