Python 如何将base64字符串直接解码为二进制音频格式

Python 如何将base64字符串直接解码为二进制音频格式,python,base64,decode,wav,python-bytearray,Python,Base64,Decode,Wav,Python Bytearray,音频文件通过API发送给我们,API是Base64编码的PCM格式。我需要将其转换为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

音频文件通过API发送给我们,API是Base64编码的PCM格式。我需要将其转换为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,那就容易多了。所以我在一个月内做了类似的事情

但是我得到了错误
wav.writeframes
处需要一个类似字节的对象,而不是'str'

还尝试了
base54.decodebytes()
,但得到了相同的错误


正确的方法是什么?

在我的一个项目中,我也遇到了类似的问题

我能够将base64字符串直接转换为wav:

import base64
encode_string = base64.b64encode(open("audio.wav", "rb").read())
wav_file = open("temp.wav", "wb")
decode_string = base64.b64decode(encode_string)
wav_file.write(decode_string)
首先将其编码为base64。然后以wav格式创建一个文件,并将解码后的base64字符串写入该文件


我知道这是一个很晚的回答。希望这能有所帮助。

@snakecharmerb我用这个不会出错。但是输出的wav文件不正确。本来应该是5秒的音频,但现在是38秒。“而且尺寸太大了。”不幸的是,蛇魔兽B还是不对。音频大小要小得多,但仍然太长。另外,当我播放它时,它听起来并不正确。@ddd在您的第一个示例中,保存到二进制文件并从中读取有什么意义?在第二个示例中,为什么要执行
ba='''.join(bytearray(解码的_数据)中x的格式(x,'b'))
?为什么不按原样使用解码数据?你也有一些例子数据吗?
import base64
encode_string = base64.b64encode(open("audio.wav", "rb").read())
wav_file = open("temp.wav", "wb")
decode_string = base64.b64decode(encode_string)
wav_file.write(decode_string)