在wav文件中的特定点的分贝值

我试图衡量的领导,并导致了一个WAV文件。 最好是最后5秒左右。 我基本上是试图分配一个数值,意思是“这首歌有一个缓慢的领先”或“这首歌有一个突然的结束”。

我的想法是得到dB值的斜率,但我似乎无法find一个Linux命令行工具,将给我dB值。 我知道可以测量它们,因为Audacity具有波形(db)视图。

在这里输入图像说明

基本上我正在寻找一种方法来收集数据点来复制这个图表,所以我可以得到斜率。

编辑 – 在Java中工作

我不知道任何命令行工具,但是使用scipy库编写具有此功能的python脚本非常简单。

我们可以使用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] 

其中dbs现在是文件的每个块的dB值列表(不一定是真正的SPL声级)。

您还可以使用重叠的块等以不同的方式轻松分割数据

参考文献: – scipy.io.wavfile – dB(SPL)

以下是关于在Java中读取音频文件,绘制波形和波形概览的几个问题。

我如何用Java创建一个声音文件?

我如何从我的wav文件中绘制声音数据?

Java程序为音频文件创建PNG波形