dsp數(shù)字信號處理課程設計報告語音壓縮與回放_第1頁
dsp數(shù)字信號處理課程設計報告語音壓縮與回放_第2頁
dsp數(shù)字信號處理課程設計報告語音壓縮與回放_第3頁
dsp數(shù)字信號處理課程設計報告語音壓縮與回放_第4頁
dsp數(shù)字信號處理課程設計報告語音壓縮與回放_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、DSP技術與應用課程設計報告選題名稱: 語音壓縮與回放 系(院): 計算機工程學院專 業(yè):計算機科學與技術(嵌入式系統(tǒng)軟件設計)班 級: 計算機1073 姓 名: 學 號: 1 指導教師: 學年學期: 2009 2010 學年 第 2 學期2010年 6 月 11 日摘要: 如何在實際系統(tǒng)中實現(xiàn)語音壓縮, 這是一個重要的研究領域。目前, PC上的實時語音壓縮技術已經(jīng)較為成熟,而嵌入式系統(tǒng)領域的語音壓縮技術還有待發(fā)展和完善。由于大多數(shù)高質量、低碼 率的語音壓縮算法有較為復雜的數(shù)據(jù)運算, 所以傳統(tǒng)的單片機已經(jīng)不能勝任, 必須采用更高性能的處理器, 而專門為數(shù)字信號處理設計的數(shù)字信號處理器 (DSP

2、)為語音壓縮的實現(xiàn)提供了一個很好的平臺。隨著超大規(guī)模集成電路 (VL S I)工藝的進步 ,高速數(shù)字信號處理器 (DSP)技術的飛速發(fā)展以及先進開發(fā)工具的完備 ,使得復雜的語音編解碼算法在以高性 能微處理器為核心的硬件系統(tǒng)上實時實現(xiàn)成為可 能 。本文介紹了一種基于目前性能價格比較高的16位定點 DSP芯片 TMS320VC54X的語音壓縮處理系統(tǒng) , 可以直接作為會議電視 、PSTN 可視電話、IP 網(wǎng)絡多媒體通信、遠程醫(yī)療系統(tǒng)終端設備中聲音信源編碼解碼器系統(tǒng)。關鍵詞:語音壓縮;語音編碼;DSP目錄 TOC o 1-2 h z u HYPERLINK l _Toc264842206 1課題綜述

3、 PAGEREF _Toc264842206 h 1 HYPERLINK l _Toc264842207 1.1 課題來源 PAGEREF _Toc264842207 h 1 HYPERLINK l _Toc264842208 1.2 預期目標 PAGEREF _Toc264842208 h 1 HYPERLINK l _Toc264842209 1.3 面對的問題 PAGEREF _Toc264842209 h 1 HYPERLINK l _Toc264842210 2 系統(tǒng)設計及分析 PAGEREF _Toc264842210 h 2 HYPERLINK l _Toc264842211 2

4、.1 涉及的基礎知識 PAGEREF _Toc264842211 h 2 HYPERLINK l _Toc264842212 2.2 實驗方案 PAGEREF _Toc264842212 h 4 HYPERLINK l _Toc264842213 2.3 程序流程圖 PAGEREF _Toc264842213 h 5 HYPERLINK l _Toc264842214 3 程序代碼 PAGEREF _Toc264842214 h 6 HYPERLINK l _Toc264842215 3.1 頭文件定義 PAGEREF _Toc264842215 h 6 HYPERLINK l _Toc264

5、842216 3.2 主函數(shù) PAGEREF _Toc264842216 h 7 HYPERLINK l _Toc264842217 3.3 a律壓縮子函數(shù) PAGEREF _Toc264842217 h 12 HYPERLINK l _Toc264842218 3.4 a律解壓縮子函數(shù) PAGEREF _Toc264842218 h 13 HYPERLINK l _Toc264842219 3.5 延時子函數(shù) PAGEREF _Toc264842219 h 14 HYPERLINK l _Toc264842220 3.6 5402.cmd文件 PAGEREF _Toc264842220 h

6、14 HYPERLINK l _Toc264842221 4 程序運行與調(diào)試 PAGEREF _Toc264842221 h 17 HYPERLINK l _Toc264842222 4.1 實驗結果 PAGEREF _Toc264842222 h 17 HYPERLINK l _Toc264842223 總 結 PAGEREF _Toc264842223 h 19 HYPERLINK l _Toc264842224 參考文獻 PAGEREF _Toc264842224 h 201課題綜述1.1 課題來源 數(shù)字化語音存儲與回放系統(tǒng),以微處理芯片為核心,具有語音可控、 回放靈活、無磨損、可靠簡單

