《DSP技术与应用》课程设计报告基于DSP的语音处理系统设计.doc

上传人:文库蛋蛋多 文档编号:4146915 上传时间:2023-04-07 格式:DOC 页数:28 大小:502.50KB
返回 下载 相关 举报
《DSP技术与应用》课程设计报告基于DSP的语音处理系统设计.doc_第1页
第1页 / 共28页
《DSP技术与应用》课程设计报告基于DSP的语音处理系统设计.doc_第2页
第2页 / 共28页
《DSP技术与应用》课程设计报告基于DSP的语音处理系统设计.doc_第3页
第3页 / 共28页
《DSP技术与应用》课程设计报告基于DSP的语音处理系统设计.doc_第4页
第4页 / 共28页
《DSP技术与应用》课程设计报告基于DSP的语音处理系统设计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《《DSP技术与应用》课程设计报告基于DSP的语音处理系统设计.doc》由会员分享,可在线阅读,更多相关《《DSP技术与应用》课程设计报告基于DSP的语音处理系统设计.doc(28页珍藏版)》请在三一办公上搜索。

1、淮阴工学院DSP技术及应用课程设计报告选题名称: 基于DSP的语音处理系统设计 系(院): 计算机工程学院专 业: 计算机科学与技术(嵌入式软件设计) 班 级: 计算机1073班 姓 名: 学 号: 指导教师: 学年学期: 2009 2010 学年 第 2 学期2010年 5 月 30 日摘要:提出一个基于DSP的音频信号采集,存储,回放的处理系统。介绍了该系统的总体方案和硬软件设计。讨论了模/数(A/D)和数/模(D/A)转换电路的设计方法以及如何采用A/D转换器从MIC输入口实时采集语音信号,进行压缩后存储到DSP的片内和片外RAM存储器中,存储时间不小于10秒。使用DSP实现语音压缩和解

2、压缩的基本算法实现对语音信号的压缩,存储,回放。实验证明:所设计的基于DSP的硬件和软件系统是一个很好的音频信号采集与处理系统。关键词:语音处理;音频信号;DSP;音频压缩回放目录1 绪论31课程设计要求与目标32课程设计目的32系统详细设计42.1语音采集与输出模块42.2语音编码42.3 DPCM&ADPCM:52.4 a律压缩53程序设计93.1程序流程图93.2 代码编写104 调试过程215 运行结果22总 结25参考文献261 绪论1课程设计要求与目标(1)使用DSP实现语音压缩和解压缩的基本算法,算法类型自定,例如可以采用G.711、G.729等语音压缩算法。(2)采用A/D转换

3、器从MIC输入口实时采集语音信号,进行压缩后存储到DSP的片内和片外RAM存储器中,存储时间不小于10秒。(3)存储器存满之后,使用DSP进行实时解压缩,并从SPEAKER输出口进行回放输出。(4)使用指示灯对语音存储和回放过程进行指示。发挥部分:使用多种算法进行语音的压缩、存储和解压缩,比较它们之间的优缺点。2课程设计目的1、通过本实验掌握5402DSP片上外设多通道缓冲串行口mcbsp。2、学习掌握tlc320ad50CODEC编译码器的内部结构、工作原理。3、学习A律语音压缩以及C语言下的编程方法。2系统详细设计2.1语音采集与输出模块语音采集与输出模块采用的是TI公司推出的一款高性能的

4、立体声音频Codec芯片TLC320AD50C,内置耳机输出放大器,支持MIC和LINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。AD50的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigmadelta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。与此同时,AD50还具有很低的能耗,回放模式下功率仅为23mW,省电模式下更是小于15uW。由于具有上述优点,使得AD50是一款非常理想的音频模拟I/O器件,可以很好的应用在随声

