我使用XNA庫錄製麥克風輸入(我不認爲這真的是技術特定的,但它從來沒有受傷)。每次我得到一個樣本,我想計算分貝。我已經做了很多的搜索在互聯網上,並沒有找到一個堅如磐石的例子...計算分貝
這是我從一個樣本計算分貝的嘗試:
double peak = 0;
for (var i = 0; i < _buffer.Length; i = i + 2)
{
var sample = BitConverter.ToInt16(_buffer, i);
if (sample > peak)
peak = sample;
else if (sample < -peak)
peak = -sample;
}
var decibel = (20 * Math.Log10(peak/32768));
如果我輸出的分貝值在屏幕上我可以看到,隨着我變得越來越柔和,我變得越來越響,越低越好。然而,當我絕對安靜時,它總是徘徊在-40左右......我會認爲它會是-90。我必須在上面的塊中計算錯誤?從我在一些網站上看到的-40相當於「軟談話」......但是,它完全安靜。
此外,如果我靜音我的麥克風,它會直接到-90。
我做錯了嗎?
有可能是背景噪音? – mauris 2010-11-11 07:42:06
有用的研究人員找到此頁:float rms2db(float value) { return 10 * log10(value); } – 2016-02-28 13:29:07