Python | pydub:如何从np.array而不是wav文件加载wav示例到pydub?

时间:2018-01-02 02:20:44

标签: python arrays numpy wav pydub

如何将音频np.array文件加载到PyDub库中?目前,我使用AudioSegment.from_wav(file_path),但如果我已经将wav文件作为numpy数组加载,那就不方便了:

sample_rate, wav_sample = scipy.io.wavfile.read(file_path)

更新:我的wav文件都是16位,单通道。

1 个答案:

答案 0 :(得分:2)

好的,请不要理会这个答案,因为我不知道pydub是否足以看出它是否正常工作,但你应该能够从类初始化程序中做到这一点提供所需的所有参数:

sample_rate, wav_sample = scipy.io.wavfile.read(file_path) 
segment = AudioSegment(data=wav_sample.tobytes(),
                       sample_width=2,
                       frame_rate=sample_rate, channels=1)

假设有一个16位单通道样本,似乎可以正常工作。

应该很容易从数组大小推断出不同的样本宽度(wav_sample.nbytes() / len(wav_sample)应该这样做。)

请自己做一些测试并告诉我们!

编辑:多个频道有点棘手,pydub据我所知,想要交织的频道,而scipy将它们作为多列返回。但是numpy应该很容易以pydub想要的格式重塑数据,如下所示(未测试)?

np.vstack((wav_sample[:,0],wav_sample[:,1])).reshape((-1,), order='F')