我使用pydub
如下加载音频文件,
audio = AudioSegment.from_mp3(file_path).set_frame_rate(22050).set_channel(1)
但是如果我获得音频文件的二进制数据,则使用以下方式,
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
audio = AudioSegment(data=get_file_content(file_path), sample_width=2, frame_rate=22050, channels=1)
但是,当我尝试使用属性audio.get_array_of_samples()
时,我得到了与这两种方式不同的数组。
所以我想问一下如何使这两种方式在读取相同的音频时输出相同的数组。
答案 0 :(得分:0)
第一个代码段表明这是一个MP3文件。在第二种情况下,您将其读取为16位WAV文件。那会产生垃圾。
如果MP3文件位于字节数组中,请使用以下代码:
AudioSegment.from_mp3(BytesIO(mp3_data))
和BytesIO
来自这里:https://docs.python.org/3/library/io.html