7、等特點。因而在各類公共設施、智能儀表、家用電子產(chǎn)品等領域有著廣泛的應用。該系統(tǒng)目前有多種方案可以實現(xiàn),其中采集成語音芯片是一種較簡單通用的方案,但該方案智能性較差,如音量不能放大、錄音時間固定等。在通信應用領域中, 壓縮語音信號的傳輸帶寬或降低電話信道的傳輸碼率, 一直是設計人員追求的目標。語音編碼在實現(xiàn)這一目標的過程中擔當著重要的角色, 語音編碼是壓縮語音信號的數(shù)字表示, 而且是這些信號所需比特數(shù)最小的算法??梢哉f, 語音壓縮技術的發(fā)展和人類信息技術的發(fā)展息息相關。因此, 對語音壓縮技術的研究具有重要的現(xiàn)實意義。1.2 預期目標 (1)使用DSP實現(xiàn)語音壓縮和解壓縮的基本算法,算法類型自定,

8、例如可以采用G.711、G.729等語音壓縮算法。(2)采用A/D轉換器從MIC輸入口實時采集語音信號,進行壓縮后存儲到DSP的片內(nèi)和片外RAM存儲器中,存儲時間不小于10秒。(3)存儲器存滿之后,使用DSP進行實時解壓縮,并從SPEAKER輸出口進行回放輸出。(4)使用指示燈對語音存儲和回放過程進行指示。發(fā)揮部分:使用多種算法進行語音的壓縮、存儲和解壓縮,比較它們之間的優(yōu)缺點。1.3 面對的問題基于TMS320C54X為核心的語音壓縮與回放需要掌握和了解如下幾個知識:語音編碼原理、量化、DPCM&ADPCM、語音采集與輸出模塊、a律壓縮、A/D、D/A及存儲芯片的選擇、數(shù)據(jù)存儲器的選擇等等。

9、2 系統(tǒng)設計及分析2.1 涉及的基礎知識2.1.1 語音編碼語音編碼一般分為兩類:一類是波形編碼,一類是被稱為“聲碼器技術”的編碼。PCM編碼即脈沖編碼調(diào)制。波形編碼的最簡單形式就是脈沖編碼調(diào)制(Pulse code modulation),這種方式將語音變換成與其幅度成正比的二進制序列,而二進制數(shù)值往往采用脈沖表示,并用脈沖對采樣幅 度進行編碼,所以叫做脈沖編碼調(diào)制。脈沖編碼調(diào)制沒有考慮語音的性質,所以信號沒有得到壓縮。2.1.2 量化脈沖編碼調(diào)制用同等的量化級數(shù)進行量化,即采用均勻量化,而均勻量化是基本的量化方 式。但是均勻量化有缺點,在信號動態(tài)范圍較大而方差較小的時候,其信噪比會下降 。

10、 國際上有兩種非均勻量化的方法:A律和u律,u律是最常用的一種。在美國,7位u律是長途電話質量的標準。 而我國采用的是A律壓縮,而且有標準的A律PCM編碼芯片。 2.1.3 DPCM&ADPCM 降低傳輸比特率的方法之一是減少編碼的信息量,這要消除語音信號中的冗余度。相鄰的語音樣本之間存在明顯的相關性,因此對相鄰樣本間的差信號進行編碼,便可使信息量得到壓縮。因為差分信號比原語音信號的動態(tài)范圍和平均能量都小。這種編碼叫Differential PCM,簡稱DPCM,即差分脈沖編碼調(diào)制。 ADPCM即自適應差分脈沖編碼調(diào)制,是包括短時預測的編碼系統(tǒng)。CCITT(國際電報電話咨詢委員會)在1984年

