DSP語音壓縮、存儲和回放_第1頁
DSP語音壓縮、存儲和回放_第2頁
DSP語音壓縮、存儲和回放_第3頁
DSP語音壓縮、存儲和回放_第4頁
DSP語音壓縮、存儲和回放_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔傾情為你奉上精選優(yōu)質文檔傾情為你奉上專心專注專業(yè)專心專注專業(yè)精選優(yōu)質文檔傾情為你奉上專心專注專業(yè)DSP課程設計實 驗 報 告語音壓縮、存儲、回放院(系): 電子信息工程學院設計人員:電子0703 王永剛 學號:電子0703 向書武(外班) 學號:成績:工程設計50報告20答辯30總分評語:指導教師簽字: 日期:2010/1/20目 錄一、實驗背景與內容3二、設計內容3三、設計方案、算法原理說明4四、程序設計、調試與結果分析5 五、設計(安裝)與調試的體會16 六、參考文獻16一、實驗背景與內容目前語音信號壓縮技術發(fā)展十分迅速,出現(xiàn)了很多高效率的語音壓縮編碼方法。以語音信號壓縮的國際

2、標準G.729為例,它可將經(jīng)過采樣的64kb/s語音信號高保真地壓縮到8kb/s,但其模型編碼算法的運算量很大。同時又要求對語音信號進行實時采樣實時壓縮處理,這樣對數(shù)據(jù)采集和處理系統(tǒng)提出了更高的要求。本實驗是使用通用數(shù)字信號處理器(DSP)強大的數(shù)據(jù)處理能力,由于DSP采用內部多總線結構,使數(shù)據(jù)的存儲和指令的執(zhí)行更加快捷。最重要的一點是,DSP具有快速的指令周期,如TMS320系列己經(jīng)從第一代的200ns降低到5ns(1600MIPS)以下,如此高的運算速度使其可以滿足許多實時處理的需要。語音信號的幅度(發(fā)音強度)并非均勻分布,由于小信號占的比例比大信號大很多,因此可以進行非均勻量化。達到這一

3、目標的基本做法是,對大信號使用大的量化間隔,而小信號則使用小的臺階。ITU-T G.711建議的PCM A律和律語音壓縮標準可以分別將13比特和14比特壓縮為8比特,達到語音壓縮的目的。pcm是原始數(shù)據(jù)原封不動地量化編碼(這種量化的位寬大),A律pcm是經(jīng)過壓擴后的非均勻量化(小信號細量化大信號粗量化),U律pcm是經(jīng)過壓擴后的均勻量化(A/U律量化的位寬?。?。 所以本實驗采用A律的效果應該比較理想。但是也采用了U律進行了對比。二、設計內容實驗目的、應用DSP算法實現(xiàn)對語音信號的壓縮、存儲和回放。、熟悉使用C語言編寫較復雜的程序; 、熟悉C語言對外設(DSK板或示波器)的訪問(軟件編程、硬件連

4、接); 、熟練使用軟件CCS5000對程序的完整調試過程。實驗設計要求使用DSP實現(xiàn)語音壓縮和解壓縮的基本算法,算法類型自定,例如可以采用G.711、G.729等語音壓縮算法。采用A/D轉換器從MIC輸入口實時采集語音信號,進行壓縮后存儲到DSP的片內和片外RAM存儲器中,存儲時間不小于10秒。存儲器存滿之后,使用DSP進行實時解壓縮,并從SPEAKER輸出口進行回放輸出。使用指示燈對語音存儲和回放過程進行指示。三、設計方案、算法原理說明語音信號的編碼方式一般為PCM( PulCode Modulation)編碼。由于需要采集、存儲、傳輸和處理的音頻數(shù)據(jù)量極大,只有進行壓縮后才能正常進行傳輸和

5、存儲。目前,用于語音壓縮編碼的算法有ADPCM,CE LP,RP E-LTP,等。其中最常用的是u/A律壓縮解壓。u/A 律 壓 縮解壓編碼是國際電報電話協(xié)會(CCIT)最早推出的G711語音壓縮解壓編碼的一種格式的主要內容。其中歐洲和中國等國家采用A律壓縮解壓編碼,美國和日本采用u律壓縮解壓編碼。兩個算法使用了非線性,把量化間隔變換成人耳能檢測的線性空間。A律限制采樣值為12+1比特,將壓縮后的格式碼定義為PSSSQQQQ ,相當于將正負值輸入分成8 個區(qū)段(07) 。其中P 為符號位,0代表正,1 代表負;SSS 表示3 位高位的區(qū)段碼;QQQQ表示區(qū)段內小格碼,區(qū)分不同輸入的范圍值。這種

6、編碼方式使壓縮、解壓縮變得簡潔而有效率。表1 為輸入值與壓縮編碼間的關系,其中X 為壓縮中舍棄的位,輸入值越大,被舍棄的位數(shù)就越多,每個輸入值有其對應的最高有效位。A 律對數(shù)PCM,就是壓縮器的壓縮特性具有如下關系的壓縮率:式中: F(x)為歸一化的壓縮器輸出電壓;x 為歸一化的壓縮器輸入電壓;A 為壓擴參數(shù),表示壓縮的程度(在歐洲,A=87.6)。A律13折線由表1 可見,輸入值與壓縮后的編碼值之間的關系如下:a) 輸入值的12 位即為符號位P ;b) 將輸入值右移6 位后,求得此時最高有效位的值加1 ,即為其對應壓縮碼的區(qū)段碼SSS;c) 最高有效位后緊鄰的4 位即為其對應壓縮碼的小格碼Q

