基于.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编码。基于PCM的语音信号编码与译码性能分析,就是将一段模拟信号进行数字化,并通过对实际语音信号进行PCM编码和译码来掌握PCM编码和译码原理及其实现方法,提高我们综合应运基础知识能力和计算机编程能力,为今后的学习和工作积累经验。一基本原理1.1脉冲编码原理通常把从模拟信号抽样、量化,直到变换成为二进制符号的基本过程,成为脉冲编码调制<PCM,PulseCodeModulation>,简称脉冲调制。PCM是一种对模拟信号数字化的取样技术,是一种将模拟信号变换为数字信号的编码方式。根据CCITT的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为A律和律方式。本设计采用了A律方式,采用非均匀量化PCM编码示意图如下图1-1所示:语音输入语音输入低通滤波、瞬时压缩抽样量化编码信道再生、解码、解调瞬时扩张、低通滤波话音输出图1-1PCM原理框图抽样原理所谓抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能无失真的恢复原模拟信号。它的抽样速率的下限是由抽样定理确定的。在一个频带限制在内的时间连续信号,如果以的时间间隔对它进行抽样,那么根据这些抽样值就能完全恢复原信号。或者说,如果一个连续信号的频谱中最高频率不超过,当抽样频率时,抽样后的信号就包含原连续的全部信息[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

提交评论