搜尋意圖: 如果你在找「頻譜圖 是什麼」或「頻譜圖 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 時頻表示,將音訊訊號分解為時間與頻率的二維矩陣,視覺化與分析訊號特徵的基本工具。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
時頻表示,將音訊訊號分解為時間與頻率的二維矩陣,視覺化與分析訊號特徵的基本工具。
頻譜圖(Spectrogram)是音訊訊號分析與可視化的基礎工具,打開任何現代音訊編輯軟體都能看到它的身影。從物理上,它揭示了聲音在時間與頻率維度上的能量分布;從機器學習角度,它是現代語音與音訊分類模型的主要輸入特徵。
短時傅立葉變換(STFT)基礎
傅立葉變換將時域訊號轉換為頻域,但喪失時間資訊:無法知道某個頻率何時出現。短時傅立葉變換(Short-Time Fourier Transform,STFT)克服此問題:
STFT(t, f) = ∫ x(τ) × w(τ - t) × e^(-j2πfτ) dτ
簡化言,STFT 是:
- 將訊號分幀(幀長 N,幀移 M)。
- 對每一幀應用窗函數,減少邊界失真。
- 對每一幀進行 FFT。
- 提取每幀的頻譜幅度(magnitude)與相位(phase)。
頻譜圖的構造
輸出:時頻矩陣 S,維度 (F, T),其中 F 是頻率 bin 數,T 是時間幀數。
S[f, t] = | STFT(t, f) |
視覺化:
- 橫軸:時間(秒)
- 縱軸:頻率(Hz)或梅爾刻度(Mel)
- 色深或灰度:能量大小(dB 或線性刻度)
參數與設計選擇
窗函數(Window Function)
- 漢寧窗(Hanning):最常用,50% 重疊時無光譜洩漏。
- 哈姆明窗(Hamming):旁瓣更低,但主瓣稍寬。
- 高斯窗:時頻局限性最好(Heisenberg 原則的下限)。
- 權衡:寬窗口 → 頻率解析度好但時間解析度差;窄窗口 → 反之。
幀長(Window Size)與幀移(Hop Length)
- 語音:通常 20-25 ms 幀長,10 ms 幀移(50% 重疊)。
- 音樂:4096-8192 點(~ 93-186 ms @ 44.1 kHz),2048 點幀移。
- 時間-頻率取捨:長幀 → 頻率解析度高但時間解析度低;短幀 → 反之。
FFT 大小(N_fft)
- 通常 512(10 ms @ 51.2 kHz)到 2048(~ 46 ms)。
- 零填充(zero-padding)到 2 的冪,加速 FFT 計算。
頻率軸線性 vs. 梅爾
- 線性頻譜圖:頻率均勻分布,適合頻譜分析細節。
- 梅爾頻譜圖:頻率按梅爾刻度分布,符合人耳感知,適合音樂與語音任務。
頻譜圖的物理與直觀解釋
在頻譜圖上可直觀看到:
基頻與諧波
- 基頻:最低的水平暗紋。
- 諧波:整數倍基頻位置的明亮線條,對語音辨識中的說話者識別很重要。
甲音與共振峰
- 共振峰(Formants):語音特徵,表現為集中的能量帶。
- 不同元音有不同的共振峰特徵(例如 /a/ 的 F1 ~ 700 Hz, F2 ~ 1200 Hz)。
瞬發聲學事件
- 爆破音、摩擦音等的突發能量。
- 音樂中鼓聲、鋼琴敲擊的瞬間。
白噪聲 vs. 有色噪聲
- 白噪聲:全頻均勻亮度。
- 背景噪聲:通常能量集中在低頻。
頻譜圖與神經網路
現代語音與音訊識別模型(CNN、Transformer)將頻譜圖視為圖像:
- 梅爾頻譜圖 (1, F, T) → 單通道 2D "圖像"。
- 特定層的特徵圖表達了時頻模式(如過渡特徵、音樂節拍、重音)。
- 卷積濾波器自動學習有意義的時頻模式,而無需人工設計。
頻譜圖的數據增強
在訓練中常應用以下增強以提升模型魯健性:
SpecAugment
- 時間軸遮罩(Time Masking):遮蓋連續的時間幀。
- 頻率軸遮罩(Frequency Masking):遮蓋連續的頻率 bin。
- 簡單但有效,在 ImageNet 等視覺任務啟發下設計。
時間拉伸/變速
- 改變時間軸尺度(保持內容),模擬不同說話速率。
頻率位移
- 平移頻率軸,模擬不同的採樣率或聲音特性。
加性雜訊
- 在頻域或時域加入背景噪聲。
相位重建與聲碼器的角色
STFT 提取幅度譜但通常丟棄相位。要恢復波形需要:
Griffin-Lim 演算法(傳統)
- 迭代相位重建,但質量有限(重建語音聽起來機械化)。
神經聲碼器(現代)
- WaveNet、WaveGlow、HiFi-GAN 等,直接從梅爾頻譜生成波形。
- 避免相位重建的複雜性,輸出自然音質。
頻譜圖的評估與詮釋
視覺上檢視頻譜圖:
- 檢查背景雜訊水平(頻譜圖底部的「噪聲地板")。
- 識別主要頻率成分與異常(如爆炸聲、金屬聲)。
- 評估訊噪比(SNR)。
- 對比正常與異常樣本,找出判別特徵。
開源工具
- Librosa:Python 函式庫,繪製與分析頻譜圖標準選擇。
- matplotlib:基礎繪圖。
- Audacity:可視化音訊編輯工具。
常見問題
頻譜圖上的時間-頻率解析度取捨是什麼?
這源於 Heisenberg 時間-頻率不確定性原則:無法同時達到任意好的時間解析度與頻率解析度。幀長越長(如 2048 點),FFT 輸出的頻率 bin 越多,頻率解析度越高,但每幀代表的時間較長,時間解析度差(無法精確定位快速變化事件,如爆破音)。幀長越短,時間解析度好但頻率解析度差(低頻的相鄰頻率分不開)。實踐中:語音用 20-25 ms 幀長達到良好平衡;音樂用 46+ ms 以捕捉和弦與低頻結構。
梅爾頻譜圖相比線性頻譜圖有什麼好處?
梅爾刻度將頻率軸轉換為符合人耳感知的非線性尺度,低頻區間密集、高頻稀疏。對於機器學習模型,梅爾頻譜圖有幾個優勢:一、信息密度均勻(低頻的小變化與高頻的大變化都被等權對待),神經網路更易學習;二、減少高頻噪聲的影響,特別是在有背景雜訊的環境;三、梅爾頻譜常用於音樂與語音處理,已有大量預訓練模型基於它。缺點是喪失了原始頻率信息,若需要精細頻率分析(如樂器識別中的諧波檢測),線性頻譜更合適。
為什麼神經網路需要 SpecAugment,而傳統方法不用?
深度神經網路有強大的擬合能力,容易過擬合特定訓練集的視覺模式。SpecAugment 是一種正則化技巧,透過隨機遮罩時間和頻率區間,強迫模型學習更魯健、不依賴特定時頻位置的特徵。這相當於告訴模型:「聲音內容可能偏移時間、被雜訊遮蓋」,因此必須學習對這些變化不敏感的表示。傳統方法(如 GMM-SVM)的模型容量有限,不容易過擬合,因此不需要額外的資料增強。但現代深度模型(CNN、Transformer)若不用 SpecAugment,訓練集上表現好但測試集表現大幅下滑。