Как декодировать строку base64 напрямую в двоичный аудиоформат - PullRequest
0 голосов
/ 10 мая 2018

Аудио файл отправляется нам через API, который является форматом PCM в кодировке Base64 Мне нужно преобразовать его в PCM, а затем WAV для обработки.

Мне удалось декодировать -> сохранить в pcm -> прочитать из pcm -> сохранить как wav, используя следующий код.

decoded_data = base64.b64decode(data, ' /')
with open(pcmfile, 'wb') as pcm:
    pcm.write(decoded_data)
with open(pcmfile, 'rb') as pcm:
    pcmdata = pcm.read()
with wave.open(wavfile, 'wb') as wav:
    wav.setparams((1, 2, 16000, 0, 'NONE', 'NONE'))
    wav.writeframes(pcmdata)

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

  decoded_data = base64.b64decode(data, ' /')
    ba = ' '.join(format(x, 'b') for x in bytearray(decoded_data))
    with wave.open(wavfile, 'wb') as wav:
        wav.setparams((1, 2, 16000, 0, 'NONE', 'NONE'))
        wav.writeframes(ba)

Но я получил ошибку a bytes-like object is required, not 'str' в wav.writeframes.

Также попробовал base54.decodebytes() и получил ту же ошибку.

Как правильно это сделать?

...