跳至內容

相位聲碼器

維基百科,自由的百科全書

相位聲碼器一種以傅立葉轉換為基礎的頻率處理工具,廣泛應用於音訊信號的時間伸縮(time-stretching)與音高轉換(pitch-shifting)等領域。為聲碼器演算法的一種,使用相位聲碼器策略還可以實現許多其他特殊效果。[1]

簡介

[編輯]

相位聲碼器會將input訊號分解成各個區塊,並對各個區塊進行短時距傅立葉變換(STFT),得到音頻的訊息,例如:強度(amplitude),和相位(phase)。由於每個聲音都是由不同頻率的許多諧波部分組成的,因此可以使用該資訊來猜測在該分析幀中播放或唱出的音符。[2]在所需的頻譜變化之後,透過反向快速傅立葉轉換(inverse FFT)處理重新合成,將每個段返回到時間域。然後將修改後的段落相加。

短時距傅立葉轉換(STFT)

[編輯]

原理

[編輯]

相位聲碼器第一個核心機制就是STFT,本身為一種傅立葉轉換(Fourier Transform)的變形,分析非平穩訊號(非恆定頻率),核心概念為將input訊號拆成各種短段,然後再對每一段進行快速傅立葉轉換。又稱加窗傅立葉轉換(Windowed Fourier Transform)。用於描繪頻域與時域的變化,是頻譜分析重要的工具。在基於軟體定義無線電(SDR) 的頻譜顯示中常用的。覆蓋 SDR 整個範圍的全頻寬顯示器通常在桌上型電腦上使用具有 2^24 點的快速傅立葉變換 (FFT)。[3]

數學公式

[編輯]

連續STFT

[編輯]

在連續時間情況下,要變換的函數乘以一個僅在短時間內非零,它的數學公式基本形式為以下式子:

為原始訊號;(−t)為窗函數(Window Function),集中在 t 附近,通常為高斯窗函數漢窗函數為頻率變數;為一個表示訊號隨時間和頻率變化的相位和振幅的複函數。通常沿時間軸或兩個軸進行相位展開,τ和頻率軸,,以抑制STFT 相位結果的任何跳躍不連續性。[4]

這個式子其實就是Convulution的樣子,而這個公式等價於

窗函數的選擇會影響其結果,如果窗函數是Rectangular,時間會比較集中,但會有leakage;如果是Hamming或是Gaussian,整體能量會比較集中,且比較平滑。

離散STFT

[編輯]

然而在大多數情況下,你不會處理連續訊號。在離散的時間下,要轉換的資料分解成區塊,每一段進行傅立葉轉換,它的數學公式基本形式為以下式子:

為第幾個窗口位置。對每個m乘上窗函數,再做DFT。

限制

[編輯]

海森堡不確定性原理

[編輯]

對於任意函數,時間域與頻率域的能量集中程度不能同時任意小:

意思是無法同時獲得非常精細的時間和非常精細的頻率資訊,換句話說,STFT本質上是折衷,當窗越短,時間解析度高,但頻率模糊;相反地,當窗越長,頻率解析度高,但時間模糊。這也是後來產生 Wavelet TransformWigner-Ville 分布 等替代方法的原因。

用途

[編輯]

STFT應用在很多領域,如果是語音和音樂領域,有應用在語音辨識及樂譜分析,分析一首樂曲裡的和聲進行和音高變化;在醫學方面則是腦電圖(EEG)的分析和心電圖(ECG)的雜訊過濾;在工程方面,機器有時出現間歇性振動或軸承故障,而STFT 可追蹤這些不穩定震動頻率,做出預警或自動維修建議。

相位重建(Phase Unwrapping)

[編輯]

另外一個機制是相位重建,在許多訊號處理領域中(例如雷達、光學干涉儀MRI合成孔徑雷達 SAR),測量的相位常常是被包裹的(wrapped)。換句話說,所量得的相位值僅限於,這會導致一個問題:原始訊號的連續相位會出現跳躍(phase jumps),因為超出區間的部分被模回到範圍內。[5]

常見解法

[編輯]

常見主要有三種:第一個為積分法(Path-following / Integration),按空間或時間順序比對相位差異,當差異超過 就加減 修正;第二個為最小平方法,用最佳化的方式找出最平滑的相位曲面;第三個為品質指標引導,根據相位變化平滑程度的「可信度」來選擇展開順序。

時間拉伸(Time-Stretch)

[編輯]

指在不改變音調的情況下,對音訊檔案進行處理,使其播放速度變慢或變快的過程。時間拉伸在音樂製作中用於調整循環或樣本的節奏,或將人聲或樣本融入不同節奏的項目中。[6]

當我們要拉長訊號(如兩倍慢放),我們會使用一個比原始 hop size 更小的合成 hop size

音樂

[編輯]

如今相位聲碼器的技術被包裝成編曲工具auto-tune,被廣泛運用在流行音樂當中,不僅可以透過時間縮放達到調整音樂節拍的效果;還可以藉由音高的微調,將音訊量化到指定的音高,達到修正走音的功能,也可以將人聲轉換成類似機器人的聲音,或是高頻類似花栗鼠的聲線。

參考資料

[編輯]
  1. ^ William A. Sethares. phase vocoder in Matlab. sethares.engr.wisc.edu. [2025-05-11]. 
  2. ^ BABY Audio - What is a Phase Vocoder? How Pitch Correction Works in Music Production. BABY Audio. 2024-07-16 [2025-05-13] (美國英語). 
  3. ^ Short-time Fourier transform, 2025-03-03 [2025-05-30] (英語) 
  4. ^ Short-time Fourier transform, 2025-03-03 [2025-05-30] (英語) 
  5. ^ Unwrapped Phase - an overview | ScienceDirect Topics. www.sciencedirect.com. [2025-06-04]. 
  6. ^ Simms, Sara. What is time stretching? When to use it in music production. Native Instruments Blog. 2024-02-09 [2025-06-04] (美國英語).