# 聲音專有名詞筆記 ###### tags: `Voice Domain` `Note` ## 聲音的三個要素 ### 響度 聲音的大小,也就是震幅高低,我們稱為<font color="red">時域</font>。 ### 音高 表示人耳對聲音調子高低的主觀感受,我們稱為<font color="red">頻域</font>。 ### 音色 由聲音波形的諧波頻譜和包絡決定。 ## 短時距分析 在聲音訊號的處理中,通常假設聲音的特徵是<font color="red">緩慢變化</font>的,因此可以導出「短時距」的處理方法。 將一段聲音訊號<font color="red">分成若干個短時距</font>,並且假設短時距內的聲音訊號其特徵值是不變的。 這個短時距習慣上被稱為一個<font color="red">「音框」</font>,而分析時音框可能重疊也可能不重疊,一般的語音處理取的短時距通常為20ms-30ms不等。 所謂短時段語音分析就是將一個音框中的語音信號作分析,以一個音框為單位,求出此時的語音特徵參數。若將此組特徵參數是為一個向量,則一串音框即可得出一串的特徵向量,各參數沿著時軸的變化,就可以明顯的沿著音框看出來。 ## 音框 [窗函數(window function)] ### wiki 窗函數是一種除在給定區間之外取值均為0的實函數。 為了不使窗內外不會有太劇烈的變化,通常我們會使用<font color="red">漢明窗</font>,它具有壓抑短時距訊號的兩端而保持中間段的特性。  ### 漢明窗(Hamming Window) 為了讓各個音框在頻譜上的能量更集中,我們將每個音框內的取樣值再乘上一個漢明視窗  *N值代表音框大小 ## LPC 擷取特徵參數 線性預測編碼(LPC,Linear predictive coding) ### wiki 主要用於音頻信號處理與語音處理中根據線性預測模型的信息用<font color="red">壓縮形式</font>表示數字語音信號譜包絡(spectral envelope)的工具。 假設目前的聲音取樣值,可由在前面的P個取樣值以線性組合來預測,因大部分的語音訊號都具有週期性。  *a[k]即稱為線性預測係數,共有P個,P值可以自己決定。 ## 頻譜(Spectrum) ### wiki 一個訊號是由哪些頻率的弦波所組成,也可以看出各頻率弦波的大小及相位等資訊。 ## 倒頻譜(Cepstrum) 在做訊號分析時,常會把時域裡的波形透過<font color="red">傅利葉轉換</font>到頻域,使用頻譜觀察訊號的現象。 把頻譜裡每個頻率取<font color="red">對數值</font>,再做傅利葉反轉換回到時域,就可以得到一組新的參數,就叫倒頻譜參數。 倒頻譜參數可以有效的把<font color="red">發音腔道</font>跟<font color="red">激發訊號</font>的特性分離,可以精準的計算出發音腔道的參數 ### 傅立葉轉換(Fourier Transform) #### wiki 傅立葉變換是一種線性積分變換,用於信號在<font color="red">時域</font>和<font color="red">頻域</font>之間的變換。 在一般情況下,若不加任何限定語,指的是「連續傅立葉變換」(連續函數的傅立葉變換) 轉換在大部分情況下是可逆的。  *傅立葉變換將函數的時域(紅色)與頻域(藍色)相關聯。頻譜中的不同成分頻率在頻域中以峰值形式表示。 2020/12/27 更新 這是一個近似傅立葉轉換(Almost-Fourier Transform) 的圖形解釋。 我們將兩個不同頻率的純波分別進行近似傅立葉轉換,會看到他們分別在Frequency Domain 的 2Hz and 3Hz 的地方有明顯的突起,將兩個純波合成再做近似傅立葉轉換也會得到相同的結果。  註:[[1]](##Reference) ## 線性預測倒頻譜係數(LPCC,Linear Prediction Cepstral Coefficients) 假設目前的聲音取樣值可由在前面的 p 個取樣值,以線性組合來預測。 將漢明窗的處理後取其自相關係數,透過 <font color="red">Levinson Durbin 演算法</font>求得線性預測係數,最後將線性預測係數轉換成倒頻譜,便得到線性預測倒頻譜係數。  ### Levinson Durbin 演算法 將自相關分析的誤差的能量和達到最小,求線性預測係數變成一個求反矩陣解的問題,再透過Levinson Durbin 演算法求解。 注:需要再查一下,我可能理解有誤。 ## 梅爾倒頻譜係數(MFCC,Mel-Frequency Cepstral Coefficients) ### wiki <font color="blue">梅爾倒頻譜</font>(Mel-Frequency Cepstrum, MFC)係一個可用來代表短期音訊的頻譜。 <font color="blue">梅爾倒頻譜係數</font> (Mel-Frequency Cepstral Coefficients, MFCC)是一組用來建立梅爾倒頻譜的關鍵係數。 梅爾倒頻譜係數即是從這個倒頻譜中推得的倒頻譜(也就是<font color="red">頻譜的頻譜</font>)。 #### 最大特色 於梅爾倒頻譜上的頻帶是<font color="red">均勻分布於梅爾刻度上</font>的,也就是說,這樣的頻帶會較一般我們所看到、線性的倒頻譜表示方法,和人類非線性的聽覺系統(audio system)更為接近。  ### 梅爾刻度(Mel scale) ### wiki 梅爾刻度(又稱Mel尺度)是一種非線性刻度單位,表示人耳對等距音高(pitch)變化的感官。  ### 取得係數流程 **1.將一訊號進行快速傅利葉轉換(Fast Fourier Transform)** 將時域轉換為頻域。 **2.三角帶通濾波器(Triangular Bandpass Filters)** 將能量頻譜能量乘以一組M (通常取22-26)個三角帶通濾波器,求得每一個濾波器輸出的對數能量(Log Energy)。這 M 個三角帶通濾波器在「梅爾頻率」(Mel Frequency)上是平均分佈的。 算法: 假設 frequency=10000, 三角濾波=50, mel_frequency 間距=10000 / 50 = 200 也就是在 mel scale 上 0-200 三角濾波x1, 200-400 三角濾波x1 ... 濾波器有兩個主要目的: * 對頻譜進行平滑化,並消除諧波的作用,突顯原先語音的共振峰。(因此一段語音的音調或音高,是不會呈現在 MFCC 參數內,換句話說,以 MFCC 為特徵的語音辨識系統,並不會受到輸入語音的音調不同而有所影響。) * 降低運算量  註:[[8]](##Reference) **3.對數能量(Log energy)** 2020/12/23 更新 先取對數再做DCT 註:[[2]](##Reference) 2020/12/04 更新 In frequency domain  #### <font color="red">Speech = Convolution of vocal tract frequency response with glottal pulse</font> 註:[[3]](##Reference) ### Vocal Tract Frequency Response Vocal tract make Spectral Envelope  註:[[3]](##Reference) ### Glottal Pulse 要發出聲音時,會將肺部的空氣從聲門內部空間排出,這會迫使空氣通過兩個聲帶之間的狹小縫隙,此時聲帶會彼此互相震動,有點像小號口的雙唇一樣。當兩聲帶打開時會出現一小段稱為聲門脈衝的空氣。當聲音平穩時,這些脈衝會有規律地出現,約50-600次/sec,並產生具有可聞音調(audible pitch)的週期性脈衝序列。  註:[[4]](##Reference) **4.取離散餘弦轉換(Discrete Cosine Transform)** 將上述的對數能量帶入離散餘弦變換,求出L階 (MFCC係數階數,通常取12-16,原因是取低頻段)的Mel-scale Cepstrum引數。 2020/12/23 更新 DCT 相較離散傅立葉轉換(DFT 全名:Discrete Fourier Transform)的優點: 1. 具有 2 倍的解析度 2. 減少 0.5 倍的記憶體,因為少了虛數的部分 但實際上 DCT 的作法其實就是把資料*2,然後再去做IFFT(Inverse FFT) #### DCT 的作用  註:[[2]](##Reference) 包絡是主要是低頻,可以把它看成是一個每秒4個週期的正弦訊號。這樣我們在偽座標軸上面的4Hz的地方給它一個峰值。 頻譜的細節主要是高頻。可以把它看成是一個每秒100個週期的正弦訊號。這樣我們在偽座標軸上面的100Hz的地方給它一個峰值。 2020/12/24 更新 DCT 後我們通常取前 13 個參數,因為後面的參數代表著Spectral Detail or Glottal Pulse,這不是我們需要的。 2020/12/25 更新 DCT 取得的13個參數,我們又會<font color="red">去掉第 1 個Feature</font>,由於它包含部分對數能量。 我們可以從下面的圖知道為何要捨棄第一個參數,JPG 的壓縮原理也使用DCT來做的。 首先會將一張圖分割成一個8*8的矩陣,在做DCT,我們使用一個簡單的Sample代表矩陣。  由上圖的Output可以看到第一個參數的值明顯與其他不同,所以我們才需要去掉它。 **5.差量倒頻譜參數(Delta cepstrum)** 為顯示倒頻譜參數對時間的變化,通常會再加上差量倒頻譜參數,倒頻譜參數相對於時間的斜率,也就是代表倒頻譜參數在時間上的動態變化。 2020/12/24 更新 公式 Δk=f(k)−f(k−1) ΔΔk=Δk−Δ(k−1) 加上差量運算,就會產生 26 維(k + Δk)的特徵向量。 如果再加上差差量運算,就會產生 39 維(k + Δk + ΔΔk)的特徵向量。 一般在 PC 上進行的語音辨識,就是使用 39 維的特徵向量。 註:常用26、39、40 維的特徵向量。 2020/12/26 更新 ### MFCC 的缺點 1. Not robust to noise 2. 我們可能過度干預了原本的聲音資料,尤其是現在的Deep learning的出現,我們去強迫他學習Mel Frequency 上的資訊,這可能不是電腦所需要的特徵。 註:[[3]](##Reference) ### 梅爾頻率(Mel Frequency) 梅爾頻率代表一般人耳對於頻率的感受度,由此也可以看出人耳對於頻率 f 的感受是呈對數變化的。 * 在低頻部分,人耳感受是比較敏銳 * 在高頻部分,人耳的感受就會越來越粗糙 ## 找包絡線 為了簡化頻譜,我們需要找出頻譜的包絡線。 ### 包絡(Envelope) #### wiki 包絡線是幾何學裡的概念,代表一條曲線與某個曲線族中的每條線都有至少一點相切。  註:[[7]](##Reference) ### 方法  註:[[7]](##Reference) 左上為將聲音第一次取頻譜,會發現頻率特別的複雜,所以可以把它當作一種訊號在做一次FFT,會得到右上的圖,右上中間的部分為高頻,兩側為低頻,我們將中間(高頻)的部分全部去掉後變成右下,再轉換回去成左下,左下的圖就是把高頻的部分都去掉後的頻譜圖。 2020/12/23 更新 這裡所說的高/低頻指的是能量的高/低頻,詳細請參考[DCT 的作用](#取得係數流程)  註:[[7]](##Reference) 把左上跟左下合在一起看會發現它比較平滑一點。 ## 共振峰(Formants) 峰值就表示語音的主要頻率成分,我們把這些峰值稱為共振峰,而共振峰就是攜帶了聲音的辨識屬性(就是個人身份證一樣)。  2021/01/03 更新 ## 小波轉換(Wavelet Transform) #### FT(Fourier transform) 可以將Stationary signals 轉換成頻率,但無法提供即時且局部的頻率信號。 #### STFT(Short time Fourier transform) 將一段長時間的聲音訊號分成許多短時的音窗,利用Window function,將每個音窗模擬成Stationary signal,再進行FT。 #### WT(Wavelet Transform) 由於 STFT 分割音窗時採用固定的Frame size 使時間的間隔一致,這會使我們不知道某個<font color="red">頻率發生在甚麼時間</font>,只能知道某個<font color="red">頻段發生在某個時間間隔</font>如果想到更高的解析度,只能縮短Frame size。 WT 可以有效的解決這個問題,他是一種Multiresolution analysis。  註:[[5]](##Reference) 公式如下  註:[[6]](##Reference) WT 使用小波來 filter 母波訊號  註:[[6]](##Reference) 動態模擬  註:[[6]](##Reference) 在實作上我們通常採用<font color="red">DWT(Discrete Wavelet Transform)</font>,以減少輸出的資料。 ## Reference [1] [形象的介绍:什么是傅里叶变换?](https://www.youtube.com/watch?v=spUNpyF58BY) [2] [Spectrogram, Cepstrum and Mel-Frequency Analysis by Kishore Prahallad](http://www.speech.cs.cmu.edu/15-492/slides/03_mfcc.pdf) [3] [Melodrive CEO Valerio Velardo](https://www.youtube.com/watch?v=4_SH2nfbQZ8) [4] [聖地亞哥的加利福尼亞大學擔任音樂教授 Miller Puckette](http://msp.ucsd.edu/syllabi/170.13f/course-notes/node5.html) [5] [A guide for using the Wavelet Transform in Machine Learning by Ahmet Taspinar](https://ataspinar.com/2018/12/21/a-guide-for-using-the-wavelet-transform-in-machine-learning/) [6] [The Wavelet Transform for Beginners by Andrew Nicoll](https://www.youtube.com/watch?v=kuuUaqAjeoA) [7] [梅爾倒頻譜係數-清華大學開放課程](http://ocw.nthu.edu.tw/ocw/index.php?page=chapter&cid=130&chid=1673) [8] [強健性和鑑別力語音特徵擷取技術於大詞彙連 續語音辨識之研究-台師大張志豪碩士論文](http://smil.csie.ntnu.edu.tw/thesis/topddb.PDF) 補充 [Machine auscultation](https://link.springer.com/article/10.1007/s40436-019-00254-5#Sec5)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.