专业仿真课程设计题目:语音信号压缩编码的实现学院:信息科学与工程学院专业班级:测控技术与仪器1401学号:14040110X学生姓名:李二狗指导教师:宋光军设计时间:2017.6.26-2017.7.141目录一、相关知识综述....................................................................................................................21.1理论知识.........................................................................................................................21.2编程工具MATLAB简介..............................................................................................31.3主要函数介绍.................................................................................................................31.3.1主要函数一数组与矩阵.........................................................................................31.3.2主要函数二读写数据函数.....................................................................................4二、设计过程............................................................................................................................52.1设计方案(G.721ADPCM标准语音压缩编码设计)...............................................52.2方法流程.........................................................................................................................52.3程序清单及注释.............................................................................................................7主程序................................................................................................................................7语音编解码子函数程序adpcm.m....................................................................................8自适应速度控制与自适应预测子函数Alk_com.m.......................................................10采样值与其估计值差值计算奇函数Dk_com.m............................................................10自适应逆量化器输出子函数Dqk_com.m......................................................................11自适应预测中f函数值计算子函数f_com.m................................................................12速度控制中F[I(k)]计算子函数fi_result.m.....................................................................12自适应量化并编码输出子函数Ik_com.m.....................................................................12自适应预测子函数Sek_com.m......................................................................................14重建信号输出子函数Srk_com.m...................................................................................152.3.1主要子程序1(语音编解码子函数程序adpcm.m)...........................................172.3.2主要子程序2(自适应量化并编码输出子函数Ik_com.m).............................172.3.3主要子程序3(自适应预测子函数Sek_com.m)..............................................182.3.4主要子程序4(量化器标度因子自适应wi的选取子函数wi_result.m).........182.3实验结果及分析................................................................................................................20三、团队情况..........................................................................................................................25四、总结..................................................................................................................................26参考文献..................................................................................................................................262一、相关知识综述随着通信、计算机网络等技术的飞速发展,语音压缩编码技术得到了快速发展和广泛应用,尤其是最近20年,语音压缩编码技术在移动通信、卫星通信、多媒体技术以及IP电话通信中得到普遍应用,起着举足轻重的作用。[1]在实际的语音通信中,有些信道难以扩宽且质量很差;有些信道正被广泛使用,短期内难以更新;有些昂贵的信道,每压缩一个比特都意味着节省开支。因此,语音压缩编码无疑在语音通信及人类信息交流中占有举足轻重的地位。语音编码就是将模拟语音信号数字化,数字化之后可以作为数字信号传输、存储或处理,可以充分利用数字信号处理的各种技术。[2]为了减小存储空间或降低传输比特率节省带宽,还需要对数字化之后的语音信号进行压缩编码,这就是语音压缩编码技术。ADPCM压缩算法,ADPCM(AdaptiveDifferentialPulseCodeModulation),是一种针对16bits(或8bits或者更高)声音波形数据的一种有损压缩算法。它将声音流中每次采样的16bit数据以4bit存储,[3]所以压缩比1:4.而且压缩/解压缩算法非常简单,所以是一种低空间消耗,高质量高效率声音获得的好途径。保存声音的数据文件后缀名为.AUD的大多用ADPCM压缩。MATLAB是MathWorks公司开发的一套高性能的数值计算和各种专业工具箱。它基于矩阵运算,[4]集数值运算、图形显示、图形界面设计等功能和模糊逻辑等30多个专业工具箱于一体,具有极强大的计算功能和极高的编程效率,特别适合科学计算、数值分析、系统仿真和信号处理等方面的工作,对其他学科的学习有重要影响。1.1理论知识最简单的脉冲编码调制(PCM),即线性PCM,对语音作数/模变换后再由低通滤波器恢复出现原始的模拟语音波形。[5]在数据率为64Kbps的时候,重构话音质量几乎与原始的话音信号没有什么差别。在PCM的调制过程中,将输入的模拟信号进行取样,量化和编码。这种方法通过用脉冲编码来代表取样后的模拟信号幅度,即用二进制的大小来代表取样后的信号幅度。在接收端再将这些编码的二进制数还原为原来的模拟信号。自适应差分脉冲编码调制(AdaptiveDifferentialPulseCodeModulation简称为ADPCM)利用预测编码来压缩数据量。[6]它结合了ADM(自适应增量调制)的差分信号与PCM(脉冲编码调制)的二进制码的方法,是一种性能比较好的3波形编码。它的核心想法是:①利用自适应的思想改变量化阶的大小,即使用小的量化阶(stepsize)来编码小的差值,使用大的量化阶来编码大的差值。②使用过去的样本值来估算下一个输入样本的预测值。1.2编程工具MATLAB简介MATLAB是一个高级的矩阵(阵列)语言,[7]它包含控制语句、函数、数据结构、输入输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步。也可以先编好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更适符合科技人员对数学表达式的书写各式。1.3主要函数介绍MATLAB具有强大、丰富的内置函数,以及高度灵活的可编程性,所以特别适合数据处理以及结果的图形化显示。由于其函数种类较多,故此处选取此次设计中应用到的常用函数加以介绍。1.3.1主要函数一数组与矩阵数组或矩阵是MATLAB最基础的内容之一,几乎所有的数据都是用数组的形式进行存储的,这就是MATLAB又被称为矩阵实验室的原因。[8]创建数组是所有MATLAB运算和操作的基础。数组分为一维数组、二维数组和高维数组;针对不同维数的数组,MATLAB提供了多种创建方法,此次设计中使用一维数组较多,所以主要叙述一维数组的定义使用。(1)直接输入法①使用分号,创建一维列数组,如:D1=[pi;log(5);7+2;2^3]②使用空格,创建一维行数组,如:D2=[pilog(5)7+22^3]。(2)步长生成法采用通用格式a:step:b。其中a表示数组中的第一个元素;step表示数组的间隔,即步长;b表示数组的最后一个元素。如果省略step,默认值为1;如果step是正数,必须满足ab;如果step是负数,必须满足ab。如;D3=1:2:10D3=13579D4=1:10D4=12345678910(3)定数线性采样法4在设定了总个数的条件下,均匀采样分布生成一维行数组。采用通用格式:x=linspace(a,b,n)其中a、b分别是数组的第一个和最后一个元素,n表示个数。如:D5=linspace(1,2,10)D5=1.00003.25005.50007.750010.000