【摘 要】LPC(線性預測編碼)是對語音信號編碼調制的一種非常有效的分析方法。本文闡述了LPC的基本原理,選用了一種最為常用和有效的實現(xiàn)方法---自相關法進行了討論。為了更加高效準確地對LPC原理實現(xiàn),文中選用了TMS320C5402對LPC系統(tǒng)的設計進行了分析,并簡要設計了相應的硬件和軟件系統(tǒng)。在利用高速DSP芯片實時的實現(xiàn)LPC時,采用c語言對DSP芯片進行編程控制,這樣提高了DSP芯片的運行速率;然后,對控制DSP芯片的c語言改編matlab程序進行了驗證,得到了較為明顯的結果。
【關鍵詞】線性預測編碼 自相關算法 DSP matlab仿真
一、引言
LPC(線性預測編碼即線性預測)常用于語音編碼,是語音分析的一種高效的技術,它工作在一個較低的比特率上,并且計算效率較高。線性預測使用對過往時域語音信號采樣點的加權和來預測當前的語音信號。
基于通用DSP芯片的數(shù)字信號系統(tǒng)具有精度高,抗干擾能力強,易于編程實現(xiàn)的復雜算法,接口簡單,集成方便等特點。這些特點都大大調高了線性編碼的效率;再加上易于編程的特點,可以更加高效的對數(shù)字信號進行處理。
本文討論的是利用DSP芯片實現(xiàn)語音信號的線性預測編碼。運用C語言對DSP芯片進行控制,是很多復雜的步驟得到了簡化,同時提高了運行速率。
二、語音信號的線性預測分析
(一) 線性預測編碼總述
線性預測編碼是語音信號編碼技術中最有效,最流行的分析技術之一。對語音信號進行線性預測分的的基本思想是:一個語音信號的進行采樣情況能夠通過對之前若干個語音采樣信號進行線性組合后逼近得到,通過線性預測的逼近可以求取一組唯一的預測系數(shù)。線性預測編碼的解法有:自相關法、協(xié)方差法、斜格法和協(xié)方差斜格法等。從目前來講,采用最多的是自相關法和協(xié)方差法。自相關法主要包含短時加窗處理、自相關計算和Levinson-Durbin算法這幾個步驟。
(二)分幀處理及其作用
在經(jīng)過A/D轉換之后,還要對已經(jīng)轉化成的數(shù)字信號進行分幀處理。一幀語音信號一般的長度在20ms~30ms之間。每一幀的長度稱之為幀長,每一幀和前一幀相差的部分稱之為幀移。幀移與幀長的比值一般取為0~1/2。幀長與幀移的關系如圖1-1所示。
這樣做可以在語音短時平穩(wěn)允許的時間間隔內,增加可處理的幀數(shù),可減少語音分幀處理造成的不連續(xù)性。分幀是用可移動的有限長度窗口進行加權的方法實現(xiàn)的,就是用一定的窗函數(shù)w( n)乘以數(shù)字語音信號x(n),從而形成加窗語音信號。窗函數(shù)w( n)的選擇(形狀和長度),對短時分析參數(shù)的影響很大,為此應選擇合適的窗,使其短時參數(shù)更好地反映語音信號的變化特性,一般在語音識別的前端處理中,都選用漢明窗來進行語音分幀處理。短時加窗處理起作用是:一方面,使原始的語音信號成幀,有利于處理和傳輸;另一方面,消除白噪聲的影響。以后對語音處理的討論將以幀為單位進行相應的處理工作。
(三)線性預測原理
[1]線性預測的基本原理如下:
將經(jīng)過A/D轉換的數(shù)字信號,即脈沖序列通過p階線性預測器,線性預測器的傳遞函數(shù)為
這是一個由p個方程組組成的的p的未知數(shù)的線性方程組,通過對每個方程組求解的值即可得到p個線性預測系數(shù)。
對之前所得到的p*p的線性方程組式(1-8)用自相關法對其進行如下求解。
在對語音數(shù)據(jù)信號進行短時加窗處理,利用漢明窗,漢明窗的表達式如下
在此應用Levinson-Durbin算法對該方程組進行求解,得到p個預測系數(shù)。
三、DSP芯片簡介及硬件系統(tǒng)總體設計
(一)DSP芯片及接口芯片簡介
DSP指的是數(shù)字信號處理器,也叫DSP芯片。內部結構采用哈佛式改進結構,采用流水線操作,提供DSP專用指令。DSP系統(tǒng)具有精度高,抗干擾能力強,編程方便,接口簡單等特點,本文應用TMS320C54x芯片。
采用TLC320AD50C音頻接口芯片對模擬語音信號進行采集。TLC320AD50C集成了16位A/D和D/A轉換器。
(二)整體系統(tǒng)框圖
對LPC編碼進行整體設計,設計框圖如圖2-1所示。
四、軟件設計
(一)軟件流程圖及說明
DSP芯片要完成的任務是將輸入的數(shù)字信號成幀后再進行線性預測編碼的處理,總體的框圖如圖3-1所示。
其中每一數(shù)據(jù)幀都包含160個線性PCM編碼,每個PCM編碼都是一個16bit的數(shù)值。由語音信號的線性預測分析可知,經(jīng)過處理后可以得到p個線性預測編碼的預測系數(shù)。
(二)Levinson-Durbin算法應用
通過對DSP芯片的軟件編程可以實現(xiàn)將一幀信號經(jīng)過一個10階線性預測器,即p=10。由[2]Levinson-Durbin算法可得:
使,若,則算法結束退出,否則重復(3-3)式到(3-6)式的遞推運算過程。(3-3)式到(3-6)式中括號里邊標注的是線性預測器的階數(shù)。
采用上述算法的主要原因是該算法具有很好的可操作性。整體來講,上述算法采用了遞推的方法,當時,可以很容易地得到,在通過遞推關系得到不同階次是的預測系數(shù),再將需要的第10階時的預測系數(shù)提取出來便是所要的結果。另外,上述算法還避免了對矩陣方程的大量運算,進而減少了對芯片資源的利用,提高了運算效率。
[3]用C 語言直接編寫的程序提高很多。首先,代碼量減少;其次,代碼執(zhí)行時間僅為原來的5%。用c語言對上述算法進行編寫:
用c語言對上述算法進行編寫:
六、 運行結果及其分析
按照上述算法,進過matlab軟件的仿真結果可以得到如圖5-1所示的經(jīng)過短時加窗處理后的一幀語音信號的時域波形,與圖5-2所以的原始信號相比,明顯消除了白噪聲的影響,使語音信號的性能得到了很好的改善。
按照上述的原理和程序運行結果,得到如圖5-3所示的線性預測系數(shù)。
七、結束語
線性預測編碼調制大大降低了傳輸數(shù)據(jù)的比特數(shù),并且可以通過對線性預測系數(shù),可以還原出較好的語音信號。本文應用了線性預測編碼調制算法中的自相關算法對語音信號進行處理,整個對A/D轉換后的數(shù)字語音信號短時處理和線性預測編碼將在DSP芯片中進行。對DSP芯片的控制采用了c語言,相對與匯編,可以提高運行的效率,降低了運行的時間。這樣,可以結合自相關算法的優(yōu)勢和DSP芯片準確高效的特點,使調制的過程快速準確。經(jīng)過編譯和matlab仿真,驗證了算法的可行性和較為良好的性能。
參考文獻:
[1][2]韓紀慶,張磊,鄭鐵然,等.語音信號處理.北京:清華大學出版社,2005
[3]顧 , 趙 耿, 王曉花, 王招迎.語音信號的線性預測分析在DSP 上的優(yōu)化實現(xiàn).西安,北京:西安電子科技大學,北京電子科技學院,2006