2009-08-06 107 views
1

AVAudioRecorder的peakPowerForChannel和averagePowerForChannel方法有什麼區別?AVAudioRecorder:峯值和平均功率

爲什麼返回的值是負值?當聲音的幅度上升時,是不是應該爲0,沒有聲音?我怎樣才能轉換成更「可讀」的格式?

謝謝。

回答

2

雖然我沒有看過這些值,但因爲它與音量有關,所以我猜測它是以分貝的變化來衡量的。

0將是最大響度,任何比這更低的噪音可以表示爲分貝下降。

積極和消極無關緊要。請記住,這是一個對數刻度,用於衡量響度(或感知響度)的差異。

13

峯值功率意味着取所有樣本的所有絕對值的最大值。這對防止剪輯音頻很有用。

平均功率是樣本的RMS(均方根)。這對確定音頻對人耳來說有多大聲很有用。

該值爲負數,因爲它以分貝表示,其中0 dB等於音頻系統的最大值。這是一個日誌10的規模,和用於轉換的計算公式爲:

db = 10 * log10 (level); 

其中db是分貝和電平是標量值範圍從0.0到1.0。所以當等級爲0.0(無聲)時,結果爲負無窮。

如果你想要一個「可讀」格式,你可以使用電平表(UIProgressView或你自己的),其中最大值爲0.0,最小值爲-60.0(可以根據噪底調整)。一旦你習慣了分貝,它們比線性水平更有意義。