如何在音频(.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_rate4hzsample_rate12hz

你可以参考这些讨论的答案更多的信息。

  1. sound.stackexchange
  2. theDontOvelookCommentsSection
  3. this one too

以上是 如何在音频(.wav或.mp3)文件中每秒获取帧(或样本)的数量或毫秒数? 的全部内容, 来源链接: utcz.com/qa/262204.html

回到顶部