5、听(如CD,MP3)、录音机等数字音频领域2。由TLC320AD50C组成的语音输入与输出模块不仅采样率高最高可达96K,且外围电路简单,性价比高。2.2语音编码(1)概念: 语音编码一般分为两类:一类是波形编码,一类是被称为“声码器技术”的编码。 PCM编码即脉冲编码调制。 波形编码的最简单形式就是脉冲编码调制(Pulse code modulation),这种方式将语音变换成与其幅度成正比的二进制序列,而二进制数值往往采用脉冲表示,并用脉冲对采样幅 度进行编码,所以叫做脉冲编码调制。 脉冲编码调制没有考虑语音的性质,所以信号没有得到压缩。 (2)量化: 脉冲编码调制用同等的量化级数进行量化

6、,即采用均匀量化,而均匀量化是基本的量化方 式。但是均匀量化有缺点,在信号动态范围较大而方差较小的时候,其信噪比会下降 。 国际上有两种非均匀量化的方法:A律和u律,u律是最常用的一种。在美国,7位u律是长途电话质量的标准。 而我国采用的是A律压缩,而且有标准的A律PCM编码芯片。 2.3 DPCM&ADPCM: 降低传输比特率的方法之一是减少编码的信息量,这要消除语音信号中的冗余度。相邻的语音样本之间存在明显的相关性,因此对相邻样本间的差信号进行编码,便可使信息量得到压缩。因为差分信号比原语音信号的动态范围和平均能量都小。这种编码叫Differential PCM,简称DPCM,即差分脉冲编

7、码调制。 ADPCM即自适应差分脉冲编码调制,是包括短时预测的编码系统。CCITT(国际电报电话咨询委员会)在1984年提出的32 kbit/s的编码器建议就是采用ADPCM作为长途传输中的国际通用语音编码方案。这种ADPCM编码方案达到64 kbit/s PCM的语音传输质量,并具有很好的抗误码性能。2.4 a律压缩a律压缩示意图图2-4-1 a律压缩示意图A律压缩编码表线性输入编码压缩编码0000000wxyza000wxyz0000001wxyza001wxyz000001wxyzab010wxyz00001wxyzabc011wxyz0001wxyzabcd100wxyz001wxyz

8、abcde101wxyz01wxyzabcdef110wxyz1wxyzabcdefg111wxyz表2-4-1 A律压缩编码表采用DSP可以直接对PCM编码后的语音信号进行律和A律压缩。图1是DSP硬件实现数据压缩解压的简单流程,DSP将传输来的压缩后的数据进行解压成16位或者32位,然后对解压后的数据进行分析、处理,最后将处理后的数据按照要求压缩成8位的数据格式输出到相应设备,供其他设备读取。图2-4-2 数据压缩解压流程图2是DSP将数据解压的值,DSP将压缩的8位数据解压成16位的DSP通用数据格式,其中高13位为解压后的数据,低3位补0。这是因为6711的A律压缩只能对13位数据操作

9、。DSP将解压后的数据放在缓冲串口的发送寄存器中,只要运行发送指令,缓冲串口就会将数据发送出去。缓冲串口对接收数据的解压过程和压缩过程完全相反。图3是律数据解压的示意图。图2-4-3 A律数据解压图2-4-4 律数据解压DSP内部的缓冲串口(McBSPs)带有硬件实现的律A律压缩解压,用户只需要在相应寄存器中进行设置就可以了。在进行A律压缩时,采样后的12位数据,默认其最高位为符号位,压缩时要保持最高位即符号位不变,原数据的后11位要压缩成7位。这7位码由3位段落码和4位段内码组成。具体的压缩变换后的数据根据后11位数据大小决定。表2-4-2 A律数据压缩表除对串行口数据实现压扩处理外,这套硬

10、件在McBSP不使用时还可以当作一个特殊的处理单元对内部数据实现压扩处理,他有两种实现方法。法一:当串行口的发送和接受部分都处于复位状态时,DRR1和DXR1内部通过压扩逻辑连接在一起,数据从DXR1写入并根据XCOMPAND处理,然后根据RCOMPAND再处理,在4个CPU时钟后从DRR1中读出数据。该处理比软件实现快,不利之处在于处理完后没有同步信息通知CPU和DMA。法二:在数据环回模式下,McBSP也实现了一种内连。数据处理与第一种方法相同,但它可以提供中断信号(或同步事件)给CPU(或DMA)。这里数据处理的时间是根据串行口的比特律确定的。另外,在通常情况下McBSP先传输信号的高位

11、后传输低位,但是在字长为8比特的数据传输时,McBSP提供了比特倒序的功能,即可以先传输低位后传输高位。在本实验中,我们通过软件编程来完成线性码转换成A律。语音信号通常是小信号概率大,大信号出现的概率小,为提高小信号时的量化信躁比,压缩比特速率,可为非线性量化。语音压缩是把16位的数据比特转化为8位数据比特,从而到达语音压缩的目的。在主程序中通过A/D抽样量化,可以得到16位的线性编码,再由编码表通过软件计算得到8位A律编码,其中最高位为符号位,第6位到第4位为段落码,低4位为段内码。将8位的压缩结果存储到系统RAM中进行缓存,根据抽样率、语音存储时间以及系统RAM的容量设置语音存储缓冲区的大

12、小,待缓冲区存满后,将缓冲区内的数据进行解压缩,然后输出到SPEAKER接口输出端。若使用A/D转换器,必须首先对A/D转换器进行初始化设置,即设置A/D转换器的工作模式、输入增益以及抽样频率等。 3程序设计3.1程序流程图图3-1 程序流程图3.2 代码编写存储器的分配(5402.cmd)MEMORY PAGE 0: VECS: origin = 0080h, length = 0080h /* Internal Program RAM */ PRAM: origin = 7600h, length = 8000h /* Internal Program RAM */ PAGE 1: SCR

13、ATCH: origin = 0060h, length = 0020h /* Scratch Pad Data RAM */ DMARAM: origin = 0C00h, length = 0300h /* DMA buffer */ DATA: origin = 1100h, length = 0080h /* Internal Data RAM */ STACK: origin = 1180h, length = 0560h /* Stack Memory Space */ INRAM: origin = 1900h, length = 0100h /* Internal Data R

14、AM */ HPRAM0: origin = 1A00h, length = 0002h /* HPI memory accessible by Host and DSP */ HPRAM1: origin = 1A02h, length = 0280h /* HPI memory accessible by Host and DSP */ HPRAM2: origin = 1C82h, length = 0280h /* HPI memory accessible by Host and DSP */ EXRAM: origin = 1F10h, length = 9000h /* Exte

15、rnal Data RAM */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 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 tab

16、les 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 */ cuvtab EXRAM PAGE 1 /* Stochastic codebook */ cdbktab EXRAM PAGE 1 /* various codebook tables*/ logtab EXRAM PAGE 1 /* table for log2 */ powtab EXRAM

17、 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 */ acbtab EXRAM PAGE 1 /* table for thresholds in acb */ pm03tab EXRAM PAGE 1 /* table for

18、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 hpibuff2 HPRAM2 PAGE 1 dma_buff DMARAM PAGE 1/*主程序设计*/*语音采集及回放程序*/*用A律进行压缩及解压*/*采用AD50进行A/D,D/A转换 */ /*灯循环闪烁程序开始*/*L0:录音*/*L1:放音*/#include /* 头文件*/#includ

19、e #include #include /* 宏定义 */#defineSIGN_BIT(0x80)/* Sign bit for a A-law byte. */#defineQUANT_MASK(0xf)/* Quantization field mask. */#defineNSEGS(8) /* Number of A-law segments. */#defineSEG_SHIFT(4) /* Left shift for segment number. */#defineSEG_MASK(0x70)/* Segment field mask. */* 函数声明 */void del

20、ay(s16 period);void led(s16 cnt);void initcodec(void);void flashenable(void);unsigned char data2alaw(s16 pcm_val);int alaw2data(unsigned chara_val);static int search(int val,short*table,int size);/* 全局变量 */HANDLE hHandset;s16 data;s16 data1;u16 i=0;u16 temp1;u16 j=0;u16 k,l=0;u8 temp2;u16 buffer2000

