如何将base64字符串直接解码为二进制音频格式
How to decode base64 String directly to binary audio format
音频文件通过 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,那就容易多了。所以我在 Convert string to binary in 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)
但我在 wav.writeframes
处遇到错误 a bytes-like object is required, not '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字符串写入该文件。
我知道这是一个很晚的答案。希望这有帮助。
音频文件通过 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,那就容易多了。所以我在 Convert string to binary in 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)
但我在 wav.writeframes
处遇到错误 a bytes-like object is required, not '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字符串写入该文件。
我知道这是一个很晚的答案。希望这有帮助。