如何使用 Sox 检测音频文件中的响亮声音?

Posted

技术标签:

【中文标题】如何使用 Sox 检测音频文件中的响亮声音?【英文标题】:How to detect lound sound in audio files using Sox? 【发布时间】:2015-10-13 14:02:21 【问题描述】:

我有几个小的音频文件,我需要找出哪些包含响亮的声音。使用 Sox 的 stat 命令,我得到最大和最小振幅,它们始终在 -1 和 +1 左右。

比如这个声音比较大:

$ 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

但它们的最小和最大振幅相同。

如何确定哪个声音最大?

【问题讨论】:

我肯定会选择 RMS 幅度 【参考方案1】:

峰值幅度不是衡量整体响度的好方法。所有这些测量所做的都是找到一段时间内发生的最大或最小样本。这样做的问题是,一个全零和一个单一的剪辑将测量与全一剪辑相同的最大峰值幅度。 RMS(均方根)幅度是响度更好的衡量标准。它的计算方法是对所有样本的平方求和,然后取结果的 sqrt。 https://en.wikipedia.org/wiki/Amplitude

【讨论】:

以上是关于如何使用 Sox 检测音频文件中的响亮声音?的主要内容,如果未能解决你的问题,请参考以下文章

检测音频文件中的小峰值

Sox:使音频文件的前 100 毫秒静音,然后淡入

SoX - Java 的声音交换

相同的声音重叠使其非常响亮。提示与技巧?

使用 SoX 更改音频文件中某个时间范围的音量级别

如何更改 SoX 的录音设备?