簡體   English   中英

Python:實時或從 wav 文件獲取音量分貝級別

[英]Python: Get volume decibel Level real time or from a wav file

對於項目工作,我需要通過錄制的音頻文件或使用麥克風實時錄制來測量音量。 在我的初步研究之后,我嘗試使用 soundfile 庫。 該文件是使用20*np.log10(np.sqrt(np.mean(np.absolute(a)**2)))讀取的,並使用20*np.log10(np.sqrt(np.mean(np.absolute(a)**2))) ,我已經計算了 dB 值。 我得到了聲音文件的負值。 但是正常的聲音可能在 50-70 dB 的范圍內,而我得到的是負值。 有人可以幫我解決這個問題嗎?

簡短回答:dB 與 dB 不同。 你的結果可能是正確的。

長答案:dB 級別總是定義與某個參考值的關系。 對於音頻/聲學,有很多參考值,您需要指定您使用的是哪一個,以 dB 為單位的值才有意義。 當你說

正常聲音可能在 50-70 分貝范圍內

這不是一個准確的陳述,你可能是說

正常聲音可能在 50-70 dB SPL 范圍內

您給出的值相對於20 µPa參考聲壓級

在數字系統中,聲音文件通常由浮點數< 1 ,然后我們說dB FS(dB 滿量程) ,參考值為 1。根據數學定律,dB FS 值為負。

同樣很明顯,您不能直接將 dB FS 值與 dB SPL 值相關聯:如果您播放相同的音頻文件(即取一些 dB FS 值)並播放兩次,但調高揚聲器的音量旋鈕,它將導致到兩個不同的值 dB SPL(你聽到的)。

您需要添加聲音參考,即 20 log10(P rms_value/P ref)+120 dB以獲取dB標度范圍內的數據,Pref 可以從您的輸入模塊進行調整

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM