# 聲音專有名詞筆記 ###### 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up