毕业设计(论文)-基于MATLAB的语音信号PCM编译码实现.doc_第1页
毕业设计(论文)-基于MATLAB的语音信号PCM编译码实现.doc_第2页
毕业设计(论文)-基于MATLAB的语音信号PCM编译码实现.doc_第3页
毕业设计(论文)-基于MATLAB的语音信号PCM编译码实现.doc_第4页
毕业设计(论文)-基于MATLAB的语音信号PCM编译码实现.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

论文编码:(小四号楷体居右)首都师范大学本科生毕业论文(设计)基于MATLAB的语音信号PCM编译码实现The implementation of PCM Coding and Encoding of Speech SignalBased on MATLAB院 系物理系专 业 光电信息年 级2010级 学 号1100600113指导教师 论文作者 完成日期- 18 -首都师范大学本科生毕业论文(设计)原创性承诺书论文(设计)题目基于MATLAB的语音信号PCM编译码实现学生姓名专业光电信息学号完成时间年月日年月日指导教师姓名职称副教授承诺内容:1、本毕业论文(设计)是学生在导师的指导下独立完成,凡涉及其他作者的观点和材料,均作了注释,如出现抄袭及侵犯他人知识产权的情况,愿按学校有关规定接受处理,并承担相应责任。2、学校有权保留并向上级有关部门送交本毕业论文(设计)的复印件和磁盘。备注:学生签名:时间:说明:学生毕业论文(设计)如有保密等要求,请在备注中明确,承诺内容第2条即以备注为准。中文提要本设计主要内容是使用MATLAB模拟仿真语音信号的PCM编译码。本设计使用的工具是MATLAB,因为MATLAB是流行于科学计算的软件工具,在数学类科技应用软件中首屈一指,在信号处理方面功能强大。现在的数字传输系统都是采用脉冲编码调制(PCM)体系,是一种对连续变化的模拟信号进行抽样、量化和编码产生数字信号。首先介绍了MATLAB与PCM,模拟信号的抽样、量化、编码和译码原理,然后完成这四个过程的系统设计,最后使用MATLAB进行模拟仿真,并对其结果进行分析总结。在本设计中,采用A率13折线法对已抽样在时间上离散的模拟信号进行量化,然后使用自定义的编码函数和译码函数对量化电平进行编译码,后经过滤波器得到还原的模拟信号,完成语音信号PCM编译码系统。关键词:MATLAB;A率;PCM;编译码AbstractThe main content of this design is implementation the PCM codec of speech signal based on MATLAB.The tool used in this design is MATLAB. MATLAB is a popular software for scientific computing. It is a great tool in Math and a powerful tool in signal processing. The signal in digital transmission systems are mostly coding by pulse code modulation (PCM) at this time. PCM is a way to convert the analog signal into digital signal by three steps: sampling, quantization, and coding.Firstly in this paper, it will introduce the MATLAB and Pulse Code Modulation. The principle of Sampling, Quantization, Coding, and Decoding will be shown. Then it will design the whole system. Finally, accomplish the simulation of the system in MATLAB.And, quantify by A law of 13 lines method, coding and encoding by user-defined functions, recover the signal with filter.Key words:MATLAB; A law; PCM, Codec目录第1章MATLAB及PCM简介 11.1MATLAB介绍 11.2PCM介绍 1第2章 设计原理 22.1抽样 22.2量化 22.2.1 均匀量化 22.2.2 非均匀量化 22.3编码 32.4 译码 4第3章 MATLAB程序设计 53.1流程图设计 5 3.1.1 系统主程序流程设计 5 3.1.2 PCM编码程序流程设计 5 3.1.3 PCM译码程序流程设计 53.2 Simulink仿真设计 6 3.2.1 系统主程序设计 6 3.2.2 PCM编码模块设计8 3.2.3 PCM译码模块设计10第4章 系统仿真的结果及其分析 124.1正弦信号的仿真及结果分析 12 4.1.1 仿真 124.1.2 结果分析 144.2 Uniform Random Number信号的仿真及结果分析14参考文献 18致谢 18第1章MATLAB及PCM简介1.1MATLAB介绍MATLAB是MATrixLABoratory的缩写,是一款由美国MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发,数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其他语言(包括C、C+和FORTRAN)编写的程序。MATLAB还有为数众多的附加工具箱,以使MATLAB适合不同领域的应用,例如图像处理、信号处理与通信等。此外,还有一个配套软件包Simulink,提供一个可视化开发环境,常用与系统模拟、动态、嵌入式系统开发等方面。在本设计中,主要是应用Simulink搭建系统,用MATLAB编写编码函数和译码函数。1.2PCM介绍PCM全称为:Pulse Code Modulation,中文名为脉冲编码调制。是一种模拟信号的数字化方法。PCM信号是模拟信号经过抽样、量化、编码三个步骤而产生的。抽样,就是按照一定的规律从模拟信号中获取一定数量的取样信号。通常按照抽样定理确定抽样频率 fs,即抽样频率fs应不小于信号最大频率fH的2倍。量化,就是把抽取出来的取样信号按一定规律使之在信号幅值上离散。一般分为两种方法:均匀量化和非均匀量化。本设计中采用非均匀量化中的A率13折线法进行量化。编码,就是把经量化的量化电平通过一定的方法转化为二进制码。此二进制码有两种形式:自然二进制码,折叠二进制码。由于折叠二进制码可用于双极性电压编码,而且较前者在小电压处误码影响更小。而在语音传输中,语音信号出现小电压的概率大,故本设计中使用折叠二进制码进行编码。第2章设计原理2.1抽样(Sampling)所谓抽样,是指对在时间上连续的模拟信号按照一定的方法取得一部分模拟信号的数据。通常是等间隔地抽取信号瞬时幅度值,获得在时间上离散的模拟信号。理论上,抽样的过程可以看作是周期性单位冲激脉冲与模拟信号相乘,得到与脉冲信号等周期,幅值为该时刻模拟信号的幅值与脉冲信号幅值的乘积。但实际上,使用周期性窄脉冲代替冲激脉冲与模拟信号相乘。用获得的在时间上离散的模拟信号,在一定的条件只下,我们可以恢复原始的模拟信号。该条件就是满足抽样定理。即若一个连续的模拟信号m(t)中的最高频率小于fH则以间隔时间T12F的周期性冲激脉冲对它抽样时,m(t)将被这些抽样值所完全确定。也就是说恢复原信号的条件是:fs2fH即抽样频率fs应不小于fH的2倍。这一最低抽样速率2fH称为奈奎斯特(Nyquist)速率。与此相对应的最大抽样间隔称为奈奎斯特间隔。2.2 量化(Quantization)经过抽样后信号成为在时间上离散的信号,但由于在幅值上是非离散的,故该信号仍称为模拟信号。为了将该模拟信号变为数字信号,需要通过一定的处理,使其在幅值上离散。此过程称为量化。在不同的需求下,量化的方法不同。一般分为两大类:均匀量化和非均匀量化。2.2.1 均匀量化均匀量化是指,将模拟信号取样值的取值范围等间隔地划分为若干个区间,每个区间对应一个量化电平。如:信号幅值范围为a,b,若划分为两个区间,则为a,(a+b)2,(a+b)2, b。每个区间取不同的量化电平值。一般为区间中点所对应的电平值。2.2.2 非均匀量化在非均匀量化时,量化间隔随信号取样值得不同而变化的。通常先对信号取样值进行压缩处理,再进行均匀量化为了让不同的信号强度保持信号量噪比恒定,在理论上要求压缩特性满足:y= 1+ 1klnx;(k为比例常数)但是由于此公式在x=0时,y=-。因此应当对该公式进行修正,使之当x=0时,y=0。国际电信联盟(International Telecommunication Union, ITU)制订了两种建议:A压缩率和压缩率,以及相应的近似算法:13折线法和15折线法。我国则采用A率13折线法。A压缩率是指符合下式的对数压缩规律:y=Ax1+lnA, 0x 1A1+lnAx1+lnA, 1Ax1式中:x为压缩器归一化输入电压,y为压缩器归一化输出电压,A为常数,它决定压缩程度。一般A取87.6。下面表格是A率(其中A=87.6)与13折线法的比较:表 1:A压缩率(A=87.6)与13折线法的比较I876543210A率的x值01/1281/60.61/30.61/15.41/7.791.3.931/1.98113折线法的x=12i01/1281/641/321/161/81/41/21由上表可知,13折线法与A=87.6时的A率十分接近。2.3编码(Coding)经过量化后信号变成了离散的数字信号,接下来就是对该信号进行编码。最常用的编码是将其转化为二进制信号,也就是所谓的脉冲编码调制(Pulse Code Modulation, PCM)。对于PCM编码来说,有两种编码方法:自然二进制码和折叠二进制码。后者可用于双极性电压编码,而且较前者在小电压处误码影响更小。而在语音传输中,语音信号出现小电压的概率大,故使用折叠二进制码进行编码。在这里,将采用十三折线法、折叠二进制码。首先将电平范围按十三折线法分成13段。然后每段都均匀量化,且每段16个量化间隔。在十三折线法中的折叠码共有8位。第一位c1表示量化值的极性正负(即符号位),第二位至第四位即c2c3c4用于表示所在段落号(即段落码),后面四位c5c6c7c8表示所在段落的16个量化电平(即段内码):表 2:段落码、段内码的确定段落码段内码段落序号段落码c2c3c4段落范围量化间隔段内码c5c6c7c8量化间隔段内码c5c6c7c881111024,2048)151111701117110512,1024)141110601106101256,512)131101501015100128,256)12110040100401164,128)11101130011301032,64)10101020010200116,32)910011000110000,16)81000000002.4译码(Decoding)经过以上步骤,原模拟信号已经处理成二进制信号,每个量化电压都转换为8位二进制码。译码就是将这些8为二进制码还原成十进制的量化电压。其步骤正好与编码相反。第3章MATLAB程序设计3.1流程图设计3.1.1系统主程序流程设计开始信号源抽样量化PCM编码PCM译码结束3.1.2 PCM编码程序流程设计输入判断正负,确定符号位c1确定段落号、段落码确定段内号、段内码输出3.1.3 PCM译码程序流程设计输入判断符号位c1,确定电平正负根据段落码,确定所在段落及其初始电平值根据段内码,确定该电平与该段初始电平的差值输出根据上面得到的数据确定电平值3.2 Simulink仿真设计3.2.1 系统主程序设计图 1:系统结构图对于这个系统,主要包含三大模块:信号源、信号处理模块、显示模块。其中信号处理模块分为四个小模块:抽样、量化、编码、译码。信号源:图 2:信号源抽样模块:图 3:抽样模块量化模块及编码模块:图 4:量化及编码模块译码模块:图 5:译码模块显示模块由两部分组成。第一部分是输出图,包含原始信号、滤波器输出信号。第二部分是抽样过程图,包含原始信号、抽样信号,及抽样图。 图 6:显示模块3.2.1PCM编码模块设计此模块是由自定义的函数构成。本着简化代码的原则,减少了比较的次数。下面介绍具体方法。根据电平的正负确定符号位signCode:beginValue=1, u00, u0(u为量化电平)表 3:PCM码的确定区间0,16)16,32)32,64)64,128)128,256)256,512)512,1024)0124,2048)log2(beginValue)-45678910paragraphIndex12345678paraCode000001010011100101110111interval11248163264log2(interval)00123456inParagraphIndex01234567inParaCode00000001001000110100010101100111inParagraphIndex89101112131415inParaCode10001001101010111100110111101111(beginValue:段落起始值、paragraphIndex:段落号、paraCode:段落码、interval:该段最小量化间隔、 inParagraphIndex:段内量化间隔号、inParaCode:段内码)分析表格可以得到:、段落号paraCode、段落码paraCode:paragraphIndex=1, u16ceillog2u-3,u16paraCode=bitget(paragraphIndex-1, 3: -1:1)、段落起始值beginValue:beginValue=0, paragraphIndex=12paragraphIndex-2 paragraphIndex16、每段的最小量化间隔interval:interval=1, paragraphIndex=12paragraphIndex+2 paragraphIndex16或interval=1, beginValue=1beginValue*16 beignValue1、段内量化间隔号inParagraphIndex、段内码 inParaCode:inParagraphIndex=flooru-beginValueintevalinParaCode=bitgetint8inParagraphIndex, 4: -1: 1利用以上公式即可获得PCM码的符号位、段落码、段内码。那么就可以得到量化电压u所对应的PCM码。需要注意的是在量化电平为2048时,上表中没有相应的信息,且不符合满足上述公式,故将其的PCM码修正为量化电平为PCM码的后7位=1,1,1,1,1,1,1下面就是实现这一过程的MATLAB程序。%输入u为量化后的电压,y为量化电压u所对应的PCM码function y = PCMCode(u)%获取符号位signCodeif u0signCode = 1;else signCode = 0;endu = abs(u);%获取段落码paraCode%确定段落号ifu16paragraphIndex = 1;elseparagraphIndex = ceil ( log2(u) 3);end%确定段落码paraCode = bitget( int8(paragraphIndex 1), 3: -1: 1);%获取段内码inParaCode%该段最小量化间隔interval(其可取值1, 1, 2, 4, 8, 16, 32, 64)%该段段落起始值beginValue (其可取值0 , 16, 32 ,64 ,128, 256, 512, 1024, 2048)if paragraphIndex =1interval = 1;beginValue = 0;elseinterval = pow2(paragraphIndex 2);beginValue = pow2(paragraphIndex +2); %beginValue = interval* 16end%确定段内量化间隔号inParagraphIndex = floor ( ( u beginValue) / interval );%确定段内码inParaCode = bitget ( int 8(inParagraphIndex), 4: -1: 1);%获得PCM码y = zeros( 8, 1);y(1,1) = signCode;y(2:4,1) = paraCode;y(5:8,1) = inParaCode;ifu=2048y(2:8,1)=1,1,1,1,1,1,1;end3.2.2 PCM译码模块设计%输入u为PCM码,是一个有8个二进制码的数组;输出y是还原的量化电压function y = PCMDecode(u)forn=1:8%确定量化电压的正负signifu(1)=0sign = 1;elsesign = -1;end%确定所在段落号paragraphIndex = u(2)*4 + u(3)*2 + u(4) +1;%段落序号是从1开始的%确定所在段落的起始值beginValue、所在段落的最小量化间隔intervalifparagraphIndex =1beginValue = 0;interval = 1;elsebeginValue = pow2(paragraphIndex+2);interval = pow2(paragraphIndex-2);%beginValue = interval* 16end%确定所在段内量化间隔号inParagraphIndex:inParagraphIndex = u(5)*8 + u(6)*4 + u(7)*2 + u(8);%确定该量化电平值与所在段落起始值的差值 toBeginValue:toBeginValue = interval * inParagraphIndex;%确定该量化电平值valuevalue = sign * (beginValue + toBeginValue);%获得归一化电压y = value/2048;endend第4章系统仿真的结果及其分析4.1正弦信号的仿真及结果分析4.1.1仿真参数设置1:信号源脉冲产生器量化器低通滤波器幅值频率(rad/sec)周期(s)抽样间隔(s)相移量(s)增益(Gain)带宽(rad/sec)11*pi210.320481*pi信号图:图 7:抽样过程图图 8:输出图参数设置2:信号源脉冲产生器量化器低通滤波器幅值频率(rad/sec)周期(s)抽样间隔(s)相移量(s)增益(Gain)带宽(rad/sec)11*pi21.50.320481*pi信号图:图 9:抽样过程图图 10:输出图参数设置3:信号源脉冲产生器量化器低通滤波器幅值频率(rad/sec)周期(s)抽样间隔(s)相移量(s)增益(Gain)带宽(rad/sec)11*pi20.50.320481*pi信号图:图 11:抽样过程图图 12:输出图4.1.2结果分析根据图7至图12可知,抽样频率不得低于信号最高频率的2倍,即满足抽样定理。只要参数设置正确,可以还原出原始信号。4.1Uniform Random Number信号的仿真及结果分析在这里需要将原信号源Signal Generator模块换成Uniform Random Number模块,URN模块产生的是模拟信号,该模拟信号在一定时间间隔内电平保持不变。接下来进行参数设置:信号源脉冲产生器量化器低通滤波器Minimum/MaximumseedSample time抽样间隔(s)相移量(s)增益(Gain)带宽(rad/sec)-1/100.1d02048100图 13:输出图(d=0.1)图 14:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论