21、0;static short seg_end8=0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF;/* 主函数 */void main() if (brd_init(100) return; led(2); /闪灯两次 initcodec(); /初始化codec flashenable(); /选择片外FLASH为片外存储器 delay(100); brd_led_toggle(BRD_LED0); for(i=0x9000;i0xefff;i+) REG_WRITE(i,*(volatile u16*)DRR1_ADDR(HANDSET_CODEC);

22、 delay(20); brd_led_toggle(BRD_LED1); delay(200); for(i=0x9000;i0xefff;i+) *(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=REG_READ(i); delay(20); brd_led_toggle(BRD_LED2); */ while (1) while (!MCBSP_RRDY(HANDSET_CODEC) ; /等待接收handset处的采样 brd_led_toggle(BRD_LED0); data = *(volatile u16*)DRR1_ADDR(HANDSET_C

23、ODEC); /从handset处读取采样 temp1=data2alaw(data); /对采样进行a律压缩 /* 把低地址数据放在高八位 高地址数据放在低八位 */ i=i+1; if(i%2=1) bufferj=(temp1=40000) i=0; if(j=20000) j=0; brd_led_disable(BRD_LED0); brd_led_toggle(BRD_LED1); /点亮二极管1 表示放音开始 /* 放音部分 */ for(k=0;k8)&0x0ff; else temp2=bufferl&0x0ff; l+; if(l=20000) l=0; data1=ala

24、w2data(temp2); / a律解压 while (!MCBSP_XRDY(HANDSET_CODEC) ; *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1; /将数据写入D/A转换器 /* 放音结束 */ brd_led_toggle(BRD_LED0); brd_led_toggle(BRD_LED1); /主程序结束子函数 /*延时*/void delay(s16 period)int i, j; for(i=0; iperiod; i+) for(j=0; j1; j+); /*闪灯*/void led(s16 cnt)while

25、 ( cnt- )brd_led_toggle(BRD_LED0); /切换LED指示灯0的显示状态delay(1000);brd_led_toggle(BRD_LED1);delay(1000);brd_led_toggle(BRD_LED2);delay(1000);/*初始化codec*/void initcodec(void) /* Open Handset Codec 获取设置codec的句柄*/ hHandset = codec_open(HANDSET_CODEC); / Acquire handle to codec /* Set codec parameters */ cod

26、ec_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 analog input to ADC codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); / -6dB gain on analog output from DAC codec_sample_

27、rate(hHandset,SR_8000); / 8KHz sampling rate /*设置flash*/void flashenable(void)CPLD_CTRL2_REG|=0x0010;CPLD_DMCTRL_REG|=0x0040;/*a律压缩*/unsigned char data2alaw(s16 pcm_val) intmask;intseg;unsigned charaval;if (pcm_val = 0) mask = 0xD5; / 标记 (7th) bit = 1 else mask = 0x55; / 标记 bit = 0 pcm_val = -pcm_va

28、l;/ Convert the scaled magnitude to segment number. seg = search(pcm_val, seg_end, 8); / Combine the sign, segment, and quantization bits. if (seg = 8) / out of range, 返回最大数. return (0x7F mask);else aval = seg SEG_SHIFT;if (seg 1) & QUANT_MASK;elseaval |= (pcm_val seg) & QUANT_MASK;return (aval mask

29、);/*alaw的子程序*/static int search(int val,short*table,int size)inti;for (i = 0; i size; i+) if (val = *table+)return (i);return (size);/*a律解压*/int alaw2data(unsigned chara_val)intt;intseg;a_val = 0x55; t = (a_val & QUANT_MASK) SEG_SHIFT;if(seg=0) t += 8; t=(t3);if(seg0) t +=0x108; t=(t(4-seg);if(seg3)

30、t+=0x108;t=(t=(seg-4);return (a_val & SIGN_BIT) ? t : -t);/* 结束 */ 4 调试过程1将工程文件夹放入C盘要求目录下。2. 打开CCS,Project open,打开工程文件。3进行编译,连接。4根据错误提示,对build option进行正确的设置,修改头文件路径。5再编译,连接,显示没有错误。6load program-run,此时三盏灯循环亮,之后程序开始,第一盏灯亮开始录音,一段时间后第二盏灯亮开始放音,然后又开始录音。依次循环。5 运行结果1.观察数据结果Viewwatch window我们输入buffer,显示此数组的值

31、,如图D所示。2观察数据图形ViewGraphTime Frequency可以加入断点,然后按Animate 动态显示。分别观察语音输入(存放在变量data中)波形,压缩后波形(temp1),解压后输出波形(data1),图形分别为A,B,C。3观察存储器中数据ViewMemory经过多次调试,使录音时间在保持音质的前提下达到5-6秒。A输入波形(data)图5-1 输入波形B压缩后波形(temp1)图5-2压缩后波形C解压缩后输出波形(data1)图5-3 解压缩后输出波形Dwatch window中的值图5-4 watch window中的值总 结经历了这次实验,我想我们充分认识到了压力带

32、给人的巨大动力。确定做语音压缩,存储与回放实验后,查了大量A律,u律压缩方法的资料,并学习了CCS环境下的操作、调试与运行。由于之前对DSP很不了解,这方面学习我们去实验室操作了不少时间,终于熟悉了它的操作步骤与简单调试方法。这次课程设计基本上涵盖了DSP课程学习到的很多知识点,课程题目不仅要求对课本知识有较深刻的了解,同时要求我们有较强的思维和动手能力。在这次课程设计中,我遇到了非常多的困难,但在困难的解决使我学会了很多,不仅仅是关于数据库知识的方面,还有设计理念以及设计所需的坚持精神。课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次做课程设计使我明白了自己原来

33、知识还很欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次做课程设计,我才明白学习是一个长期积累的过程,以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。虽然课程设计过程中遇到了很多麻烦,但通过不断查阅资料和老师同学的指导帮助,最终完成了课程设计要求的各部分内容。这次课程设计提高了我的思维能力和协作能力,锻炼了我的动手能力!本文是在指导教师马岱老师的悉心指导下完成的,在课程设计的过程中庄老师给了我很大的帮助。在设计中遇到的问题老师都帮我细心解答,这次课程设计能成功与老师的努力是分不开的。课程设计的每一步无不倾注了老师的心血和汗水。有这

34、样的机会、这样的成功,得益于学校的大力支持和老师对我们的不倦指导。十分感谢教务处组织这样的活动,让我们有了锻炼的机会。在我的学习过程中,不管是指导老师还是同学都给了我耐心的指导和帮助。我在此对各位老师和同学表示诚挚的感谢!参考文献1丁玉美编.数字信号处理.西安:西安电子科技大学出版社,2001.2丁玉美、高西全编著.数字信号处理学习指导.西安:西安电子科技大学出版社,2001.3郑君里等编.信号与系统.北京:高等教育出版社,2000.4关华等,Techniques and Applications of DSP Chips,济南出版社,2006,105王念旭等,DSP基础与应用系统设计,北京航

35、空航天大学出版社.6李哲英,DSP基础理论与应用技术,北京航空航天大学出版社.7关华,DSP原理与应用实验指导书,山东建筑大学.8 Lawrence Rabiner,语音识别基本原理,清华大学出版社9易克初,语音信号处理,国防工业出版社10关华,Digital Speech Processing,黄河出版社.指导教师评语学号1071306115姓名刘 涛班级计算机1073选题名称基于DSP的语音处理系统设计序号评价内容权重(%)得分1考勤记录、学习态度、工作作风与表现。52自学情况:上网检索机时数、文献阅读情况(笔记)。103论文选题是否先进,是否具有前沿性或前瞻性。54成果验收:是否完成设计任务;能否运行、可操作性如何等。205报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。306文献引用是否合理、充分、真实。57答辩情况: 自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。25合计指导教师(签章): 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号