線性預測及其Matlab實現

2020-12-07 電子發燒友

線性預測及其Matlab實現

曹華,李偉,譚豔梅 發表於 2012-04-24 11:38:04

  線性預測分析是現代語音信號處理中最核心的技術之一,為現代語音信號處理的飛速發展立下了赫赫功勞,在語音分析、合成、編碼、識別等方面都有著廣泛的應用,至今仍是最有效的語音分析技術之一。如VoIP和H.323網上多媒體通信系統中所使用的G.729 CS-ACELP語音編碼算法就是一種以共軛代數碼本激勵線性預測為基礎的高質量的語音編碼標準。

  1線性預測的基本原理

  在語音信號處理中最常用的模型是全極點模型。線性預測所包含的基本概念是,通過使實際語音抽樣和線性預測抽樣之間差值的平方和達到最小值,即進行最小均方誤差的逼近,能夠決定惟一的一組預測器係數。如果一個隨機過程用一個p階全極點系統受白噪聲激勵產生的輸出來模擬,設這個系統的傳遞函數為:

  

 

  其中:p是預測器階數;G是聲道濾波器增益。由此,語音抽樣s(n)和激勵信號e(n)之間的關係可用下列差分方程來表示:

  

 

  即語音樣點間有相關性,可以用過去的樣點值預測未來樣點值。對於濁音,激勵e(n)是以基音周期重複的單位衝激;對於清音e(n)是平穩白噪聲。

  在模型參數估計過程中,把如下系統稱為線性預測器:

  

 

  式中:ai稱為線性預測係數。從而,p階線性預測器的系統函數具有如下形式:

  

 

  在式(1)中的A(z)稱作逆濾波器,基傳輸函數為:

  

 

  而線性預測方程可以按如下方法得到:把某一幀內的短時平均預測誤差定義為:

  

 

  由此可計算出預測係數。

  由於語音信號的短時平穩性,要分幀處理(10~30 ms),對於一幀從n時刻開窗選取的N個樣點的語音段s(n),記為Φn(j,i):

  

 

  2 G.729中線性預測分析的基本原理

  用10階線性預測(LP)作短時分析,LP合成濾波器定義為:

  

 

  3在Matlab上實現線性預測

  3.1加窗和自相關函數計算

  G.729語音編碼算法大多是用C語言編程實現的,程序顯得格外冗長,有一定的局限性。由於Matlab在數據分析、自動控制、數位訊號處理、繪圖等方面具有強大的功能,為了直觀的表述,就運用Matlab來實現線性預測分析這一部分的算法。

  圖1給出了混合窗的示意圖,它由兩部分構成,前半部分是1/2個哈明窗;後半部分是1/4餘弦函數:

  

 

  式中:有5 ms(40個樣點)來自下一幀,15 ms(120個樣點)來自上一幀,當前幀10 ms(80個樣點)加窗過程如圖1所示。

  

 

  得到加窗如圖2所示。

  

 

  3.2LP係數的求取

  求解線性預測濾波器係數ai,將使用到最經典的Levinson-Durbin算法。該算法的步驟為:

  

 

  上面各式中括號內的上標表示預測器的除數。步驟(1)~(4)可對I=1,2,…,P進行遞推求解,其中:E為最小均方預測誤差;R為自相關係數;k表示反射係數,取值範圍為[-1,1];aij表示i階預測器的第j個係數。通過運算發現,其實在計算過程中,雖然目標是計算一個p階線性預測器的全部係數,但實際上在遞推過程中僅算出了所有除數低於p階線性預測器的全部係數,同時計算出了最小預測誤差能量(遞推式中反射係數的取值範圍是保證系統H(z)穩定性的充分必要條件,即多項式A(z)的全部根都落在單位圓內)。

  從推導中得知,φn(j,i)的物理意義可以理解為sn的短時自相關函數。因此,它反映了語音波形的實際情況,即波形不同,值也不同。然而ai的取值由φn(j,i)決定,並隨φn(j,i)的改變而改變,因此也可以說ai反映了語音波形的實際情況。

  其Matlab描述如下:

  

 

  4結語

  線性預測在語音處理方面的應用很廣泛,而用Matlab來實現可以很直觀地知道分析結果,為下一步將算法在DSP上的實現奠定基礎。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 維納濾波原理及其matlab實現
    信號分析檢測與處理的一個十分重要的內容就是從噪聲中提取信號,實現這種功能的有效手段之一是設計一種具有最佳線性過濾特性的濾波器,當伴有噪聲的信號通過這種濾波器的時候,它可以將信號儘可能精確地重現或對信號做出儘可能精確的估計,而對所伴隨噪聲進行最大限度地抑制。維納濾波器就是這種濾波器的典型代表之一。1.
  • matlab矩陣及其運算(五)
    感謝大家對matlab愛好者公眾號的關注!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • Matlab 中的線性規劃函數使用方法
    線性規劃 LP(Linear programming,線性規劃)是一種優化方法,在優化問題中目標函數和約束函數均為向量變量的線性函數,LP問題可描述為:min  xs.t.    A·x b    Aeq·x=beq    vlb x vub其中 ,b,beq均為向量,A,Aeq為矩陣,x為向量變量.矩陣A和向量b是線性不等式約束條件的係數,Aeq和beq是等式約束條件的係數.
  • 原創案例:Matlab多元線性回歸分析-逐步回歸
    在多元線性回歸分析中將數據讀入matlab, X=[x1 x2 x3 x4 x5];Y=y;紅色表示變量移出回歸方程,藍色表示變量移入回歸方程。首先應該點擊紅色數字處,把所有變量移入回歸方程,再點擊All Steps。可以在下方Model History處觀察到RMSE(標準誤差)最低的一次是第7次。點擊7處的小圓點,可以得到一個新的窗口。從圖中可以看出,這個最優的回歸方程最終含有的變量有x1,x3,x4,x5。
  • matlab矩陣及其運算(三)
    大家好,感謝大家對matlab愛好者公眾號的厚愛!
  • 論文推薦王苗苗:無縫線性回歸與預測模型
    儘管同時顧及自變量和因變量觀測誤差的總體最小二乘方法近年來得到了廣泛研究,但在模型預測時,依然忽略了待預測自變量的觀測誤差。對此,本文提出了一種嚴格考慮所有變量觀測誤差的無縫線性回歸和預測模型,該模型將回歸模型的建立和因變量預測聯合處理,在建立回歸模型過程中對待預測自變量的觀測誤差進行估計並修正,從而提高了模型預測效果。理論證明,現有的幾種線性回歸模型都是無縫線性回歸和預測模型的特例。
  • 第四十講 R-線性回歸:預測模型及可信區間
    在「R與生物統計專題」中,我們會從介紹R的基本知識展開到生物統計原理及其在
  • 誤差分析指標計算之matlab實現
    感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • 什麼是傅立葉變換,如何用MATLAB實現?
    美國大學生數學建模競賽(MCM/ICCM)是由美國數學及其聯合會主辦,是唯一的國際性數學建模競賽,也是世界範圍內最具影響力的數學建模競賽
  • 如何用Matlab/Python/Stata做簡單回歸分析
    來源:金融民工新語 作者:劉新宇 NO.1 |問題描述: (1)簡單的描述性統計:均值、中位數等 (2)求出多個變量的相關係數矩陣 (3)求出簡單多元線性回歸的係數
  • 線性回歸分析詳解10(完結篇):線性回歸分析預測的十大步驟
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第10章,這是本專欄的最後一章,是專欄的完結篇:用線性回歸分析做預測,多元線性回歸分析預測的十大步驟。線性回歸分析專格欄總目錄請見上圖,前9章,我分別講述了回歸分析及與回分析相關的概念,一元、多元線性回歸分析的公式與計算方法,以及多重共線性、回歸方程的精度、顯著性驗證和置信區間等進行回歸分析的重要步驟及其計算方法。至此,以回歸分析進行需求預測的各項知識點及各項準備工作全部完成,我們可以正式的以回歸分析進行需求預測。
  • 利用Matlab/Simulink實現ACC的Test bench
    模型預測控制  基於簡單的自行車模型,可以將運動學和動力學控制方程輸入模型預測控制(MPC)算法。 MPC是一種基於模型的閉環優化控制策略,大量的預測控制權威性文獻都無一例外地指出, 預測控制最大的吸引力在於它具有顯式處理約束的能力, 這種能力來自其基於模型對系統未來動態行為的預測, 通過把約束加到未來的輸入、輸出或狀態變量上, 可以把約束顯式表示在一個在線求解的二次規劃或非線性規劃問題中。
  • PHP實現簡單線性回歸之數學庫的重要性
    >方法名及其序列是通過結合逆向連結和參考大學本科學生使用的統計學教科書推導得出的,該教科書一步一步地說明了如何計算中間值。我需要計算的中間值的名稱帶有「get」前綴,從而推導出方法名。這些估計的參數用來構造線性方程(請參閱清單3),該方程對X和Y值之間的關係進行建模。使用推導出的線性方程,您就可以得到每個X值對應的預測Y值。如果線性方程與數據非常吻合,那麼Y的觀測值與預測值趨近於一致。如何確定是否非常吻合SimpleLinearRegression類生成了相當多的匯總值。
  • 【熱點雜談】線性方程的預測應用
    下面,用他們倆之間的線性關係做一次預測。一、建立方程最小二乘法是按照誤差的最小原則建立趨勢方程的科學方法。PS:所謂誤差最小原則是指預測值Y』與實際值Y的差距之和達到最小,即∑(Yt』-Yt)2=min   設日增加確診人數(Y)與時間(t)的線性方程為Y=at+b由最小二乘法求直線未知參數ab可得到如下方程組:ΣYt=nb+aΣt   (1)ΣtYt=bΣt+aΣt2     (2) 聯立求解得,a=[nΣtY-(ΣtΣYt
  • matlab代寫hmm算法程序(隱馬爾科夫模型)需要注意什麼?
    目前已有svm/rf算法,預測準確率大概為85%左右。我要做的就是把svm/rf算法的輸出,作為hmm算法的輸入,然後來預測行為。1.Svm/rf算法的輸出也是預測意圖,我想通過hmm算法結合svm/rf的輸出得到更好的預測結果。
  • matlab下實現FFT信號分析
    利用matlab做頻譜分析前我們需要了解分析過程中的一些基礎知識,matlab中的 fft 函數用法、fftshift 函數的用法函數 1  fft :作用:快速傅立葉變換。
  • MATLAB入門之MATLAB求線性方程組的解
    求解多元一次線性方程組的解,可以轉化為求解矩陣解的問題。例如:求下列線性方程組的解解:此方程可列成兩組不同的矩陣方程形式。本例用左右除法兩種方案求解了同一線性方程組的解,計算結果證明兩種除法都是準確可用的,區別只在於方程的書寫形式不同而已。另需說明一點,本例所求的是一個恰定方程組的解,對超定和欠定方程,MATLAB 矩陣除法同樣能給出其解。
  • 一文教你全面掌握用Python實現線性回歸
    本文首先會深入挖掘線性回歸理論,理解其內在的工作機制,然後利用Python實現該算法,為商業問題建模。理論線性回歸或許是學習統計學最簡單的方法。在學習更高級的方法之前,這是一個很好的入門方法。· 預測的各個變量影響值能有多精確?· 預測的目標值能有多精確?· 其關係是線性的嗎?· 是否有交互作用?
  • 運用sklearn進行線性判別分析(LDA)代碼實現
    基於sklearn的線性判別分析(LDA)代碼實現一、前言及回顧本文記錄使用sklearn庫實現有監督的數據降維技術——線性判別分析(LDA)。在上一篇LDA線性判別分析原理及python應用(葡萄酒案例分析),我們通過詳細的步驟理解LDA內部邏輯實現原理,能夠更好地掌握線性判別分析的內部機制。
  • 線性回歸:簡單線性回歸詳解
    文中將線性回歸的兩種類型:一元線性回歸和多元線性回歸,本文主要介紹了一元線性回歸的技術細節:誤差最小化、標準方程係數、使用梯度下降進行優化、殘差分析、模型評估等。在文末給出了相關的GitHub地址。Linear Regression — Detailed View詳細解釋線性回歸線性回歸用於發現目標與一個或多個預測變量之間的線性關係。 有兩種類型的線性回歸 – 一元線性回歸(Simple)和多元線性回歸(Multiple)。