关于 python 处理读取 wave 文件的问题

2014-05-12 23:03:37 +08:00
 whywhatwhenhow
大家好,我是按照http://blog.csdn.net/xsc_c/article/details/8941338写的的代码

我还有三个问题请教?

wave_data = np.fromstring(str_data, dtype=np.short) # 疑问1、此时,如果wave文件的采样宽度是8比特,该如何转成数组呢?使用长度是16比特的short分割数组,合理吗

# for the data is stereo,and format is LRLRLR...
# shape the array to n*2(-1 means fit the y coordinate) wave_data.shape = -1, 2 # 疑问2、此时,应该对文件的channel数做一个判断吧,单声道的不用再这样把组数一分为二了吧?

plt.plot(time, wave_data[0]) # 疑问3、plot的两个参数的长度不一致。 此时time数组的长度是nframe ;而wave_data[0]的长度是wave_data被拆分前的一半,wave_data长度是str_data 被short 分割前的一半,wave_data[0]的长度也就是1/4 nframe 。

谢谢。
5009 次点击
所在节点    问与答
1 条回复
sivacohan
2014-05-13 10:23:52 +08:00
先说一下wav的格式。wav实际上是RIFF的。具体情况是,开头有一堆头信息,你的nframe之类的就是在这里读出来的。头信息之后就是具体的音频内容了。格式为

LR\n
LR\n
LR\n

其中L,R的大小和采样大小相同如果是CD的话就是两位。

下面说你的问题:

1、我上面解释了,你自己看看。
2、你说的对。
3、wave_data的长度没变化,现在的wave_data[0]应该是
L\n
L\n
L\n

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/112253

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX