1. 程式人生 > >語音處理基礎知識

語音處理基礎知識

壓縮 分享圖片 tts 效應 理想 線性 整數 tro efficient

前置知識

  • 激勵:信號處理中的輸入

  • 諧振:等同於共振,不同領域的不同稱謂。當電路中激勵的頻率等於電路的固有頻率時,電路的電磁振蕩的振幅也將達到峰值,這就稱作諧振。參見諧振-百度百科

  • 白噪聲:指功率譜密度在整個頻域內均勻分布的噪聲。參見白噪聲-百度百科

  • 音素:phoneme,語音中最小的基本單位。音素是人類能區分一個單詞和另一個單詞的基礎。音素構成音節,音節又構成不同的詞和短語。音素可分為元音和輔音

  • 元音:又稱母音,是音素的一種。元音是在發音過程中由氣流通過口腔不受阻礙的發出的音。不同的元音是由口腔不同的形狀造成的。元音和共振峰關系密切

  • 輔音:又稱子音。輔音是氣流在口腔或咽頭受到阻礙而形成的音。

  • 清音:發清音時聲帶不振動,因此清音沒有周期性。清音由空氣摩擦產生,在分析研究時等效為噪聲。

  • 濁音:發聲時聲帶振動的產生音稱為濁音。輔音有情有濁,而大多數語言中元音均為濁音,濁音具有周期性

  • 發清音時聲帶完全舒展,發濁音時聲帶緊繃在氣流作用下作周期性運動

  • 預加重是一種在發送端對輸入信號高頻分量進行補償的信號處理方式。參見預加重-百度百科

  • 短時加窗處理:音頻信號是動態變化的,為了能傳統的方法對音頻信號進行分析,假設音頻信號在幾十毫秒的短時間內是平穩的。為了得到短時的音頻信號,要對音頻信號進行加窗操作。窗函數平滑的在音頻信號上滑動,將音頻信號分成。分幀可以連續,也可以采用交疊分段的方法,交疊部分稱為幀移

    ,一般為窗長的一半。窗函數可以采用漢明窗、漢寧窗等。在時域上處理時,分幀之後的處理一般都在處理手段前加“短時”修飾。

    技術分享圖片

  • 發聲機理
    技術分享圖片
    空氣由肺部進入喉部,通過聲帶激勵進入聲道,最後通過嘴唇輻射形成語音。

語音信號的數字模型

技術分享圖片

語音信號的數字模型由三部分組成:激勵模型,聲道模型和輻射模型

語音信號\(S(z)=G(z)*U(z)*R(z)\)

激勵模型:發濁聲時聲帶不斷地開啟和關閉將產生間歇的脈沖波;發清音時可等效成隨機白噪聲

聲道模型:聲道部分的數字模型分為“聲管模型”(多個截面積的管子串聯而形成的系統)和“共振峰模型”(將聲道視為一個諧振腔)

輻射模型:輻射模型表征口和唇的輻射效應和圓形頭部的繞射效應

語音特征