11、提出的32 kbit/s的編碼器建議就是采用ADPCM作為長途傳輸中的國際通用語音編碼方案。這種ADPCM編碼方案達到64 kbit/s PCM的語音傳輸質量,并具有很好的抗誤碼性能。2.1.4 a律壓縮 A律編碼(A-law )是ITU-T(國際電聯(lián)電信標準局)CCITT G.712定義的關于脈沖編碼的一種壓縮/解壓縮算法。 世界上大部分國家采用A律壓縮算法。美國采用mu律算法進行脈沖編碼。 令量化器過載電壓為1,相當于把輸入信號進行歸一化,那么A律對數(shù)壓縮定義為: 當0 = x = 1/A時,f(x)=(Ax)/(1+lnA) 當1/A = x = 1時,f(x)=(1+lnAx)/(1+

12、lnA)在現(xiàn)行的國際標準中A=87.6,此時信號很小時(即小信號時),從上式可以看到信號被放大了16倍,這相當于與無壓縮特性比較,對于小信號的情況,量化間隔比均勻量化時減小了16倍,因此,量化誤差大大降低;而對于大信號的情況例如x=1,量化間隔比均勻量化時增大了5.47倍,量化誤差增大了。這樣實際上就實現(xiàn)了“壓大補小”的效果。按上式得到的A律壓擴特性是連續(xù)曲線,A的取值不同其壓擴特性亦不相同,而在電路上實現(xiàn)這樣的函數(shù)規(guī)律是相當復雜的。為此,人們提出了數(shù)字壓擴技術,其基本思想是這樣的:利用大量數(shù)字電路形成若干根折線,并用這些折線來近似對數(shù)的壓擴特性,從而達到壓擴的目的。下圖2-1為a律壓縮的示意

13、圖圖2-1 a律壓縮示意圖從圖2-1中可以看到,先把軸的01分為8個不均勻段,其分法是:將01之間一分為二,其中點為1/2,取1/21之間作為第八段;剩余的01/2再一分為二,中點為1/4,取1/41/2之間作為第七段,再把剩余的01/4一分為二,中點為1/8,取1/81/4之間作為第六段,依此分下去,直至剩余的最小一段為01/128作為第一段。而軸的01均勻地分為八段,它們與軸的八段一一對應。從第一段到第八段分別為,01/8,1/82/8,7/81。這樣,便可以作出由八段直線構成的一條折線。該折線與式(6-22)表示的壓縮特性近似。壓縮后的碼字組成:比特0-3表矢量化值,比特4-6表示段值,

14、壓縮后的碼字符號放在比特7,為了簡化未寫出。表2-1 a律壓縮表壓縮前的碼字丟棄的比特數(shù)壓縮后的碼字輸入值段值,量化值比特:11 10 9 8 7 6 5 4 3 2 1 0比特:6 5 4 3 2 1 0 0 0 0 0 0 0 0 a b c d x 10 0 0 a b c d 0 0 0 0 0 0 1 a b c d x1 0 0 1 a b c d 0 0 0 0 0 1 a b c d x x2 0 1 0 a b c d 0 0 0 0 1 a b c d x x x 3 0 1 1 a b c d 0 0 0 1 a b c d x x x x 5 1 0 0 a b c d

15、 0 0 1 a b c d x x x x x6 1 0 1 a b c d 0 1 a b c d x x x x x x 7 1 1 0 a b c d 1 a b c d x x x x x x x 8 1 1 1 a b c d 從A律到線性擴展的轉換如下表:表2-2 a律解壓縮轉換表壓縮過的碼字 偏值的輸入 段值,量化值比特: 6 5 4 3 2 1 0比特: 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 a b c d 0 0 0 0 0 0 0 a b c d 1 0 0 1 a b c d 0 0 0 0 0 0 1 a b c d 1 0 1 0 a b

16、c d 0 0 0 0 0 1 a b c d 1 0 0 1 1 a b c d 0 0 0 0 1 a b c d 1 0 0 1 0 0 a b c d 0 0 0 1 a b c d 1 0 0 0 1 0 1 a b c d 0 0 1 a b c d 1 0 0 0 0 1 1 0 a b c d 0 1 a b c d 1 0 0 0 0 0 1 1 1 a b c d 1 a b c d 1 0 0 0 0 0 0 2.2 實驗方案用板內(nèi)的AD/DA轉換器AD50將由MIC輸入的模擬信號轉換為16位數(shù)字信號送入DSP板中進行壓縮處理,壓縮處理后的數(shù)據(jù)經(jīng)過解壓后再送至DA轉換器轉

