我有一个wav文件,所有我需要的是在播放非常强烈的声音时执行一个功能。
例如:如果有强度等级10(假设)的声音正在播放,那么我希望当声音的强度等级从10增加时,应该触发一个事件告诉我有一个非凡的声音。
我试图google它,发现如果我们读取wav文件的字节并读取数据块(在第44个字节之后),我们就会得到用户数据(声音数据)。但是当我分析这些数据时,我感到困惑,因为在没有声音的情况下也存在相同的数据。
我希望我的问题很清楚。 所以,我需要你的建议/想法和参考。
答案 0 :(得分:3)
你不需要FFT - 你可以只计算短期RMS功率,当它超过预定的阈值时,你会发出“响亮”的声音。
power_RMS = sqrt(sum(x^2) / N)
其中x是样本值,N是您想要计算RMS功率的样本数 - 我建议使用10 ms的周期,以44.1 kHz的采样率给出N = 441个样本。