7、QQQ。四、程序設計、調試與結果分析流程圖開始初始化Board板成功?調用_led_display(2)使燈都閃兩次初始化Codec片選FLASH為外部存儲器等待接受Instance處的采樣LED燈0亮開始錄音采樣送voice_sample壓縮存儲voice_sampleLED燈1熄滅放音結束讀取,解壓縮并送voice_sample1LED燈1亮開始放音LED燈0熄滅錄音結束是否TMS320VC5402 mcbsp的串口的初始化首先將DSP的串口1復位,再對串口1的16個寄存器進行編程,使串口1工作在以下狀態(tài):禁止SPI模式,但數(shù)據(jù)相,每幀一字,每字16位,幀同步脈沖低電平有效,并且?guī)叫盘?/p>

8、和移位信號有外部時鐘產生。 hHandset = codec_open(HANDSET_CODEC); 此語句調用了函數(shù)codec_open()對串口1進行了初步設置,設置成功返回codec的句柄放在變量 hHandset中,作為調用其他函數(shù)的實參。AD50的初始化:該初始化過程調用了5個函數(shù)對AD50的5項參數(shù)進行了設置,包括adc和dac的工作模式,模擬輸入和輸出的增益;以及AD,DA的轉換速率。codec_dac_mode(hHandset, CODEC_DAC_15BIT); /* DAC in 15-bit mode */codec_adc_mode(hHandset, CODEC_

9、ADC_15BIT); /* ADC in 15-bit mode */codec_ain_gain(hHandset, CODEC_AIN_6dB); /* 6dB gain on analog input to ADC */codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); /* -6dB gain on analog output from DAC */codec_sample_rate(hHandset,SR_16000); /* 16KHz sampling rate */從McBSP的接收通道讀取A/D轉換的值,然后經(jīng)過壓縮解壓后將其發(fā)

