基于.PCM語音信號編譯碼分析的課程設計報告報告報告_第1頁
基于.PCM語音信號編譯碼分析的課程設計報告報告報告_第2頁
基于.PCM語音信號編譯碼分析的課程設計報告報告報告_第3頁
基于.PCM語音信號編譯碼分析的課程設計報告報告報告_第4頁
基于.PCM語音信號編譯碼分析的課程設計報告報告報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

./WORD格式下載可編輯基于PCM的語音信號編碼的譯碼摘要本設計是基于PCM的語音信號編碼和譯碼性能分析,從計算機的麥克風錄取一段語音信號,錄制時間為12秒,并對錄下的語音信號進行時域分析。其主要內容是將模擬的語音信號數字化,具體分三步抽樣、量化、編碼。以PCM編碼和譯碼原理,在MATLAB下對該段語音進行PCM編碼〔以A律編碼規則進行編碼和譯碼,并比較了與未編碼波形的差別。關鍵詞:脈沖編碼調制;編碼;譯碼;語音信號.前言實際中的信源通常是模擬的,如電視信號、麥克風拾取的語音信號等。為了能夠使模擬信號在數字通信系統中傳輸,特別是能夠和其他數字信號一起在寬帶綜合業務數字通信網中同時傳輸,需要將模擬信號進行數字化。數字化的過程一般由抽樣、量化、編碼組成。其中,抽樣要保證不丟失原始信息,而量化要滿足一定的質量,最后編碼解決信號的表示。該設計則是在MATLAB平臺下,依據脈沖編碼調制原理對實際的語音信號進行PCM編碼和譯碼。脈沖編碼調制<PCM,PulseCodeModulation>在通信系統中完成將語音信號數字化功能。是一種對模擬信號數字化的取樣技術,將模擬信號變換為數字信號的編碼方式,特別是對于音頻信號。PCM對信號每秒鐘取樣8000次;每次取樣為8個位,總共64kbps。PCM的實現主要包括三個步驟完成:抽樣、量化、編碼。分別完成時間上離散、幅度上離散、及量化信號的二進制表示。根據CCITT的建議,為改善小信號量化性能,采用壓擴非均勻量化,有兩種建議方式,分別為A律和律方式。歐洲和我國大陸采用A律,北美、日本和其他一些國家和地區采用律。本設計采用了A律方式,由于A律壓縮實現復雜,常使用13折線法編碼,采用非均勻量化PCM編碼?;赑CM的語音信號編碼與譯碼性能分析,就是將一段模擬信號進行數字化,并通過對實際語音信號進行PCM編碼和譯碼來掌握PCM編碼和譯碼原理及其實現方法,提高我們綜合應運基礎知識能力和計算機編程能力,為今后的學習和工作積累經驗。一基本原理1.1脈沖編碼原理通常把從模擬信號抽樣、量化,直到變換成為二進制符號的基本過程,成為脈沖編碼調制<PCM,PulseCodeModulation>,簡稱脈沖調制。PCM是一種對模擬信號數字化的取樣技術,是一種將模擬信號變換為數字信號的編碼方式。根據CCITT的建議,為改善小信號量化性能,采用壓擴非均勻量化,有兩種建議方式,分別為A律和律方式。本設計采用了A律方式,采用非均勻量化PCM編碼示意圖如下圖1-1所示:語音輸入語音輸入低通濾波、瞬時壓縮抽樣量化編碼信道再生、解碼、解調瞬時擴張、低通濾波話音輸出圖1-1PCM原理框圖抽樣原理所謂抽樣,就是對模擬信號進行周期性掃描,把時間上連續的信號變成時間上離散的信號。該模擬信號經過抽樣后還應當包含原信號中所有信息,也就是說能無失真的恢復原模擬信號。它的抽樣速率的下限是由抽樣定理確定的。在一個頻帶限制在內的時間連續信號,如果以的時間間隔對它進行抽樣,那么根據這些抽樣值就能完全恢復原信號?;蛘哒f,如果一個連續信號的頻譜中最高頻率不超過,當抽樣頻率時,抽樣后的信號就包含原連續的全部信息[1]。抽樣定理在實際應用中應注意在抽樣前后模擬信號進行濾波,把高于二分之一抽樣頻率的頻率濾掉。這是抽樣中必不可少的步驟。量化原理從數學上來看,量化就是把一個連續幅度值的無限數集合映射成一個離散幅度值的有限數集合。如圖2所示,量化器Q輸出L個量化值,。常稱為重建電平或量化電平。當量化器輸入信號幅度落在與之間時,量化器輸出電平為。這個量化過程可以表達為[1]:〔1-1這里稱為分層電平。通常:〔1-2其中稱為量化間隔。模擬信號的量化分為均勻量化和非均勻量化。由于均勻量化存在的主要缺點是:無論抽樣值大小如何,量化噪聲的均方根值都固定不變。因此,當信號較小時,則信號量化噪聲功率比也就很小,這樣,對于弱信號時的量化信噪比就難以達到給定的要求[2]。通常,把滿足信噪比要求的輸入信號取值范圍定義為動態范圍,可見,均勻量化時的信號動態范圍將受到較大的限制。為了克服這個缺點,實際中,往往采用非均勻量化。非均勻量化是根據信號的不同區間來確定量化間隔的。對于信號取值小的區間,其量化間隔也小;反之,量化間隔就大。它與均勻量化相比,有兩個突出的優點。首先,當輸入量化器的信號具有非均勻分布的概率密度〔實際中常常是這樣時,非均勻量化器的輸出端可以得到較高的平均信號量化噪聲功率比;其次,非均勻量化時,量化噪聲功率的均方根值基本上與信號抽樣值成比例。因此量化噪聲對大、小信號的影響大致相同,即改善了小信號時的量化信噪比。模擬入量化器量化值實際中,非均勻量化的實際方法通常是將抽樣值通過壓縮再進行均勻量化。通常使用的壓縮器中,大多采用對數式壓縮。廣泛采用的兩種對數壓縮律是壓縮律和A壓縮律。美國采用壓縮律,我國和歐洲各國均采用A壓縮律,因此,PCM編碼方式采用的也是A壓縮律。模擬信號的量化過程如圖1-2所示[3]:模擬入量化器量化值圖1-2模擬信號的量化編碼原理所謂編碼就是把量化后的信號變換成代碼,其相反的過程稱為譯碼。當然,這里的編碼和譯碼與差錯控制編碼和譯碼是完全不同的,前者是屬于信源編碼的范疇。在現有的編碼方法中,若按編碼的速度來分,大致可分為兩大類:低速編碼和高速編碼。通信中一般都采用第二類。編碼器的種類大體上可以歸結為三類:逐次比較型、折疊級聯型、混合型。在逐次比較型編碼方式中,無論采用幾位碼,一般均按極性碼、段落碼、段內碼的順序排列。下面結合13折線的量化來加以說明。在13折線法中,無論輸入信號是正是負,均按8段折線〔8個段落進行編碼。若用8位折疊二進制碼來表示輸入信號的抽樣量化值,其中用第一位表示量化值的極性,其余七位〔第二位至第八位則表示抽樣量化值的絕對大小。具體的做法是:用第二至第四位表示段落碼,它的8種可能狀態來分別代表8個段落的起點電平。其它四位表示段內碼,它的16種可能狀態來分別代表每一段落的16個均勻劃分的量化級。這樣處理的結果,8個段落被劃分成128個量化級。段落碼和8個段落之間的關系如表1-1所示[1];段內碼與16個量化級之間的關系見表1-2所示[1]:表1-1段落碼表1-2段內碼段落序號段落碼段落范圍量化間隔段內碼量化間隔段內碼81111024-2048151111701117110512-1024141110601106101256-512131101501015100128-25612110040100401164-12811101130011301032-6410101020010200116-32910011000110000-168100000000語音PCM抽樣頻率是8KHZ,每個量化樣值對應一個8位二進制碼,故語音數字編碼信號的速率為8bits×8kHz=64kb/s[4].量化噪聲隨級數的增多和極差的縮小而縮小。量化級數增多即樣值個數增多,就要求更長的二進制編碼。因此,量化噪聲隨二進制編碼的位數增多而減少,即隨數字編碼信號的速率提高而減少。自然界中的聲音非常復雜,波形極其復雜,通常我們采用的是脈沖代碼調制編碼,即PCM編碼。PCM通過抽樣、量化、編碼三個步驟將連續變化的模擬信號轉換為數字編碼。譯碼原理PCM譯碼器是實現PCM編碼的逆系統。其中各模塊功能如下[5]:D/A轉換器:用來實現與A/D轉換相反的過程,實現數字量轉化為模擬量,從而達到譯碼最基本的要求,也就是最起碼的步驟。瞬時擴張器:實現與瞬時壓縮器相反的功能,由于采用A律壓縮,擴張也必須采用A律瞬時擴張器。低通濾波器:由于采樣脈沖不可能是理想沖激函數會引入孔徑失真,量化時也會帶來量化噪聲,及信號再生時引入的定時抖動失真,需要對再生信號進行幅度及相位的補償,同時濾除高頻分量,在這里使用與編碼模塊中相同的低通濾波器。1.2A律13折線原理實際中,非均勻量化的實際方法通常是將抽樣值通過壓縮再進行均勻量化。通常使用的壓縮器中,大多采用對數式壓縮。廣泛采用的兩種對數壓縮律是壓縮律和A壓縮律。美國采用壓縮律,我國和歐洲各國均采用A壓縮律,因此,PCM編碼方式采用的也是A壓縮律。所謂A壓縮律也就是壓縮器具有如下特性的壓縮律[1]:〔1-3〔1-4其中。A律壓擴特性是連續曲線,A值不同壓擴特性亦不同,在電路上實現這樣的函數規律是相當復雜的。實際中,往往都采用近似于A律函數規律的13折線〔A=87.6的壓擴特性。在這個設計之中所用著的PCM編碼正是采用這種壓擴特性來編碼的。圖1-2示出了這種壓擴特性,表1-3列出了13折線時的x值與計算x值的比較。圖1-213折線特征.表1-3計算值與A律13折線時值的比較0101按折線分段時的01段落12345678斜率16168421表1-3中第二行的值是根據時計算得到的,第三行的值是13折線分段時的值??梢?13折線各段落的分界點與曲線十分逼近,同時按2的冪次分割有利于數字化[1]。二程序設計2.1程序流程圖在MATLAB平臺下,對錄入的語音信號現進行PCM編碼,然后對已經編碼了的語音信號進行PCM譯碼,其整個過程的程序流程圖如下圖2-1所示:開始開始語音信源PCM編碼PCM解碼結束量化圖2-1主函數流程圖PCM編碼函數設計流程圖在MATLAB平臺下,對錄入的語音信號現進行PCM編碼,其中PCM的實現主要包括三個步驟完成:抽樣、量化、編碼。具體編碼函數設計的流程圖如下圖2-2所示:.輸入信號輸入信號判斷符號歸一化和量化段落判斷段內判斷輸出開始結束圖2-2PCM編碼函數流程圖PCM譯碼函數設計流程圖輸入碼組輸入碼組提取符號判斷段落位置判斷段內位置判斷符號位輸出開始結束圖2-3PCM譯碼函數流程圖2.2詳細程序代碼主程序closeall;clearall;y=wavred<‘cang.wav’>figure<1>plot<y>title<‘原始語音信號波形圖’>N=1001;[M]=wavread<'cang.wav'>;S=M<2000:3000>;%語音信源Figure<2>plot<S,'r'>;holdon;%畫出編碼前信號xlabel<'時間'> %x坐標名ylabel<'幅值'>%y坐標名gridon %添加網格axissquare %將圖形設置為正方形t1=pcm1<S>;%調用編碼函數figure<3>plot<t1>;%畫出譯碼后信號title<'PCM編碼前信號'>; %標題xlabel<'時間'> %x坐標名ylabel<'幅值'>%y坐標名gridon %添加網格axissquare %將圖形設置為正方形t2=tqm<t1>;%將N行8列矩陣轉換為1行8*N列的矩陣的函數t3=tqn<t2>;%將8*N行1列的矩陣轉換為N行8列矩陣的函數t4=pcm2<t3>;%調用譯碼函數figure<4>plot<t4>;%畫出譯碼后信號title<'PCM譯碼后信號'>; %標題xlabel<'時間'> %x坐標名ylabel<'幅值'>%y坐標名gridon %添加網格axissquare %將圖形設置為正方形2.2.2A律十三折線PCM編碼函數functionY=pcm1<S>z=sign<S>;%判斷S的正負Max=max<abs<S>>;%求S的最大值S=abs<S/Max>;%歸一化Q=2048*S;%量化Y=zeros<length<S>,8>;%存儲矩陣〔全零%%段落碼判斷%%form=1:length<S>ifQ<m>>128&&Q<m><2048%在第五段與第八段之間,段位碼第一位都為"1"Y<m,2>=1;endif<Q<m>>32&&Q<m><128>||<Q<m>>512&&Q<m><2048>Y<m,3>=1;%在第三四七八段內,段位碼第二位為"1"endif<Q<m>>16&&Q<m><32>||<Q<m>>64&&Q<m><128>||<Q<m>>256&&Q<m><512>||<Q<m>>1024&&Q<m><2048>Y<m,4>=1;%在二四六八段內,段位碼第三位為"1"end%符號位的判斷ifz<m>>0Y<m,1>=1;elseifz<m><0Y<m,1>=0;endend%段內碼判斷程序N=zeros<length<S>>;form=1:length<S>N<m>=Y<m,2>*4+Y<m,3>*2+Y<m,4>+1;%找到Y位于第幾段enda=[0,16,32,64,128,256,512,1024];%量化間隔b=[1,1,2,4,8,16,32,64];%除以16,得到每段的最小量化間隔form=1:length<S>q=ceil<<Q<m>-a<N<m>>>/b<N<m>>>;%求出在段內的位置ifq==0Y<m,<5:8>>=[0,0,0,0];%如果輸入為零則輸出"0"elsek=num2str<dec2bin<q-1,4>>;%編碼段內碼為二進制Y<m,5>=str2num<k<1>>;Y<m,6>=str2num<k<2>>;Y<m,7>=str2num<k<3>>;Y<m,8>=str2num<k<4>>;endendend將N行8列矩陣轉換為1行8*N列的矩陣的函數functiont1=tqm<R>t1=zeros<length<R>*8,1>;c=1;fora=1:length<R>-1forb=1:8t1<c>=R<a,b>;c=c+1;endendt1=t1';end2.2.4A律十三折線PCM譯碼函數%PCM譯碼程序functionS=pcm2<Y>d=size<Y,1>;%求出輸入碼組的個數a=[0,16,32,64,128,256,512,1024];%段落起點值b=[1,1,2,4,8,16,32,64];%每段的最小量化間隔c=[0,1.5:15.5];%段內碼平均值form=1:dt1=Y<m,1>;%取符號t2=Y<m,2>*4+Y<m,3>*2+Y<m,4>+1;%判斷段落位置t3=Y<m,5>*8+Y<m,6>*4+Y<m,7>*2+Y<m,8>;%判斷段內位置ift3==0%段內碼為零時k<m>=a<t2>/2048;elsek<m>=<a<t2>+b<t2>*c<t3>>/2048;%還原出量化后的電平值end%判斷符號位ift1==0S<m>=-k<m>;elseS<m>=k<m>;endend將8*N行1列的矩陣轉換為N行8列矩陣的函數functiont2=tqn<t1>t2=zeros<length<t1>/8,8>;a=1;b=1;form=1:length<t1>-1ifb>8a=a+1;b=1;endt2<a,b>=t1<m>;b=b+1;m=m+1;end三仿真結果及分析3.1原始語音信號波形圖在MATLAB下,調用函數wavrecord<6*fs,fs,’int16’>錄制一段話音信號,其時間為6秒,同時完成對語音信號的采樣,采樣頻率是8000Hz。然后對原始語音信號進行分析,畫出它的時域波形圖如下圖3-1所示,對其進行時域分析,分析語音信號的特性。圖3-1原始語音信號波形圖由原始語音信號的時域波形圖3-1可知,語音信號是模擬信號,其在時間上和幅度上都連續的信號。3.2編碼前的信號圖運行程序后,語音信號經抽樣、量化后的信號圖如下圖3-2所示:圖3-2PCM編碼前的信號圖原始語音信號是模擬信號,在PCM編碼前將其數字化的過程中,要先經過抽樣和量化兩步。模擬信號被抽樣后,成為抽樣信號,它在時間上是離散的,但是其取值仍然是連續的。3.3PCM編碼后信號圖運行程序后,語音信號經PCM編碼后的波形圖如下圖3-3所示:圖3-3PCM編碼后信號圖由于,次設計PCM編碼的方式采用的是A壓縮律,將抽樣、量化后的信號變換成二進制碼元。語音信號為交流信號,即輸入電壓有正負極性,用以為二進制碼元來表示極性。采用A律13折線法,將量化區間劃分成非均勻的8段,用3位二進制碼元表示抽樣值所在段。又將每段均勻分為16小段,用4位二進制碼元表示。經PCM編碼后,每一抽樣值被用8位二進制碼元表示。3.4PCM譯碼后信號圖運行程序后,語音信號經PCM譯碼后的信號圖如下圖3-4所示:圖3-4PCM譯碼后信號圖譯碼是編碼的逆過程,語音信號經PCM譯碼后的波形與編碼前的信號波形相比較,可以無失真將原始語音信號恢復出來。總結通過這次通信系統仿真訓練,我收獲不少,對通信原理更加了解,尤其是對語音信號進行PCM編譯碼有了更深刻了解。一開始的預期

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論