jgr*_*een 3 java linux audio command-line
我正在尝试测量导入和导出WAV文件的速度。优选地,前5秒和后5秒左右。我基本上是在尝试分配一个数值,表示“这首歌的节奏很慢”或“这首歌的节奏突然”。
我的想法一直是获取dB值的斜率,但是我似乎找不到能够提供dB值的Linux命令行工具。我知道它们可以测量,因为Audacity具有Waveform(db)视图。

基本上,我正在寻找一种收集数据点以复制此图的方法,以便获得斜率。
编辑-在Java中工作
我不知道有任何命令行工具可以执行此操作,但是使用scipy库编写具有此功能的python脚本非常简单。
我们可以scipy.io.wavfile用来做文件IO,然后自己计算dB值(请注意,这些值不一定是标准dB值,因为这些值将取决于您的扬声器和音量设置)。
首先我们得到文件:
from scipy.io.wavfile import read
samprate, wavdata = read('file.wav')
Run Code Online (Sandbox Code Playgroud)
然后,我们将文件分成多个块,其中块的数量取决于您要测量的音量的精细程度:
import numpy as np
chunks = np.array_split(wavdata, numchunks)
Run Code Online (Sandbox Code Playgroud)
最后,我们计算每个块的体积:
dbs = [20*log10( sqrt(mean(chunk**2)) ) for chunk in chunks]
Run Code Online (Sandbox Code Playgroud)
这里dbs现在是分贝值(同样,不一定是真正的SPL声级)为您的文件中每个块的列表。
您还可以使用重叠的块等以不同的方式轻松拆分数据。
参考:-scipy.io.wavfile - dB(SPL)