簡體   English   中英

AudioKit FFT轉換為dB?

[英]AudioKit FFT conversion to dB?

第一次發帖,感謝偉大的社區!

我正在使用AudioKit並嘗試將頻率加權濾波器添加到麥克風輸入,因此我試圖理解AudioKit AKFFTTap中出現的值。

目前我正在嘗試將FFT緩沖區轉換為dB值

for i in 0..<self.bufferSize {
    let db = 20 * log10((self.fft?.fftData[Int(i)])!)
    print(db)
}

我期待的值在-128到0的范圍內,但是我得到了近-200dB的奇怪值,當我用麥克風吹出讀數時它只能達到-60左右。 我沒有正確接近這個嗎? 我假設從EZAudioFFT引擎輸出的值將是普通的幅度值,並且正常的dB轉換數學將起作用。 有人有主意嗎?

提前感謝您對此問題的任何討論!

你需要添加self.fft?.fftData所有值(考慮在添加之前將負值更改為正值),然后將其更改為分貝

數組中的值對應於FFT中的區間值。 使單個箱包含接近1的幅度值意味着在該窄頻帶中存在大量能量,例如非常大的正弦曲線(具有單個頻率的信號)。

正常的聲音,例如你在麥克風上吹的聲音,會在整個頻譜中傳播它們的能量,也就是說,在許多箱子而不是一個箱子里。 因此,通常隨着FFT大小的增加,幅度會降低。

單個垃圾箱的-40dB的幅度非常大。 如果您嘗試播放音調,則應在其中一個箱中看到明顯的峰值。

暫無
暫無

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

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