【Matlab】基于μ律15折线的PCM语音编解码系统(GUI设计、simulink、附完整代码)

【Matlab】PCM语音编解码


一.绪论

1.1 研究背景

随着信息技术的高速发展,现代通信技术,尤其是语音信 处理技术已经在日常生活中得到十分广泛的运用。而在语音信 处理的过程中十分重要的一环便是压缩编码技术,可分为三类:波形编码,参数编码及混合编码等。其中以脉冲编码调制(即PCM,Pluse Code Modulation)为代表的波形编码在语音信 处理的过程中应用最为广泛,是数字通信系统发展的一次飞跃。

1.2 PCM技术的研究现状

脉冲编码调制的概念是1937年由法国工程师AlecReeres最早提出来的。随着集成电路技术的飞速发展,超大规模集成电路的PCM编、解码器出现,使它在光纤通信、数字微波通信、卫星通信、信 处理、军事及民用电子技术领域发挥着越来越重要的作用。

PCM 即脉冲编码调制 (Pulse Code Modulation)。在PCM 过程中,将输入的模拟信 进行采样、量化和编码,用二进制进行编码的数来代表模拟信 的幅度 ;接收端再将这些编码还原为原来的模拟信 。即数字音频的 A/D 转换包括三个过程 :采样,量化,编码。

话音PCM的抽样频率为8kHz,每个量化样值对应一个8位二进制码,故话音数字编码信 的速率为8bits×8kHz=64kbps = 8kb/s。量化噪声随量化级数的增多和级差的缩小而减小。量化级数增多即样值个数增多,就要求更长的二进制编码。因此,量化噪声随二进制编码的位数增多而减小,即随数字编码信 的速率提高而减小。

自然界中的声音非常复杂,波形极其复杂,所以我们常采用的就是脉冲代码调制编码,即PCM编码。在计算机应用中,能够达到最高保真水平的就是PCM编码。需要说明的是,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信 绝对保真,PCM也只能做到最大程度的无限接近。

目前PCM编码广泛应用于通信、计算机、数字仪表、遥控遥测等领域,其应用广度和深度也在不断地扩展和深化。随着全球数字化、信息化的不断推进,脉冲编码调制会有更加良好的发展、应用前景。

1.3 研究内容

本次设计针对PCM的编解码及其特点进行探究,并基于MATLAB对PCM通信系统进行仿真,其研究内容主要有以下几个部分:
①利用Matlab编写PCM编解码相关函数程序,并调用PCM编解码函数,分别以一个正弦波和三种不同的语音信 (锣声、哈利路亚、笑声)作为输入信 ,实现仿真,验证PCM编解码的正确性。
②采用Matlab中的Simulink进行PCM编解码仿真,噪声影响与性能分析。
③采用GUI界面操作完成语音输入,PCM编码,PCM解码,语音还原输出等一系列操作。


二. PCM编解码的基本原理

2.1 PCM语音编码原理

通常我们把从模拟信 抽样、量化,直到变换成为二进制符 的基本过程,称为脉冲编码调制,简称脉码调制。PCM编码的过程,实际上就是将一个语音信 进行“抽样-量化-编码”的一个过程。它是将模拟信 变换成二进制信 的一种常用方法。PCM编码的具体步骤如下:
1)对模拟信 按信 自身的频率特点(如正弦信 依据采样定理以其信 带宽2倍以上的频率提取抽样值,语音信 依据其自身的频率Fs,为精确表示信 ,一般要保留10kHz以下的频谱成分,G.711标准中规定PCM的抽样频率为8kHz)进行抽样
2)对该模拟信 的各个抽样值进行量化,其实质是能够用数字量来表示在时域上离散的各个抽样值。在该过程中,会因为量化精度而产生量化误差,量化精度越高自然量化误差也就越小。而常用的量化方式有均匀量化和非均匀量化两种。
由于在均匀量化时,由量化器信噪比公式(S/N)=M可得量化器的信噪比随着量化电平数M的增加而显著提高,当小信 输入时,量化间隔也会变小,其量化噪声的平均功率也会变小,此时小信 量噪比便难以达到要求;而由于语音信 中小电压出现的概率较大,并且非均匀量化噪声对大小信 的影响大致相同,因此采用非均匀量化来改善语音信 中小信 的量噪比。

在PCM语音编码中,主要是对抽样值先进行压缩再进行均匀量化来实现非均匀量化,并通常采用8位PCM编码来保证PCM编解码系统的通信质量。

在本实验中,我们选择15折线压缩律进行实验。μ律压缩特性由下式表示:

这就是最小量化间隔,后面将此最小量化间隔(1/2048)称为1个量化单位。第8段最长,其横坐标x的动态范围为1/2。将其16等分后,每段长度为1/32。假若采用均匀量化而仍希望对于小电压保持有同样的动态范围1/2048,则需要用11位的码组才行。现在采用非均匀量化,只需要7位就够了。

如下图2-2所示为PCM编码的原理框图,它首先在编码器中由冲激脉冲对模拟信 抽样,得到在抽样时刻上的信 抽样值。这个抽样值仍然是模拟量。在它量化之前,通常用保持电路将其作短暂保存,以便电路有时间对其进行量化。在实际电路中,常把抽样和保持电路作在一起,称为抽样保持电路。图中的量化器把模拟抽样信 变成离散的数字量,然后在编码器中进行二进制编码。这样,每个二进制码组就代表一个量化后的信 抽样值。

常用的编码方法有逐次比较法等等。常用的二进制码有自然二进制码及折叠二进制码等。

图2-3 PCM解码原理框图

在此图中,本地译码器的记忆电路得到输入c7值后,使恒流源产生为下次比较所需要的权值电流Iw。在编码器输出c8值后,对此抽样值的编码已经完成,所以比较器要等待下一个抽样值到达,暂不需要恒流源产生新的权值电流。在接收端的译码器中,仍保留本地译码器部分。

由记忆电路接收发送来的码组。当记忆电路接收到码组的最后一位c8后,使恒流源再产生一个权值电流,它等于最后一个间隔的中间值。由于编码器中的比较器只是比较抽样的绝对值,本地译码器也只是产生正值权值电流,所以在接收端的译码器中,最后一步要根据接收码组的第一位c1值控制输出电流的正负极性。由此接收端可得到PCM的语音解码。


三.软件设计

3.1信 产生与采样

信 产生与采样部分的代码如图3-1所示(正弦波),此处以正弦波为例是为了方便进行PCM编解码正确性的验证。由奈奎斯特采样定理可知该信 的采样频率要大于4000Hz。根据上述原理可知此处选取的信 采样频率为8000Hz,代码和信 采样前后对比如图3-2所示。max函数的作用是用来计算信 采样后各个幅度的极值,为之后PCM编码过程中的量化做准备。

图3-2 正弦波信 采样前后对比图

3.2 PCM编码

PCM编码的程序设计采用调用PCM编码函数的方法来实现。该编码函数分为三个部分:采样信 的量化,段落码判断和段内码判断,并且此处采用的压缩律为美国和日本地区所通用的μ-15折线律,先将其分为255个量化区间并采用8位编码,其中从左至右第一位表示采样信 的正负,第二位至第四位表示采样信 处于15折线律的哪一段上,为段落码;第五位至第八位为段内码,用于表示在该段16个量化区间中的位置,每一段的量化间隔分别为分别1/16,1/8,1/4,1/2,1,2,4,8。这三个部分的函数分别如图图3-4,图3-5及图3-6所示。通过如图3-7所示程序调用,结果如图3-8所示。

图3-5 PCM编码函数中段落码判断部分

图3-7 PCM编码程序调用

图3-9 PCM解码部分程序框图

图3-11 PCM解码程序调用

图3-13 PCM编解码系统示意图

在图3-13中,我们以一个非周期性正弦波chirp为例,先对该波进行量化,然后将量化后的信 通过对其进行编码,译码和解码,并设置其采样8位2进制编码和解码,随后将解码过后的信 通过一个低通滤波器,滤除其中的高频噪声,从而对原来量化过后的信 进行还原。

图3-15 PCM编码模块设置示意图

图3-17 PCM编解码输出示意图

3.5 PCM编解码的GUI实现

此处采用GUI界面操作完成语音输入,PCM编码,PCM解码,语音还原输出,界面如图3-18所示,该系统可以使用弹出式菜单分别进行三种不同种类语音:锣声,哈利路亚和笑声的输入,并通过PCM编解码对其进行还原输出,三种不同种类语音输入与语音还原输出后的对比图如图3-19,图3-20和图3-21所示。

图3-19 锣声语音输入与PCM语音还原输出后的对比图

图3-21 笑声语音输入与PCM语音还原输出后的对比图

四.性能分析

4.1 具体信 分析

此处主要对正弦还原信 进行失真度分析的测试,如图4-1所示。可得到失真度的大小为0.002030(如图4-2所示),说明对应具体信 而言,PCM编解码后的输出信 还原度较高。


声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月21日
下一篇 2021年1月21日

相关推荐