17、換為模擬信號,由SPEAKER口輸出,壓縮和解壓縮用A律格式,從而實現(xiàn)語音信號的采集壓縮與回放。圖2-2 總體框架圖2.3 程序流程圖 基于TMS320C54X的語音壓縮與回放程序流程圖如下所示。開始初始化DSP及串行口初始化A/D轉換器D/A轉換器語音經(jīng)A/D轉換器輸入及量化數(shù)據(jù)壓縮數(shù)據(jù)存儲解壓縮經(jīng)D/A轉換器回放結束是否存滿空間?數(shù)據(jù)處理NoYes圖2-4 程序流程圖3 程序代碼我主要完成a律解壓縮的代碼編寫,因此對主程序和a律壓縮不做詳細的解釋。3.1 頭文件定義/*/#include #include #include #include /*/* Function Prototypes

18、 */*/void delay(s16 period);unsigned char data2alaw(int pcm_val);int alaw2data(unsigned chara_val); /*/* Global Variables */*/HANDLE hHandset; /*句柄變量*/int data;int data1;long i,j=0;long k,l=0;unsigned int temp1;unsigned char temp2;unsigned int m;unsigned int buffer36000;3.2 主函數(shù)/*/* MAIN */*/void mai

19、n() if (brd_init(100)/初始化DSK板,失敗退出 return; /* blink the leds a couple times */for(m=6;m0;m-)brd_led_toggle(BRD_LED0);/* brd_delay_msec(1000); */delay(1000);brd_led_toggle(BRD_LED1);/* brd_delay_msec(1000); */delay(1000);brd_led_toggle(BRD_LED2);/* brd_delay_msec(1000); */delay(1000); /* Open Handset

20、 Codec */ hHandset = codec_open(HANDSET_CODEC); /* Acquire handle to codec */ /* Set codec parameters */ codec_dac_mode(hHandset, CODEC_DAC_15BIT); /* DAC in 15-bit mode */ codec_adc_mode(hHandset, CODEC_ADC_15BIT); /* ADC in 15-bit mode */codec_ain_gain(hHandset, CODEC_AIN_6dB); /* 6dB gain on anal

21、og input to ADC */codec_aout_gain(hHandset, CODEC_AOUT_MINUS_12dB); /* -12dB gain on analog output from DAC */ codec_sample_rate(hHandset,SR_16000); /* 16KHz sampling rate */ /* Polling and digital loopback */ while (1) brd_led_disable(BRD_LED1);/關閉led1 brd_led_disable(BRD_LED2);/關閉led2 brd_led_togg

22、le(BRD_LED0);/開啟led0 /* Wait for sample from handset */ while (!MCBSP_RRDY(HANDSET_CODEC) data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); /采集語音信號 temp1=data2alaw(data); /temp1=data2ulaw(data); /保存壓縮后的數(shù)據(jù) 把低地址數(shù)據(jù)放在高八位 高地址數(shù)據(jù)放在第八位 i=i+1; if(i%2=1) bufferj=(temp1=72000) i=0; if(j=36000) j=0; brd_led_disa

23、ble(BRD_LED0); /放音 brd_led_disable(BRD_LED2); brd_led_toggle(BRD_LED1); for(k=0;k8)&0 x0ff; else temp2=bufferl&0 x0ff; l+; if(l=36000) l=0; data1=alaw2data(temp2); while (!MCBSP_XRDY(HANDSET_CODEC) ; *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1*4; brd_led_disable(BRD_LED0); brd_led_disable(BRD_L

24、ED1); brd_led_toggle(BRD_LED2); /放音結束 for (m=0;m3;m+) delay(1000); for (m=0;m0;m-)brd_led_toggle(BRD_LED0);/* brd_delay_msec(1000); */delay(1000);brd_led_toggle(BRD_LED1);/* brd_delay_msec(1000); */delay(1000);brd_led_toggle(BRD_LED2);/* brd_delay_msec(1000); */delay(1000);4)語音信號采集與回放程序/判斷MCBSP是否做好接

25、收準備 while (!MCBSP_RRDY(HANDSET_CODEC) ) ; /從A/D讀取轉換數(shù)據(jù)data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC);temp1=data2alaw(data); /temp1=data2ulaw(data);/ 將數(shù)據(jù)寫入D/A轉換器data1=alaw2data(temp2); while (!MCBSP_XRDY(HANDSET_CODEC) ; *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1*4;5) 數(shù)據(jù)存儲與處理i=i+1; if(i%2=1) bu

