如何使用Sox检测音频文件中的低音?
问题描述:
我有几个小音频文件,我需要找出哪些包含响亮的声音。 Sox的stat
命令获得最大和最小振幅,总是在-1和+1左右。如何使用Sox检测音频文件中的低音?
例如,该声音响亮:
$ sox out6.wav -n stat
Samples read: 220500
Length (seconds): 5.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.999939
Minimum amplitude: -1.000000
Midline amplitude: -0.000031
Mean norm: 0.079951
Mean amplitude: -0.002050
RMS amplitude: 0.244085
Maximum delta: 0.386505
Minimum delta: 0.000000
Mean delta: 0.007803
RMS delta: 0.024331
Rough frequency: 699
Volume adjustment: 1.000
比这一个:
$ sox out5.wav -n stat
Samples read: 220500
Length (seconds): 5.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.999939
Minimum amplitude: -1.000000
Midline amplitude: -0.000031
Mean norm: 0.035560
Mean amplitude: -0.000054
RMS amplitude: 0.121909
Maximum delta: 0.085022
Minimum delta: 0.000000
Mean delta: 0.002599
RMS delta: 0.006305
Rough frequency: 363
Volume adjustment: 1.000
但它们都具有相同的最小和最大振幅。
如何确定哪一个最响?
答
峰值振幅并不能很好地衡量整体响度。所有这些测量都是查找一段时间内发生的最大或最小样本。这样做的问题是,全零和单独一个的剪辑将测量与全1的剪辑相同的最大峰值幅度。 RMS(均方根)幅度是一个更好的响度标准。其计算方法是将所有样本的平方相加,然后取结果的sqrt。 https://en.wikipedia.org/wiki/Amplitude
我肯定会去RMS幅度 – jojek