語音處理中,需要把音頻信號中具有辨識性的成分提取出來

  • 過零率

    過零率體現的是信號過零點的次數,體現的是頻率特性。
    \[ Z_n=\sum_{m=0}^{N-1}\left| sgn(x_n(m))-sgn(x_n(m-1)) \right| \]
    其中,\(sgn(x)\)為符號函數,即:
    \[ sgn(x)=\left\{\begin{matrix} 1,\ x\geq0 \\ -1,\ x<0 \end{matrix}\right. \]

  • 短時能量

    短時能量體現的是信號在不同時刻的強弱程度。

    設第n幀語音信號\(x_n(m)\)的短時能量用\(E_n\)表示,則其計算公式為:
    \[ E_n=\sum_{m=0}^{N-1}x_n^2(m) \]
    其中,N為信號幀長

  • 聲強和聲強級

    單位時間內通過垂直於聲波傳播方向的單位面積的平均聲能,稱作聲強,聲強用\(I\)表示,單位為“瓦/平米”。實驗研究表明,人對聲音的強弱感覺並不是與聲強成正比,而是與其對數成正比,所以一般聲強用聲強級來表示
    \[ L=10log[\frac{I}{I‘}]=10lg(\frac{I}{I‘}) \]
    其中,\(I\)為聲強,\(I‘=10e^{-12}w/m^2\)稱為基本聲強,聲強級的常用單位是分貝(dB)

  • 響度

    響度是一種主觀心理量,是人類主觀感覺到的聲音強弱程度,又稱音量。響度與聲強和頻率有關。一般來說,聲音頻率一定時,聲強越強,響度也越大。相同的聲強,頻率不同時,響度也可能不同。響度若用對數值表示,即為響度級,響度級的單位定義為方,符號為phon。根據國際協議規定,0dB聲級的1000Hz純音的響度級定義為0 phon,n dB聲級的1000Hz純音的響度級就是n phon。其它頻率的聲級與響度級的對應關系要從等響度曲線查出。 參見響度-百度百科

  • 音高

    音高也是一種主觀心理量,是人類聽覺系統對於聲音頻率高低的感覺。音高的單位是美爾(Mel)。響度級為40 phon,頻率為1000Hz的聲音的音高定義為1000Mel。

  • 譜熵

    熵體現的是不確定性。對於信號,如果是白噪聲,頻譜近似均勻分布,熵就些;而如果是語音信號,分布不均勻,熵就些。利用這一性質,可以得到一個粗糙的“有話幀檢測”(VAD)

    譜熵的定義:首先對每一幀信號的頻譜絕對值歸一化:
    \[ p_i=\frac{Y_m(f_i)}{\sum_{k=0}^{N-1}Y_m(f_k)}\quad i=1,2,...,N \]
    這樣就得到了概率密度,進而求取熵:
    \[ H_m=-\sum_{i=0}^{N-1}p(i)log(p(i)) \]
    註:“頻譜”表征頻率和能量之間的關系,參見頻譜-百度百科及下文“梅爾頻率倒譜系數MFCC”部分的相關說明。對於語音而言,“能量”正比於“振幅”,振幅越大,能量也越大。

  • 共振峰

    聲門處的準周期激勵進入聲道時會引起共振特性,產生一組共振頻率,這一組共振頻率稱為共振峰頻率或簡稱共振峰。共振峰包含在語音的頻譜包絡中,頻譜極大值就是共振峰,通常認為共振峰數量不超過4個。

  • 基音周期和基音頻率

    也有稱作“基頻”,“基頻周期”等

    • 基音周期:反映了聲門相鄰兩次開閉之間的時間間隔或開閉的頻率。它是語音激勵源的一個重要特征,比如可以通過基頻區分性別

    • 基音周期的估算方法

      基音周期的估算方法很多,比較常用的有自相關法,倒譜法(提基頻用的倒譜法),平均幅度差函數法,線性預測法,小波—自相關函數法,譜減——自相關函數法等。

      • 自相關函數

        相關函數用於測定兩個信號在時域內的相似程度,可以分為互相關函數和自相關函數。互相關函數主要研究兩個信號之間的相關性,如果兩個信號完全不同、相互獨立,那麽互相關函數接近於零。自相關函數主要研究信號本身的同步性、周期性。對於離散的音頻信號\(x(n)\),它的自相關函數定義如下:
        \[ R(k)=\sum_{m=-\infty}^{+\infty}x(m)x(m+k) \]
        如果信號時隨機的或者周期的,這時的定義為:
        \[ R(k)=\mathop{lim}_{N\to\infty}\frac{1}{2N+1}\sum_{m=-N}^Nx(m)x(m+k) \]
        上式表示一個信號和延遲\(k\)點後的該信號本身的相似性。在任何一種情況下,信號的自相關函數都是描述信號特性的方便的方法。

        短時自相關函數是在自相關函數的基礎上將信號加窗後獲得的:
        \[ R_n(k)=\sum_{m=-\infty}^{\infty}x(m)w(n-m)x(m+k)w(n-(m+k))=\sum_{m=n}^{n+N-k-1}x_w(m)x_w(m+k) \]
        其中,\(k\)為時間的延遲量,N為幀長,\(w\)為窗函數。短時自相關函數具有以下的性質:若原信號具有周期性,則它的自相關函數也具有周期性,並且周期性與原信號的周期相同。且在時間延遲量\(k\)等於周期整數倍時會出現峰值。

        清音信號無周期性,它的自相關函數會隨著\(k\)的增大呈衰減趨勢。濁音具有周期性,它的自相關函數\(R(k)\)在基音周期整數倍上具有峰值。通常取第一最大峰值點作為基音周期點。自相關函數正是利用這一性質進行基音周期檢查的。

      • 平均幅度差函數

        短時平均幅度差函數也可以用於基音周期檢查,而且計算上比短時自相關函數方法更簡單。計算短時自相關函數需要很大的計算量,其原因主要是乘法運算所需的時間較長。為了避免乘法運算,可以對一個周期為\(P\)的單純的周期信號做差分。
        \[ d(n)=x(n)-x(n-k) \]
        其中\(k\)為時間延遲量,時間差

        則在\(k=0,\pm P,\pm 2P,...\)時,上式為零。即當\(k\)與周期信號吻合時,作為\(d(n)\)的短時平均幅度差值總是最小,因此短時平均幅度差函數的定義為:
        \[ \gamma_n(k)=\sum_{m=n}^{n+N-k-1}|x_w(m+k)-x_w(m)| \]
        對於周期性的\(x(n)\)\(\gamma_n(k)\)也呈周期性。它的平均幅度差函數\(\gamma_n\)在基音周期整數倍上具有谷值。

  • 梅爾頻率倒譜系數MFCC

    前置知識

    描述聲音信號的方式:參見傅裏葉分析之掐死教程(完整版)更新於2014.06.06

    一段音樂的描述:

    技術分享圖片

    這是對聲音最普遍的理解,一個隨著時間變化的震動。另一方面,音樂更為直觀的理解是:

    技術分享圖片

    將上述兩圖簡化

    時域:

    技術分享圖片

    頻域:

    技術分享圖片

    而貫穿時域和頻域的方法之一,就是傅裏葉分析。傅裏葉分析可分為傅裏葉級數和傅裏葉變換。

    技術分享圖片

    上圖表示,隨著正弦波數量逐漸的增長,他們最終會疊加成一個標準的矩形。

    如果將第一個頻率最低的頻率分量看作“1”,我們就有了構建頻域的最基本單元。對於我們最常見的有理數軸,數字“1”就是有理數軸的基本單元。時域的基本單元就是“1秒”,如果我們將一個角頻率為\(w_0\)的正弦波\(cos(w_0t)\)看作基礎,那麽頻域的基本單元就是\(w_0\)。有了“1”,還要有“0”才能構成完整的世界。\(cos(0t)\)就是一個周期無限長的正弦波,也就是一條直線。所以在頻域,0頻率也被稱作直流分量,在傅裏葉級數的疊加中,其僅僅影響全部波形相對於數軸整體向上或是向下而不改變波的形狀。

    下圖展示了矩形波在頻域中的模樣:

    技術分享圖片

    頻域圖像,也就是俗稱的頻譜,能夠切換個角度去看到:

    技術分享圖片

    可以看到,在頻譜中,偶數項的振幅都是0,也就對應了圖中的彩色直線,振幅為0的正弦波。

    • 聲譜圖:描述語音信號

      聲譜圖可以通過快速傅裏葉變換(FFT)或者DCT(離散余弦變換)實現。FFT延展與DCT等價。

      基於FFT聲譜圖的定義:分幀->每一幀FFT->求取FFT之後的幅度(即能量)

      對每一幀語音信號FFT:
      \[ X_n(e^{jw})=\sum_{m=-\infty}^{\infty}x(m)*w(n-m)*e^{-jwm} \]
      技術分享圖片

      一些聲譜圖示例:
      技術分享圖片
      技術分享圖片

      繪制過程

      語音信號先被分為很多幀,每幀語音通過短時傅裏葉變換,對應於一個頻譜。頻譜表示頻率與能量的關系。如下圖左,取出某一幀語音信號求頻譜。

      技術分享圖片

      先將上上圖中的一幀語音拿出,頻譜通過坐標表示出來,如上圖左。將左邊的頻譜圖旋轉90°,可得中間的圖。然後將幅度映射到一個灰度值表示,0表示黑,255表示白色。幅度值越大,相應的區域越黑。這樣就可以得到右側的圖。

      這樣就會得到一個隨著時間變換的頻譜圖,這就是描述語音信號的聲譜圖。

      技術分享圖片

      下圖是一段語音的聲譜圖,很黑的地方就是頻譜圖中的峰值(共振峰)

      技術分享圖片

      音素的屬性可以更好的在這裏面觀察出來。通過觀察共振峰和它們的轉變可以更好的識別聲音。隱馬爾科夫模型就是隱含的對聲譜圖建模以達到好的識別性能。另外,它可以直觀的評估TTS系統的好壞,即:直接對比合成語音和自然語音的聲譜圖的匹配度。

    • 倒譜分析

      這裏用到的是對數頻譜,縱坐標單位就是\(dB\)

      技術分享圖片

      上圖是一個語音的頻譜圖。峰值就表示語音的主要頻率成分,將這些峰值稱作共振峰。共振峰攜帶了聲音的辨識屬性。用它可以識別出不同的聲音。

      這麽重要的特征就需要把它們提取出來。需要提取的不僅僅是共振峰的位置,還得提取它們轉變的過程,因此實際提取的就是頻譜的包絡。所謂包絡就是一條連接共振峰點的平滑曲線。

      技術分享圖片

      原始的頻譜由兩部分組成:包絡和頻譜細節。我們需要將這兩部分分離開來,就可以得到包絡了。如下圖所示:技術分享圖片

      也即是,給定\(logX[k]\),求得\(logH[k]\)\(logE[k]\),以滿足\(logX[k]=logH[k]+logE[k]\)

      為了達到這一目標,需要對頻譜做FFT。在頻譜上做傅裏葉變換實際就是逆傅裏葉變換(IFFT)。需要註意的一點是,需要在頻譜的對數域上面處理,在對數頻譜上面做逆傅裏葉變換就相當於在偽頻率坐標軸上面描述信號。

      技術分享圖片

      上圖中橫軸是偽頻率,可以看作是時間。

      由上圖可以看到,包絡主要是低頻,可以將它看作是一個每秒4個周期的正弦信號,這樣在偽頻率坐標軸4Hz的地方給它一個峰值。而頻譜的細節部分主要是高頻,可以將它看作是一個每秒100周期的正弦信號,這樣在偽頻率坐標軸100Hz的地方給它一個峰值。

      實際應用中,已經知道\(logX[k]\),所以可以得到\(x[k]\)。由上圖可知,\(h[k]\)\(x[k]\)的低頻部分,那麽將\(x[k]\)通過一個低通濾波器就可以得到\(h[k]\)。這樣,就可以將它們分離開來,得到想要的\(h[k]\),也就是得到了頻譜的包絡。

      \(x[k]\)實際上就是倒譜,需要關心的包絡\(h[k]\)就是倒譜的低頻部分。

      所謂倒譜就是一種信號的傅裏葉變換經過對數運算後,再進行傅裏葉反變換得到的譜。主要過程:

      • 將原語音信號經過傅裏葉變換獲得頻譜:\(X[k]=H[k]E[k]\)。只考慮幅度就是:\(|X[k]|=|H[k]||E[k]|\)
      • 兩邊取對數:\(log|X[k]|=log|H[k]|+log|E[k]|\)
      • 兩邊取逆傅裏葉變換得到:\(x[k]=h[k]e[k]\)
    • Mel頻率分析

      剛剛可以獲得語音的頻譜包絡了,也就是能夠得到語音所有共振峰點的平滑曲線。但是對於人類的聽覺感知的實驗表明,人類聽覺感知只聚焦在某些特定的區域,而非整個頻譜包絡。

      Mel頻率分析基於人類的聽覺感知實驗。實驗觀測發現人耳就像一個濾波器組一樣,它只關註某些特定的頻率分量。但是這些濾波器在頻率坐標軸上卻不是統一分布的,在低頻區域有很多的濾波器,分布比較密集,但在高頻區域,濾波器的數目就變得比較少,分布很稀疏。

      技術分享圖片

      梅爾頻率倒譜系數考慮了人類的聽覺特征,先將線性頻譜映射到基於聽覺感知的Mel非線性頻譜中,然後轉換到倒譜上。

      將普通頻率轉化到Mel頻率的公式為:
      \[ mel(f)=2595*log_{10}(1+\frac{f}{700}) \]
      技術分享圖片

      在Mel頻域內,人對音頻的感知度為線性關系。舉例而言,如果兩段語音的Mel頻率相差兩倍,則人類感知音高也相差兩倍。

    • Mel頻率倒譜系數

      將頻譜通過一組Mel濾波器就得到Mel頻譜,在Mel頻譜上面獲得的倒譜系數\(h[k]\)就稱為Mel頻率倒譜系數,簡稱MFCC。

      提取梅爾頻率倒譜系數MFCC特征的過程

      技術分享圖片

      • 對語音預加重、分幀和加窗

      • 對每個短時分析窗,通過FFT得到對應的頻譜

      • 將獲得的頻譜通過Mel濾波器組得到Mel頻譜

      • 在Mel頻譜上面進行倒譜分析:取對數,做逆變換。實際逆變換一般通過離散余弦變換DCT實現,取離散余弦變換後的第2個到第13個系數作為MFCC系數。從而獲得Mel頻率倒譜系數MFCC。
        技術分享圖片

        這裏提到的離散余弦變換(DCT)類似於離散傅裏葉變換,只是只使用了實數。由於DCT的性能更接近於理想的KL變換,所以在信號處理中得到廣泛的應用,主要用於對信號進行編碼壓縮,這是由於DCT具有很強的“能量聚集”特性,即大多數的自然信號(包括聲音和圖像)的能量都集中在DCT後的低頻部分。參見離散余弦變換-百度百科,《音頻信息處理技術》-韓紀慶、馮濤等p37~p38

Connect

Email: [email protected]

GitHub: cnlinxi@github

參考文獻

語音信號中的特征提取

語音信號處理之(四)梅爾頻率倒譜系數(MFCC)

Mel Frequency Cepstral Coefficient (MFCC) tutorial

音頻特征提取——常用音頻特征

Speech Technology: Spectrogram, Cepstrum and Mel-Frequency Analysis(PDF)

傅裏葉分析之掐死教程(完整版)更新於2014.06.06

《音頻信息處理技術》-韓紀慶、馮濤等

語音處理基礎知識