使用Python从wav文件创建振幅列表

问题描述 投票:0回答:1

我已经为一台机器学习实验录制了很多汽车行驶的音频片段。

这300个左右的剪辑的长度有所不同(长4-10秒),我想将它们剪辑成固定的3秒长度,但是手工操作会很麻烦。我想要汽车经过麦克风的那一刻(最大点),然后在那一刻之前和之后的1.5秒钟将其剪辑。

我知道如何执行此操作的方法是:

  1. 获取文件的振幅列表
  2. 修复了一个3秒长的窗口,以迭代幅度列表并从列表的开头开始,还初始化变量maxAmp和maxIndex以跟踪记录的最大平均幅度以及该分段的开始位置的索引
  3. 平均窗口中的所有振幅,检查是否大于到目前为止记录的最大平均值,如果是,则替换记录的最大平均值
  4. 将窗口向前移动1秒
  5. 重复3和4,直到我们遍历文件为止
  6. 将音频片段从maxIndex保存到maxIndex + 3秒后作为新文件
  7. 对所有文件执行此操作

这是一个非常笼统的想法,我知道这是不正确的。我认为取一个窗口的平均值比仅找到最大值所在的位置并在前后前后取1.5更好,因为最大幅度可能是麦克风在剪辑中的某个点吹来的风,而不是实际上汽车驶过的声音。

这有意义吗?有什么办法可以做得更好?哪些工具/库可以帮助我获取振幅列表?

谢谢!

python audio wav sliding-window amplitude
1个回答
0
投票

您可以使用wavefile中的scipy.io读取WAV文件作为数组。然后,可以将其放入pandas数据帧以计算滚动平均值。使用idxmax函数查找滚动平均值最大值的索引。然后可以将数据剪切到该索引周围,并将其写入新的WAV文件。

© www.soinside.com 2019 - 2024. All rights reserved.