我试图从Python中的wav文件中获取数据并绘制出来。当我使用scipy.io.wavfile.read()时,我得到一个如下所示的数组:
[[ -1.49836736e-02 -1.27559584e-02]
[ -1.84625713e-02 -1.63264061e-02]
[ -2.17888858e-02 -1.95001373e-02]
...,
[ 6.10332937e-05 6.10332937e-05]
[ -3.05166468e-05 0.00000000e+00]
[ 3.05166468e-05 -6.10332937e-05]]
为什么它是一组长度为2的数组,而不是一个在每个样本上都有值的长数组?返回的数据代表什么?提前谢谢。
convert_16_bit = float(2**15)
sr, samples = scipy.io.wavfile.read('singingonenote.wav')
x = np.linspace(0, 2000, 0.01)
samples = samples / (convert_16_bit + 1.0)
y = samples
print samples
plt.plot(x, y)
plt.show()
您正在读取的文件似乎是立体声文件。 这些包含二维数据-左声道和右声道。
一般概念解释如下:https://en.wikipedia.org/wiki/Stereophonic_sound
如果您只想从二维数据序列中选择左声道,可以如下选择
若要选择正确的频道,请将0替换为1。
另一种方法是,确保用于生成文件的程序首先保存mono-wave文件。这可能是真正的bug,具体取决于您要做的事情。
相关问题 更多 >
编程相关推荐