如何将音频np.array
文件加载到PyDub库中?目前,我使用AudioSegment.from_wav(file_path)
,但如果我已经将wav文件作为numpy数组加载,那就不方便了:
sample_rate, wav_sample = scipy.io.wavfile.read(file_path)
更新:我的wav文件都是16位,单通道。
答案 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')