首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python wav处理,n帧不等于实际帧数

python wav处理,n帧不等于实际帧数
EN

Stack Overflow用户
提问于 2017-08-26 07:27:01
回答 1查看 798关注 0票数 0

我试图使用webrtcvad来检测wav文件中的语音,为此我必须在32 pcm提供30 at的16位pcm。我想要做的是将我的wav切割成30 is的数据包,但是以这个文件为例(https://dl.dropboxusercontent.com/u/91396766/recording000001.wav):

代码语言:javascript
复制
audio software : 
5,568 seconds, 16 bit, mono, 320000Hz

-

代码语言:javascript
复制
https://docs.python.org/3/library/wave.html
w.getnframes() = 178176
w.getframerate() = 32000
w.getnchannels() = 1 = mono
w.getsampwidth() = 2 byte = 16 bits
len(w.readframes(w.getnframes())) = 356352, shouldn't it be 178176?
len(w.readframes(0)) = 1

为什么len(w.readframes(w.getnframes()= 356352,应该是178176,因为

1/32000 = 0.00003125秒和0.00003125*175176 = 5.568秒

谢谢

编辑

测试脚本:

代码语言:javascript
复制
import wave

infile = 'recording000001.wav'
w = wave.open(infile, 'rb')

data = w.readframes(w.getnframes())
frequency = w.getframerate()
number_of_channels = w.getnchannels()
sample_width_in_bytes = w.getsampwidth()

print "{} is sampled at {}Hz, it has {} channel(s) and a sample width of {} bytes".format(infile, frequency, number_of_channels, sample_width_in_bytes) 
print "it contains {} data".format(len(data))
print "for {} frames".format(w.getnframes())
print "one data length is {}".format(len(data[0]))

w.close()

产出:

代码语言:javascript
复制
recording000001.wav is sampled at 32000Hz, it has 1 channel(s) and a sample width of 2 bytes
it contains 356352 data
for 178176 frames
one data length is 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-26 07:47:17

之后

w.rewind()

我试过了

len(w.readframes(0)) 0

这与你得到1的结果不同。

有趣的是,

len(w.readframes(1)) 2

但这是有意义的,以一种复杂的方式,因为确实有两个字节。(16位音频帧意味着每帧有2个字节。由于您正在对二进制对象调用len,因此我认为它返回实际字节数是有意义的。)

如果您想要处理您的音频数据,也许您应该研究像numpy这样的库来进一步分析或处理您的音频。

将numpy导入为np C= np.frombuffer(w.readframes(w.getnframes()),dtype="int16") c.shape (178175,) C= 100 c1 =122个 c100 = -132

这是原始波形数据。它位于(-2^15,2^15)或-32768到32,768的范围内。由于音频文件的第一部分在开始时是安静的,所以头几百帧中的小值是很有意义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45893013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档