1、基于 PCM 的语音信号编码的译码摘 要本 设 计 是 基 于 PCM 的 语 音 信 号 编 码 和 译 码 性 能 分 析 , 从 计 算 机 的 麦 克 风录 取 一 段 语 音 信 号 , 录 制 时 间 为 12 秒 , 并 对 录 下 的 语 音 信 号 进 行 时 域 分 析 。其 主 要 内 容 是 将 模 拟 的 语 音 信 号 数 字 化 , 具 体 分 三 步 抽 样 、 量 化 、 编 码 。 以PCM 编 码 和 译 码 原 理 , 在 MATLAB 下 对 该 段 语 音 进 行 PCM 编 码 ( 以 A 律 编 码规 则 进 行 编 码 ) 和 译 码 , 并
2、比 较 了 与 未 编 码 波 形 的 差 别 。关键词:脉 冲 编 码 调 制 ; 编 码 ; 译 码 ; 语 音 信 号1前 言实 际 中 的 信 源 通 常 是 模 拟 的 , 如 电 视 信 号 、 麦 克 风 拾 取 的 语 音 信 号 等 。为 了 能 够 使 模 拟 信 号 在 数 字 通 信 系 统 中 传 输 , 特 别 是 能 够 和 其 他 数 字 信 号 一起 在 宽 带 综 合 业 务 数 字 通 信 网 中 同 时 传 输 , 需 要 将 模 拟 信 号 进 行 数 字 化 。 数字 化 的 过 程 一 般 由 抽样、量化、编码组成。其中,抽样要保证不丢失原始信息,
3、而量化要满足一定的质量,最后编码解决信号的表示。该设计则是在 MATLAB 平台下,依据脉冲编码调制原理对实际的语音信号进行 PCM 编码和译码。脉 冲 编 码 调 制 (PCM, Pulse Code Modulation)在通信系统中完成将语音信号数字化功能。是 一 种 对 模 拟 信 号 数 字 化 的 取 样 技 术 , 将 模 拟 信 号 变 换 为数 字 信 号 的 编 码 方 式 , 特 别 是 对 于 音 频 信 号 。 PCM 对 信 号 每 秒 钟 取 样 8000 次 ; 每 次 取 样 为 8 个 位 , 总 共 64kbps。 PCM 的实现主要包括三个步骤完成:抽样
4、、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。根据 CCITT 的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为 A 律和 律方式。欧洲和我国大陆采用 A 律,北美、日本和其他一些国家和地区采用 律。本设计采用了 A 律方式,由于 A 律压缩实现复杂,常使用 13 折线法编码,采用非均匀量化 PCM 编码。基 于 PCM 的 语 音 信 号 编 码 与 译 码 性 能 分 析 , 就 是 将 一 段 模 拟 信 号 进 行 数字 化 , 并 通 过 对 实 际 语 音 信 号 进 行 PCM 编 码 和 译 码 来 掌 握 PCM 编 码 和 译
5、 码原 理 及 其 实 现 方 法 , 提 高 我 们 综 合 应 运 基 础 知 识 能 力 和 计 算 机 编 程 能 力 , 为今 后 的 学 习 和 工 作 积 累 经 验 。2一 基本原理1.1 脉冲编码原理通常把从模拟信号抽样、量化,直到变换成为二进制符号的基本过程,成为脉冲编码调制( PCM, Pulse Code Modulation),简称脉冲调制。PCM 是 一种 对 模 拟 信 号 数 字 化 的 取 样 技 术 , 是 一 种 将 模 拟 信 号 变 换 为 数 字 信 号 的 编 码方 式 。 根据 CCITT 的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种
6、建议方式,分别为 A 律和 律方式。本设计采用了 A 律方式,采用非均匀量化 PCM 编码示意图如下图 1-1 所示:语音输入低通滤波、瞬时压缩抽样量化编码信道再生、解码、解调瞬时扩张、低通滤波话音输出图 1-1 PCM 原理框图31.1.1 抽样原理所谓抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能无失真的恢复原模拟信号。它的抽样速率的下限是由抽样定理确定的。在一个频带限制在 内的时间连续信号 ,如果以 的时间间隔(0,)hf ()ft1/2hf对它进行抽样,那么根据这些抽样值就能完全恢复原信号。或者说,
7、如果一个连续信号 的频谱中最高频率不超过 ,当抽样频率 时,抽样后的()ft hfshf信号就包含原连续的全部信息 1。抽样定理在实际应用中应注意在抽样前后模拟信号进行滤波,把高于二分之一抽样频率的频率滤掉。这是抽样中必不可少的步骤。1.1.2 量化原理从数学上来看,量化就是把一个连续幅度值的无限数集合映射成一个离散幅度值的有限数集合。如图 2 所示,量化器 Q 输出 L 个量化值 ,ky。 常称为重建电平或量化电平。当量化器输入信号幅度 落在Lk,32,1ky x与 之间时,量化器输出电平为 。这个量化过程可以表达为 1:x ky(1-1),)(1kxQxL,32,1这里 称为分层电平。通常
8、:kx(1-kkx12)其中 称为量化间隔。k模拟信号的量化分为均匀量化和非均匀量化。由于均匀量化存在的主要缺点是:无论抽样值大小如何,量化噪声的均方根值都固定不变。因此,当信号较小时,则信号量化噪声功率比也就很小,这样,对于弱信号时的量化信()mt噪比就难以达到给定的要求 2。通常,把满足信噪比要求的输入信号取值范围定义为动态范围,可见,均匀量化时的信号动态范围将受到较大的限制。为了克服这个缺点,实际中,往往采用非均匀量化。非均匀量化是根据信号的不同区间来确定量化间隔的。对于信号取值小的4区间,其量化间隔 也小;反之,量化间隔就大。它与均匀量化相比,有两个v突出的优点。首先,当输入量化器的信
9、号具有非均匀分布的概率密度(实际中常常是这样)时,非均匀量化器的输出端可以得到较高的平均信号量化噪声功率比;其次,非均匀量化时,量化噪声功率的均方根值基本上与信号抽样值成比例。因此量化噪声对大、小信号的影响大致相同,即改善了小信号时的量化信噪比。实际中,非均匀量化的实际方法通常是将抽样值通过压缩再进行均匀量化。通常使用的压缩器中,大多采用对数式压缩。广泛采用的两种对数压缩律是压缩律和 A 压缩律。美国采用 压缩律,我国和欧洲各国均采用 A 压缩律,因此,PCM 编码方式采用的也是 A 压缩律。模拟信号的量化过程如图 1-2 所示 3:图 1-2 模拟信号的量化1.1.3 编码原理所谓编码就是把
10、量化后的信号变换成代码,其相反的过程称为译码。当然,这里的编码和译码与差错控制编码和译码是完全不同的,前者是属于信源编码的范畴。在现有的编码方法中,若按编码的速度来分,大致可分为两大类:低速编码和高速编码。通信中一般都采用第二类。编码器的种类大体上可以归结为三类:逐次比较型、折叠级联型、混合型。在逐次比较型编码方式中,无论采用几位码,一般均按极性码、段落码、段内码的顺序排列。下面结合 13 折线的量化来加以说明。在 13 折线法中,无论输入信号是正是负,均按 8 段折线(8 个段落)进行编码。若用 8 位折叠二进制码来表示输入信号的抽样量化值,其中用第一位表示量化值的极性,其余七位(第二位至第
11、八位)则表示抽样量化值的绝对大小。具体的做法是:用第二至第四位表示段落码,它的 8 种可能状态来分别代表 8模拟入yx量化器量化值5个段落的起点电平。其它四位表示段内码,它的 16 种可能状态来分别代表每一段落的 16 个均匀划分的量化级。这样处理的结果,8 个段落被划分成 128 个量化级。段落码和 8 个段落之间的关系如表 1-1 所示 1;段内码与 16 个量化级之间的关系见表 1-2 所示 1:表 1-1 段落码 表 1-2 段内码段落序号 段落码 段落范围 量化间隔 段内码 量化间隔 段内码8 111 1024-2048 15 1111 7 01117 110 512-1024 14
12、 1110 6 01106 101 256-512 13 1101 5 01015 100 128-256 12 1100 4 01004 011 64-128 11 1011 3 00113 010 32-64 10 1010 2 00102 001 16-32 9 1001 1 00011 000 0-16 8 1000 0 0000语音 PCM 抽样频率是 8KHZ,每个量化样值对应一个 8 位二进制码,故语音数字编码信号的速率为 8bits8kHz=64kb/s4.量化噪声随级数的增多和极差的缩小而缩小。量化级数增多即样值个数增多,就要求更长的二进制编码。因此,量化噪声随二进制编码的位
13、数增多而减少,即随数字编码信号的速率提高而减少。自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即 PCM 编码。PCM 通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。1.1.4 译码原理PCM 译码器是实现 PCM 编码的逆系统。其中各模块功能如下 5:D/A 转换器:用来实现与 A/D 转换相反的过程,实现数字量转化为模拟量,从而达到译码最基本的要求,也就是最起码的步骤。瞬时扩张器:实现与瞬时压缩器相反的功能,由于采用 A 律压缩,扩张也必须采用 A 律瞬时扩张器。 低通滤波器:由于采样脉冲不可能是理想冲激函数会引入孔径失真,量化时也会带来量化噪声
14、,及信号再生时引入的定时抖动失真,需要对再生信号进6行幅度及相位的补偿,同时滤除高频分量,在这里使用与编码模块中相同的低通滤波器。1.2 A 律 13 折线原理实际中,非均匀量化的实际方法通常是将抽样值通过压缩再进行均匀量化。通常使用的压缩器中,大多采用对数式压缩。广泛采用的两种对数压缩律是压缩律和 A 压缩律。美国采用 压缩律,我国和欧洲各国均采用 A 压缩律,因此,PCM 编码方式采用的也是 A 压缩律。所谓 A 压缩律也就是压缩器具有如下特性的压缩律 1:(1-AXxy10,ln13)(1-,l4)其中 。87.6AA 律压扩特性是连续曲线,A 值不同压扩特性亦不同,在电路上实现这样的函
15、数规律是相当复杂的。实际中,往往都采用近似于 A 律函数规律的13 折线(A=87.6)的压扩特性。在这个设计之中所用着的 PCM 编码正是采用这种压扩特性来编码的。图 1-2 示出了这种压扩特性,表 1-3 列出了 13折线时的 x 值与计算 x 值的比较。7图 1-2 13 折线特征8表 1-3 计算值 与 A 律 13 折线时 值的比较xxy0 812834856871x0 6.0.1.79.13.9.1按折线分段时的 x0 128432168421段落 1 2 3 4 5 6 7 8斜率 16 16 8 4 2 1 241表 1-3 中第二行的 值是根据 时计算得到的,第三行的 值是
16、13x7.6Ax折线分段时的值。可见,13 折线各段落的分界点与 曲线十分逼近,同87.6A时 按 2 的幂次分割有利于数字化 1。x9二 程序设计2.1 程序流程图 在 MATLAB 平台下,对录入的语音信号现进行 PCM 编码,然后对已经编码了的语音信号进行 PCM 译码,其整个过程的程序流程图如下图 2-1 所示:图 2-1 主函数流程图2.1.1 PCM 编码函数设计流程图在 MATLAB 平台下,对录入的语音信号现进行 PCM 编码,其中 PCM 的实现主要包括三个步骤完成:抽样、量化、编码。具体编码函数设计的流程图如下图 2-2 所示:开始语音信源PCM 编码PCM 解码结束量化1
17、0输入信号判断符号归一化和量化段落判断段内判断输出开始结束图 2-2 PCM 编码函数流程图2.1.2 PCM 译码函数设计流程图输入码组提取符号判断段落位置判断段内位置判断符号位输出开始结束图 2-3 PCM 译码函数流程图112.2 详细程序代码2.2.1 主程序close all;clear all;y=wavred(cang.wav)figure(1)plot(y)title(原始语音信号波形图)N=1001;M=wavread(cang.wav);S=M(2000:3000); %语音信源Figure(2)plot(S,r); hold on;%画出编码前信号xlabel(时间) %
18、 x 坐标名ylabel(幅值) % y 坐标名grid on %添加网格axis square %将图形设置为正方形t1=pcm1(S); %调用编码函数figure(3)plot(t1); % 画出译码后信号title(PCM 编码前信号); %标题xlabel(时间) % x 坐标名ylabel(幅值) % y 坐标名grid on %添加网格axis square %将图形设置为正方形 t2=tqm(t1); %将 N 行 8 列矩阵转换为 1 行 8*N 列的矩阵的函数t3=tqn(t2); %将 8*N 行 1 列的矩阵转换为 N 行 8 列矩阵的函数t4=pcm2(t3); %调
19、用译码函数figure(4)plot(t4); % 画出译码后信号title(PCM 译码后信号); %标题xlabel(时间) % x 坐标名ylabel(幅值) % y 坐标名12grid on %添加网格axis square %将图形设置为正方形 2.2.2 A 律十三折线 PCM 编码函数function Y=pcm1(S)z=sign(S); %判断 S 的正负Max=max(abs(S); %求 S 的最大值 S=abs(S/Max); %归一化Q=2048*S; %量化Y=zeros(length(S),8); %存储矩阵(全零)%段落码判断%for m=1:length(S)
20、if Q(m)128 elseif z(m)8a=a+1;b=1;endt2(a,b)=t1(m);b=b+1;m=m+1;end15三 仿真结果及分析3.1 原始语音信号波形图在 MATLAB 下,调用函数 wavrecord(6*fs,fs,int16)录制一段话音信号,其时间为 6 秒,同时完成对语音信号的采样,采样频率是 8000Hz。然后对原始 语音信号进行分析,画出它的时域波形图如下图 3-1 所示,对其进行时域分析,分析语音信号的特性。图 3-1 原始语音信号波形图由原始语音信号的时域波形图 3-1 可知,语音信号是模拟信号,其在时间上和幅度上都连续的信号。163.2 编码前的信
21、号图运行程序后,语音信号经抽样、量化后的信号图如下图 3-2 所示:图 3-2 PCM 编码前的信号图原始语音信号是模拟信号,在 PCM 编码前将其数字化的过程中,要先经过抽样和量化两步。模拟信号被抽样后,成为抽样信号,它在时间上是离散的,但是其取值仍然是连续的。173.3PCM 编码后信号图运行程序后,语音信号经 PCM 编码后的波形图如下图 3-3 所示:图 3-3PCM 编码后信号图由于,次设计 PCM 编码的方式采用的是 A 压缩律,将抽样、量化后的信号变换成二进制码元。语音信号为交流信号,即输入电压有正负极性,用以为二进制码元来表示极性。采用 A 律 13 折线法,将量化区间划分成非
22、均匀的 8 段,用 3 位二进制码元表示抽样值所在段。又将每段均匀分为 16 小段,用 4 位二进制码元表示。经 PCM 编码后,每一抽样值被用 8 位二进制码元表示。183.4PCM 译码后信号图运行程序后,语音信号经 PCM 译码后的信号图如下图 3-4 所示:图 3-4PCM 译码后信号图译码是编码的逆过程,语音信号经 PCM 译码后的波形与编码前的信号波形相比较,可以无失真将原始语音信号恢复出来。19总 结通过这次通信系统仿真训练,我收获不少,对通信原理更加了解,尤其是对语音信号进行 PCM 编译码有了更深刻了解。一开始的预期工作就是查阅资料,通过查阅课本和在网上来查找一些相关资料。在
23、查阅资料的过程中,慢慢理清楚了其基本构架,并逐渐确定了设计和编程思路。首先,运用 Matlab 工具调用函数 wavrecord 录制了一段语音信号,时间为 12 秒,并对录下的语音信号进行时域分析。然后,对原始语音信号进行数字化,其数字化的过程由抽样、量化、编码三步组成。编码是在 Matlab 下对语音信号进行 PCM 编码,并画出了编码后的波形。最后,将已经经过 PCM 编码后的语音信号进行编码的逆过程,即译码。通过比较语音信号编码前的波形和译码后的波形,其差别基本可以忽略。本课程设计是基于 PCM 的语音信号编码和译码性能分析,做了实现语音信号的编译码的详细的介绍,并实现了语音信号的 P
24、CM 编码和译码的功能。经过测试运行,圆满完成了对实际的语音信号进行 PCM 的编译码,这与课题的要求十分相符。20参考文献1 樊昌信,曹丽娜.通信原理M.北京:国防工业出版社,2011.265:2822 别志红,别红霞.信息与通信系统仿真M.北京:北京邮电大学出版社,2010.120:1563 赵守彬,李鸿刚. 利用 Matlab 实现 PCM 编码的 A 律 13 折线法量化J. 科技信息,2010.98:1324 刘全金. 一种 A 律 PCM 编码的简化方法J. 安庆师范学院学报(自然科学版), 2007 年 11 月第 13 卷第 4 期.212:2505 曹志刚,钱亚生现代通信原理M北京:清华大学出版社,1992.104:16621致 谢通过本次通信系统仿真训练课程设计,我们真的学习到了很多东西。不仅仅是 PCM 对语音信号编译码方面的理论知识,还有许多实际中的技能,如如何找一些有用的相关材料,如何删选有价值的部分等等。当然,对于理论知识如此欠缺的我们来说,初次接触综合性如此强的课程设计会遇到许许多多问题,这时候就少不了老师的细心指导和认真讲解。一直以来老师都是我们的指路人,孜孜不倦的发光发热,在这里我想首先向我们敬爱的老师道声谢,老师辛苦了!还要谢谢帮助我的同学们,愿我们一起进步,一起更努力!