2012-05-05 102 views
1

我有一個wav文件,所有我需要的是執行一個功能,當一個顯着強度的聲音播放。如何在時間上獲得我的wav文件的聲音幅度?

例如:如果有強度等級爲10(假定)的聲音正在播放,所以我希望當聲音的強度等級從10增加時,應該觸發一個事件來告訴我有一個非凡的聲音。

我想谷歌一下,發現如果我們讀wav文件的字節,並讀取數據塊(44字節)之後,我們得到了用戶的數據(聲音數據)。但是當我分析這些數據時我感到困惑,因爲在沒有聲音的地方也有相同的數據。

我希望我的問題是很清楚的。 所以請我需要你的建議/想法和參考。

回答

3

你不需要爲此進行FFT - 你可以只計算短期RMS功率,並且當其超過規定的閾值,那麼你有一個「響亮」的聲音。

power_RMS = sqrt(sum(x^2)/N) 

,其中x是樣本值,N是在要計算RMS功率樣本的數量 - 我會建議使用一段說10毫秒,其在44.1 kHz採樣給出N = 441個樣本率。

+0

將ü請詳細說明這條線「我會建議使用一段說10毫秒= 441樣本,其中44.1 kHz採樣率。」 – azeem

+0

簡單 - 您只需在波形中的每個N樣本塊上計算power_RMS。如果您有441 kHz的採樣率,我建議使用N = 441,但您可能需要根據您的特定應用嘗試塊大小。 –

+0

讓我試試這個。 – azeem