10、送到McBSP的發(fā)送通道,講解壓后的數(shù)據(jù)將數(shù)據(jù)寫入D/A轉換器。程序如下:while (1) /* Wait for sample from handset */ while (!MCBSP_RRDY(HANDSET_CODEC) ;/* Read sample from and write back to handset codec */ data=*(volatile int*)DRR1_ADDR(HANDSET_CODEC); pre=int2alaw(data); /*or pre=int2ulaw(data);*/ data=alaw2int(pre); /*or data=ulaw

11、2int(pre);*/ *(volatile int*)DXR1_ADDR(HANDSET_CODEC)=data;實驗程序C程序/*/* 頭文件 */*/#include #include #include #include /*/* 變量宏定義 */*/#define SIGN_BIT (0 x80) /* Sign bit for a A-law byte. */#define QUANT_MASK (0 xf) /* Quantization field mask. */#define NSEGS (8) /* Number of A-law segments. */#define

12、SEG_SHIFT (4) /* Left shift for segment number. */#define SEG_MASK (0 x70) /* Segment field mask. */*/* 函數(shù)聲明 */*/void delay(s16 period);void led(s16 cnt);void initcodec(void);void flashenable(void);unsigned char data2alaw(s16 pcm_val);int alaw2data(unsigned char a_val);static int search(int val,shor

13、t *table,int size);/*/* 全局變量 */*/HANDLE hHandset;s16 data;s16 data1;u16 i=0;u16 temp1;u16 j=0;u16 k,l=0;u8 temp2;u16 buffer22000;static short seg_end8=0 x1F,0 x3F,0 x7F,0 xFF,0 x1FF,0 x3FF,0 x7FF,0 xFFF;/*/* 主函數(shù) */*/void main() if (brd_init(100) return; led(2); /閃燈兩次 initcodec(); /初始化codec flashenab

14、le(); /選擇片外FLASH為片外存儲器 while (1) while (!MCBSP_RRDY(HANDSET_CODEC) ; /等待接收handset處的采樣 if (i=0) brd_led_toggle(BRD_LED0); /點亮二極管0,表示錄音開始 data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); /從handset處讀取采樣 temp1=data2alaw(data); /對采樣進行a律壓縮 /*/* 把低地址數(shù)據(jù)放在高八位高地址數(shù)據(jù)放在低八位 */ /*/ i=i+1; if(i%2=1) bufferj=(temp1=

15、44000) i=0;if(j=22000)j=0;brd_led_toggle(BRD_LED0); /熄滅數(shù)碼管0 表示錄音結束brd_led_toggle(BRD_LED1); /點亮二極管1 表示放音開始 /*/* 放音部分 */*/ for(k=0;k8)&0 x0ff;elsetemp2=bufferl&0 x0ff;l+;if(l=22000)l=0;data1=alaw2data(temp2); while (!MCBSP_XRDY(HANDSET_CODEC) ; *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1; /*/* 放

16、音結束 */*/if(k=44000) brd_led_toggle(BRD_LED1); /熄滅二極管1 表示放音結束 /主程序結束/*/ /* 子函數(shù) */ /*/*延時*/void delay(s16 period) int i, j; for(i=0; iperiod; i+) for(j=0; j1; j+); /*閃燈*/void led(s16 cnt)while ( cnt- )brd_led_toggle(BRD_LED0);delay(1000);brd_led_toggle(BRD_LED1);delay(1000);brd_led_toggle(BRD_LED2);de

17、lay(1000);/*初始化codec*/void initcodec(void) /* Open Handset 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_gai

18、n(hHandset, CODEC_AIN_6dB); / 6dB gain on analog input to ADC codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); / -6dB gain on analog output from DAC codec_sample_rate(hHandset,SR_8000); / 8KHz sampling rate /*設置flash*/void flashenable(void)CPLD_CTRL2_REG|=0 x0010;CPLD_DMCTRL_REG|=0 x0040;/*a律壓縮*/uns

19、igned char data2alaw(s16 pcm_val) Int mask;Int seg;unsigned char aval;if (pcm_val = 0) mask = 0 xD5; / 標記 (7th) bit = 1 else mask = 0 x55; / 標記 bit = 0 pcm_val = -pcm_val;/ Convert the scaled magnitude to segment number. seg = search(pcm_val, seg_end, 8); / Combine the sign, segment, and quantizatio

20、n bits. if (seg = 8) / out of range, 返回最大數(shù). return (0 x7F mask);else aval = seg SEG_SHIFT;if (seg 1) & QUANT_MASK;elseaval |= (pcm_val seg) & QUANT_MASK;return (aval mask);/*alaw的子程序*/static int search(int val,short *table,int size)Int i;for (i = 0; i size; i+) if (val = *table+)return (i);return (s

21、ize);/*a律解壓*/int alaw2data(unsigned char a_val)Int t;Int seg;a_val = 0 x55; t = (a_val & QUANT_MASK) SEG_SHIFT;if(seg=0) t += 8;t=(t3);if(seg0) t +=0 x108;t=(t(4-seg);if(seg3)t+=0 x108;t=(t PRAM PAGE 0 .text PRAM PAGE 0 .vectors VECS PAGE 0 init_var PRAM PAGE 0 detect PRAM PAGE 0 vrcprg PRAM PAGE 0

22、matprg PRAM PAGE 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

23、 table */ cuvtab 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

24、/* table for arccos */ sqrtab EXRAM PAGE 1 /* table for square root */ acbtab EXRAM PAGE 1 /* table for thresholds in acb */ pm03tab EXRAM PAGE 1 /* table for x(-0.3) computation */ costab EXRAM PAGE 1 /* table for cosine */ V23 INRAM PAGE 1 FSK INRAM PAGE 1 hpibuff0 HPRAM0 PAGE 1 hpibuff1 HPRAM1 PAGE 1 hpib

溫馨提示

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

評論

0/150

提交評論