+-
python-从字节读取而不是文件名以转换音频
我将小尺寸的声音文件作为BSON存储在MongoDB中.
任务是从数据库中检索二进制数据,将其转换为适当的格式,然后发送回前端.
问题在于转换.我发现pydub可以用于此.

我的代码如下

 query_param = json_data['retriever']
 query_param1 = query_param.replace('"', "");
 data = db.soundData
 y = data.find_one({'name': query_param1})
 s = y['data'] // here I retrieve the binary data 
 AudioSegment.from_file(s).export(x, format="mp3")
 return send_file(x, 'audio/mp3')

问题在于Audiosegment行,因为它不符合
AudioSegment.from_wav(“ / input / file.wav”).export(“ / output / file.mp3”,格式=“ mp3”)
并且’bytes’对象的错误没有属性’read’仍然被抛出. pydub可以实现吗?

最佳答案
AudioSegment.from_file()以文件路径或类似文件的对象作为第一个参数.假设您具有整个wave文件的原始字节(包括wave标头,而不仅仅是音频数据),则可以:

import io
s = io.BytesIO(y['data'])
AudioSegment.from_file(s).export(x, format='mp3')

如果只有音频样本的字节,则需要了解有关音频数据的一些元数据:

AudioSegment(y['data'], sample_width=???, frame_rate=???, channels=???)

> sample_width是每个样本中的字节数(因此对于16位/ CD音频,您将使用2)
> frame_rate是每秒采样数(又称采样率,对于CD音频为44100)
>频道有多少个音频流,立体声为2,单声道为1,依此类推

点击查看更多相关文章

转载注明原文:python-从字节读取而不是文件名以转换音频 - 乐贴网