Ошибка: невозможно инициализировать экземпляр AVAssetReader с активом по нелокальному URL

То, что я пытался сделать, - это извлечь аудиофайл в формате mp3 через URL-адрес его загрузки в Firebase Storage и передать его в функцию transcribeAudio. Последняя вызывает следующую ошибку:

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

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

0
задан varunjitsingh6410 26 June 2019 в 23:05
поделиться