如何在音频(.wav或.mp3)文件中每秒获取帧(或样本)的数量或毫秒数?
我已经下scipy.io.wavfile
如何在音频(.wav或.mp3)文件中每秒获取帧(或样本)的数量或毫秒数?
其具有44100 per sec or hz
一个帧率和总帧是9745238
和音频的持续时间是由220 secs
文件属性,但它应该是220.9804535147392
并且具有2
通道观察的音频文件。
读取文件之后,它返回我9745238 X 2
矩阵的16bit signed int
如预期
其中1列是信道1点的数据和2列是相应9745238帧
所以我的问题的信道2点的数据是否有任何强大的方法每秒或毫秒找到这些值(连续1,2个通道,即每行或矩阵)?
任何猜测?
编辑1
我已经提到了一个非常直观的讨论here
,我想我需要的是比特率这是bitrate = sampleRate * bitDepth
但我怎样才能得到位深度是它sample size/sample width
或别的东西。
回答:
所以,我想比特每秒的数量和做一些研究后,我发现,我需要每一位即比特率,肯定位深度的价格为样本的比特数(这是不变)。
要理解这一点,如果我们使用wave
模块来打印文件的第一帧,我们得到类似的东西。
b'\x00\x00\x00\x00'
,正如你可以看到,它是一个16bit-unicoded
串并使用numpy
其转化为16bit signed int
后。
像np.fromstring(wav.readframes(1), np.int16)
它会给你[0 0]是在第一帧中的每个信道的8位。
并且因为frameRate是44100
,因此对于每个矢量例如bitrate = frame_rate (44100) * bitDepth (16)
。 [0 0],我们将这个值乘以通道数(,在我的情况下为2),以获得关于这些位的答案。
编辑1
和采样率和帧速率是两种不同的东西,一帧由样本的数目,并且是sample_width每个样本的大小。
例如。考虑一个音频_
作为示例表示,并有3
频道,4
帧,那么它将被表示为类似的东西。
[_ _ _] [_ _ _] [_ _ _] [_ _ _]
如果您查看使用scipy
库,然后代替_
矩阵会有号码将根据解码的字符串,并把声明以另一种方式,我们可以说,它的值,在每一个元素矩阵是一个样本。
所以有音频共有12个样品,如果我们假定这首歌的时间是,1 sec
那么frame_rate
将4hz
和sample_rate
将12hz
。
你可以参考这些讨论的答案更多的信息。
- sound.stackexchange
- theDontOvelookCommentsSection
- this one too
以上是 如何在音频(.wav或.mp3)文件中每秒获取帧(或样本)的数量或毫秒数? 的全部内容, 来源链接: utcz.com/qa/262204.html