我正在尝试测量 wav 文件的引入和引出。最好是第一和最后 5 秒左右。我基本上是想指定一个数值,表示“这首歌有一个缓慢的开头”或“这首歌有一个突然的结束”。
我的想法是获得 dB 值的斜率,但我似乎找不到可以提供 dB 值的 Linux 命令行工具。我知道它们可以被测量,因为 Audacity 有波形(db)视图。
基本上我正在寻找一种方法来收集数据点来复制该图,以便获得斜率。
编辑-在java中工作
我不知道有任何命令行工具可以执行此操作,但是使用此功能编写具有此功能的 python 脚本相当简单scipy
图书馆。
我们可以用scipy.io.wavfile
执行文件 IO,然后自己计算 dB 值(请注意,这些不一定是标准 dB 值,因为这些值取决于您的扬声器和音量设置)。
首先我们得到文件:
from scipy.io.wavfile import read
samprate, wavdata = read('file.wav')
然后,我们将文件分割成块,其中块的数量取决于您想要测量体积的精确程度:
import numpy as np
chunks = np.array_split(wavdata, numchunks)
最后,我们计算每个块的体积:
dbs = [20*log10( sqrt(mean(chunk**2)) ) for chunk in chunks]
where dbs
现在是文件每个块的 dB 值列表(同样,不一定是真正的 SPL 声级)。
您还可以轻松地以不同的方式分割数据,使用重叠块等。
参考:
-scipy.io.wav文件
- dB (SPL)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)