2012-04-15 35 views
1

我想爲我的mp3播放器製作16段圖形均衡器。從mp3格式中提取10段均衡信息的方法

但是,我不知道從哪裏開始,因爲我對音頻處理沒有經驗。

所以,我真的不知道從哪裏開始從mp3格式中提取頻帶(?)。

有人請建議我一個簡單的解決方案來做到這一點?

啊,還有,是否有任何開源的MP3播放器,很容易修改和建立爲Windows應用程序?

+2

我不明白你爲什麼要**提取**頻段來設置均衡? – 2012-04-15 08:06:44

+0

對不起,我不需要設置均衡性......我只是想製作某種圖形化的16頻帶酒吧? ...我不知道如何提取這些信息...... – FoolyCooly 2012-04-15 08:31:49

回答

8

我認爲你要找的是一個頻譜分析儀。它顯示了音頻頻譜各個頻率範圍的瞬時能量水平。對於大多數人來說,它基本上是眼睛的糖果。它不會修改信號。

另一方面,圖形均衡器可讓您在各個頻段增強或衰減音頻的能量。它絕對會修改信號。大多數人使用圖形均衡器來提升部分頻譜效果,例如提升低音效果。

發燒友通常使用連接到麥克風(不是放大器)的頻譜分析儀來監視房間的響應,在該房間中,通過圖形均衡器播放白噪聲。然後他們調整均衡器以平坦化頻率響應,從而補償房間的聲學效果,讓您對錄製的音頻有更純粹的聽覺。這些人通常會非常沮喪,如果你再弄亂均衡器設置。 :)

你可以看看流行的Linux的MP3播放器,如RhythmBox,Banshee,VLC,甚至Audacity。如果你想寫自己的,這裏有一些說明。假設你知道如何編寫GUI程序在Windows,只是想和你一個不錯的頻譜分析儀,你真的需要做的是以下幾點:

  1. 點擊到解碼階段後的信號路徑。

  2. 將音頻縮混爲單聲道,通常意味着只需將左右樣本添加到一起。注意要麼爲音頻使用浮點數(應將其縮放爲+/- 1),要麼在添加之前將(假定爲16位)樣本轉換爲32位整數,以避免在添加短路時發生溢出。

  3. 測量一些樣本數量(稱爲窗口),通常爲512,1024或2048(總是選擇2的冪)。在分辨率(較大窗口具有較高分辨率),成本(更多樣品需要更多時間處理)和響應(較大窗口需要更多時間積累,降低分析儀的幀速率)之間存在折衷。

  4. 通過快速傅立葉變換(FFT)運行這些樣本。請參考您使用的FFT庫的文檔(FFTW是一個很好的文檔),但輸出通常是一組複數,關於中間對稱。

  5. 如果輸出是對稱的,只使用前半部分。如果它不是對稱的,那麼使用整個事情。從開始到結束(或中間)的每個複數都以正弦曲線的頻率從0Hz到音頻採樣率的一半進行編碼。如果音頻爲44.1 kHz,並且您在FFT中選擇了1024個採樣,則每個數字代表22050 Hz/512 = 43 Hz。

  6. 取每個複數並對其實部和虛部進行平方並添加這些數字。您將以每個垃圾箱中的能量(即能量平方)結束,這是一個真正的正數。

  7. 通過將FFT頻段相加,將FFT頻段分組爲頻段。例如,如果您在上面的示例中使用了512個垃圾箱,並將它們分組爲51,那麼您將擁有10個2196 Hz的頻段。這在低頻率下提供的分辨率太低,因此人們通常使用對數間隔的頻帶:0(0-43Hz),1(43-86Hz),2-3(86-172Hz),4-7(172- 344 Hz),8-15(344-688 Hz)等。

  8. 您現在可以直接顯示功率和,或者計算每個頻段的平均值,然後取平均值(RMS能量)並繪製該圖。要以分貝顯示數值,請計算RMS能量,然後繪製如下圖:20 * log10(RMS/32768)。 16位音頻的值從0 dB(滿量程)到-90 dB(無聲)。

  9. 不斷重複步驟2-8,每次更新顯示。

  10. 去打動你的朋友。

祝你好運。如果你看不到16千赫以上的能量,請不要驚慌。 mp3編碼算法可以濾除16 kHz以上的數據,以幫助進行壓縮。

p.s.如果你真的很好,並且有解碼器的來源,那麼你可以在解碼器中仍然處於頻域時訪問音頻,並將其用於頻譜分析儀。您必須根據窗口大小採取解碼器提供的內容,但計算成本幾乎爲零。並且要注意,mp3使用離散餘弦變換而不是傅立葉變換來將音頻移入和移出頻域,因此您的能量值將不同於正確的FFT。

+0

是否有可能通過這種方式製作10段均衡器?請回復.. – 2013-05-15 04:10:21

+1

是的,@iDroid。在轉換到頻域之後,您可以將每個頻段中的值乘以比例因子(> 1以提升,<1以衰減),其值來自您嘗試應用的10個均衡頻段。換句話說,將您的10個均衡頻段設置映射到N個頻率箱並進行相乘。然後執行逆FFT以使音頻回到時域。如果均衡引入僞像(即窗口邊界處的聲波存在不連續性),則可能需要將FFT與N/2重疊,並將音頻窗口函數應用於音頻。 – 2013-05-15 16:35:43