如何向非技術人員解釋“稀疏傅立葉變換”演算法?

LynnShaw發表於2015-09-15

這個問題來自 Quora,下面是來自 Tanooj Luthra 的回覆。

讓我們來演奏一架想象中的鋼琴。

鋼琴的每個琴鍵都對應一個特定頻率的聲音。例如,一個比較有名的頻率是國際標準音A(440赫茲)。當有琴鍵按下時,你聽到的聲音是一個完美的正弦波,振盪在440赫茲。同樣,中央C對應的頻率約為261赫茲聲波。

不過,每次只演奏一個音符太單調了,我們來嘗試幾個音符同時演奏。有趣的是,兩個各不相關的聲音結合起來,就創造一個全新的獨特聲音。它不再只是單一的頻率,這是兩個頻率的結合。如果琴鍵一起按下我們會發現,對應的頻率也疊加在了一起。

三個音符組合形成的最終聲音訊號!

快速傅立葉變換(FFT)可以讓我們將這個新的聲音解構為原始的頻率,從本質上得到這個和絃是由哪些琴鍵組成的。現在我們退一步,只演奏一個音符,看看這個原始訊號及其FFT的示例圖。

這幅圖中的數字沒有曲線形狀所代表的意義那麼重要。上面圖中藍色表示聲音的波形,表示了其幅值相對於時間的關係。它是一個單一的頻率,表示只演奏了音符A。FFT變換後,我們得到了一個很有趣的圖形,幅值相對於頻率的關係。此圖中單個波峰表示原始訊號中的單一頻率,而大部分的頻率不存在。前進一點點,在我們的和絃例子中有兩個音符C和A,我們的FFT將有兩個波峰!一個會出現在相同的位置,而另一個將出現在較低的頻率。總體來說,一個訊號的FFT將每個“純”頻率相加得到最終的輸出結果。

我們給鋼琴加一個歌手伴奏。

人的聲音訊率範圍很寬,多種多樣的頻率組成了多種多樣的聲音(詞語)。正如下面的圖片,音訊訊號可能會非常非常複雜。相應的FFT在一定比例上有成千上萬的非零頻率(圖上的紅色曲線將有成千上萬不同高度的峰值)。舉個例子,即使是一個歌手想發出F音,最終也會產生許多不同的頻率,因為人聲不是一個理想的樂器。

說出不同詞語時的音訊訊號。顯然不像上面的標準音A那樣光滑波動!

現在,我們已經有點明白FFT了,現在來看看MIT的稀疏FFT。當我們為鋼琴加了歌手伴奏後,我們有一個C和A的和絃以及一個歌手努力維持唱出的F音,然後得到了一個參差不齊的音訊訊號及其FFT。原本的FFT將計算出每個頻率的幅度,但我們也許可以利用這樣一個事實,即大部分的頻率將集中在C、A和F周圍!因此,如果我們只計算組成最終音訊訊號的三個頻率,可以複製出一個足夠接近於原音樂樂譜的聲音。這就是稀疏FFT在做什麼。

這篇論文注意到一個事實,在視訊訊號中有89%的頻率不是必須存在的。只計算11%的頻率的稀疏FFT,訊號質量不會惡化太多。雖然視訊的頻率和訊號的相關概念更偏向技術性,但是理論同樣適用於鋼琴和歌手。

相關文章