26、fferj=(temp18)&0 x0ff; else temp2=bufferl&0 x0ff; l+; 3.3 a律壓縮子函數(shù)/*/*a率壓縮 */*/unsigned char data2alaw(int data) unsigned char i,sign,achord,astep; unsigned int output,absol,temp; temp=absol=abs(data); sign=(data=0)?1:0; /判定符號:正數(shù) =1,負數(shù) =0for (i=0;i16;i+) /確定temp中出現(xiàn)1的最高位 output=temp&0 x8000; if(output

27、) break; /temp 左移i位后最高位為1 temp=1; achord=11-i; /段值 if (achord1)&0 x0F;/段值為0,將absol左移1位得到量化值 elseastep=(absolachord)&0 x0F; /段值不為0,將absol左移achord4095) /超過最大值4095,輸出最大值0 x7foutput=0 x7F; if(sign) return output=0 xFF; /返回含有符號信息的輸出值else return output=0 x7F;3.4 a律解壓縮子函數(shù)/*/*a率解壓 */*/ int alaw2data(unsigne

28、d char input) unsigned char sign,achord,astep;unsigned int temp;int data;temp = input0 xFF; /得到含有符號信息的壓縮值sign = (temp&0 x80)7; /符號位achord = (temp&0 x70)4; /段值astep = temp&0 x0F; /量化值astep = 1;if(!achord) /段值為0,輸出值為量化值左移1位后加1data=astep+1;else data=astep+33; /擴展后數(shù)值中的6位非零值 data=achord-1; if(sign) retur

29、n -data; /有符號的擴展值 else return data;3.5 延時子函數(shù)/延時void delay(int period) int i, j; for(i=0; iperiod; i+) for(j=0; j1; j+); 3.6 5402.cmd文件 實驗中還需要添加5402.cmd文件,5402.cmd文件及其解釋:MEMORY PAGE 0: VECS: origin = 0080h, length = 0080h /*內(nèi)部程序RAM */ PRAM: origin = 0100h, length = 0FFFh /* 內(nèi)部程序 RAM */ PAGE 1: SCRATC

30、H: origin = 1000h, length = 0020h /* Scratch Pad Data RAM */ DMARAM: origin = 1020h, length = 0300h /* DMA緩存*/ DATA: origin = 1320h, length = 0080h /*內(nèi)部數(shù)據(jù)RAM */ STACK: origin = 1400h, length = 0500h /* 堆棧內(nèi)存空間 */ INRAM: origin = 1900h, length = 0100h /*內(nèi)部數(shù)據(jù) RAM */ HPRAM0: origin = 1A00h, length = 000

31、2h /* HPI */ HPRAM1: origin = 1A02h, length = 0280h /* HPI */ HPRAM2: origin = 1C82h, length = 0280h /* HPI */ EXRAM: origin = 1F10h, length = 0EA00h /* 外部內(nèi)存*/SECTIONS .cinit PRAM PAGE 0 .text PRAM PAGE 0 .vectors VECS PAGE 0 init_var PRAM PAGE 0 detect PRAM PAGE 0 vrcprg PRAM PAGE 0 matprg PRAM PAG

32、E 0 .stack STACK PAGE 1 .trap SCRATCH PAGE 1 .const EXRAM PAGE 1 .data EXRAM PAGE 1 .bss EXRAM PAGE 1 .cio EXRAM PAGE 1 .switch EXRAM PAGE 1 tables EXRAM PAGE 1 var EXRAM PAGE 1 svctab EXRAM PAGE 1 /* SS_V LSP table */ vctab EXRAM PAGE 1 /* V LSP table */ uvctab EXRAM PAGE 1 /* UV LSP table */ cuvta

33、b EXRAM PAGE 1 /* Stochastic codebook */ cdbktab EXRAM PAGE 1 /* various codebook tables*/ logtab EXRAM PAGE 1 /* table for log2 */ powtab EXRAM PAGE 1 /* table for pow2 */ hamtab EXRAM PAGE 1 /* table for hamming */ lgwtab EXRAM PAGE 1 /* table for lag window */ acostab EXRAM PAGE 1 /* table for arccos */ sqrtab EXRAM PAGE 1 /* table for square root */ acbta

溫馨提示

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

評論

0/150

提交評論