содержимое аудиофайла изменяется при загрузке в облачное хранилище Google - PullRequest
0 голосов
/ 18 марта 2019

Я загружаю файл MP3 в облачное хранилище Google, затем преобразую его в файл WAV и сохраняю результат в облачном хранилище.Проблема теперь в том, что когда я пытаюсь прочитать файл WAV с scipy.io, возникает ошибка -> Unexpected end of file

Затем я конвертировал свой файл MP3 локально и загрузил егов облачное хранилище, позвонил и открыл его, как я сделал с другим, и все заработало как положено.

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

ПРИМЕЧАНИЯ:

  • Файл MP3, загруженный в облако с использованием HTML-формы и сохраненный с типом audio / mpeg
  • Файл WAV был преобразован с использованием следующего кода и сохраненс типом аудио / Wav:

     const remoteWriteStream =
    
     storage.bucket(bucketName).file("path/to/file/file.wav")
    
    .createWriteStream({
        contentType: 'audio/wav'
    })
    
    ffmpeg(audioContent)
        .withAudioChannels(1)
        .toFormat('wav')
        .on('error', (err) => {
            console.log("error while conversion " + err)
            reject(err)
        })
        .on('progress', (progress) => {
            console.log("conversion in progress")
        })
        .on('end', () => {
            console.log("conversion from mp3 to wav finished")
            resolve()
        })
        .pipe(remoteWriteStream, { end: true })
    
  • код для локального преобразования файла:

    ffmpeg(mp3File)
    .withAudioChannels(1)
    .toFormat('wav')
    .on('error', (err) => {
        console.log("error while conversion " + err)
        reject(err)
    })
    .on('progress', (progress) => {
        console.log("conversion in progress")
    })
    .on('end', () => {
        console.log("conversion from mp3 to wav finished")
        resolve()
    })
    .save('path/to/save/file/file.wav')
    
  • Преобразование выполняется с JavaScript inоба случая и вызовd Открытие файла waV выполняется с помощью python

  • кода для вызова и открытия файла WAV из облака:

wavBucketFileBlob = bucket.get_blob('path/to/file/in/cloud/file.wav') wavBucketFileString = wavBucketFileBlob.download_as_string()

rate,audio = wavfile.read(io.BytesIO(wavBucketFileString))

** РЕДАКТИРОВАТЬ: **

Я думаю, что проблема в заголовке:

WAV-файл, который не может бытьчитать (сохраняется в облаке как аудио / WAV):

b'RIFF$\x01A\x01WAVEfmt \x10\x00\x00\x00\x01\x00\x01\x00D\xac\x00\x00\x88X\x01\x00\x02\x00\x10\x00LIST\xf8\x00\x00\x00INFOIART\n\x00\x00\x00Cat Power\x00ICMT6\x00\x00\x00https://open.spotify.com/track/2ilo3w0stilJKeQZS61FeN\x00ICOP\x1d\x00\x00\x002018 Domino Recording Co Ltd\x00\x00ICRD\x05\x00\x00\x002018\x00\x00IGNR\x08\x00\x00\x00Art Pop\x00INAM\x05\x00\x00\x00Stay\x00\x00IPRD\t\x00\x00\x00Wanderer\x00\x00IPRT\x05\x00\x00\x006/11\x00\x00ISFT\x0e\x00\x00\x00Lavf58.24.100\x00ITCH\x14\x00\x00\x00Domino Recording Co\x00data\x00\x00A\x01\x00\

WAV-файл, который можно прочитать (сохраняется в облаке автоматически при загрузке как аудио / X-WAV):

b'RIFF\xff\xff\xff\xffWAVEfmt \x10\x00\x00\x00\x01\x00\x01\x00D\xac\x00\x00\x88X\x01\x00\x02\x00\x10\x00LIST\xf8\x00\x00\x00INFOIART\n\x00\x00\x00Cat Power\x00ICMT6\x00\x00\x00https://open.spotify.com/track/2ilo3w0stilJKeQZS61FeN\x00ICOP\x1d\x00\x00\x002018 Domino Recording Co Ltd\x00\x00ICRD\x05\x00\x00\x002018\x00\x00IGNR\x08\x00\x00\x00Art Pop\x00INAM\x05\x00\x00\x00Stay\x00\x00IPRD\t\x00\x00\x00Wanderer\x00\x00IPRT\x05\x00\x00\x006/11\x00\x00ISFT\x0e\x00\x00\x00Lavf58.24.100\x00ITCH\x14\x00\x00\x00Domino Recording Co\x00data\xff\xff\xff\xff\

Я пытался преобразовать мой mp3 в wav, чтобы сохранить его как аудио / x-wav, так как это, кажется, работает, но это не имело место .. У меня все еще была та же проблема.

МойОбходной путь:

Я использовал scipy.io, чтобы открыть чтение wav-файла, поэтому я переключился на soundfile, что решило мою проблему, но с недостатком -> качество вывода после дальнейшей обработкикажется ниже (но не очень заметно), чем когда я использую scipy.io

...