scipy.io.wavfile.read返回的数据

2024-05-15 02:10:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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()

Tags: 文件数据ioconvertreadbit绘制plt
1条回答
网友
1楼 · 发布于 2024-05-15 02:10:55

您正在读取的文件似乎是立体声文件。 这些包含二维数据-左声道和右声道。

一般概念解释如下:https://en.wikipedia.org/wiki/Stereophonic_sound

如果您只想从二维数据序列中选择左声道,可以如下选择

y = samples[:,0]

若要选择正确的频道,请将0替换为1。

另一种方法是,确保用于生成文件的程序首先保存mono-wave文件。这可能是真正的bug,具体取决于您要做的事情。

相关问题 更多 >

    热门问题