Я загружаю файл 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