语音信号压缩编码的实现--专业仿真课程设计.docx_第1页
语音信号压缩编码的实现--专业仿真课程设计.docx_第2页
语音信号压缩编码的实现--专业仿真课程设计.docx_第3页
语音信号压缩编码的实现--专业仿真课程设计.docx_第4页
语音信号压缩编码的实现--专业仿真课程设计.docx_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

专业仿真课程设计题目: 语音信号压缩编码的实现目录一、相关知识综述21.1理论知识21.2编程工具MATLAB简介31.3主要函数介绍31.3.1主要函数一 数组与矩阵31.3.2主要函数二 读写数据函数4二、设计过程52.1设计方案(G.721 ADPCM标准语音压缩编码设计)52.2方法流程52.3程序清单及注释7主程序7语音编解码子函数程序adpcm.m8自适应速度控制与自适应预测子函数Alk_com.m10采样值与其估计值差值计算奇函数Dk_com.m10自适应逆量化器输出子函数Dqk_com.m11自适应预测中f函数值计算子函数f_com.m12速度控制中FI(k)计算子函数fi_result.m12自适应量化并编码输出子函数Ik_com.m12自适应预测子函数Sek_com.m14重建信号输出子函数Srk_com.m152.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参考文献26一、相关知识综述 随着通信、计算机网络等技术的飞速发展,语音压缩编码技术得到了快速发展和广泛应用,尤其是最近20年,语音压缩编码技术在移动通信、卫星通信、多媒体技术以及IP电话通信中得到普遍应用,起着举足轻重的作用。1. 吴家安. 现代语音编码技术 M. 北京: 科学出版社,2008在实际的语音通信中,有些信道难以扩宽且质量很差;有些信道正被广泛使用,短期内难以更新;有些昂贵的信道,每压缩一个比特都意味着节省开支。因此,语音压缩编码无疑在语音通信及人类信息交流中占有举足轻重的地位。 语音编码就是将模拟语音信号数字化,数字化之后可以作为数字信号传输、存储或处理,可以充分利用数字信号处理的各种技术。2. 姚天任. 数字语音编码 M. 北京: 电子工业出版社,2011为了减小存储空间或降低传输比特率节省带宽,还需要对数字化之后的语音信号进行压缩编码,这就是语音压缩编码技术。 ADPCM压缩算法 ,ADPCM(Adaptive Differential Pulse Code Modulation),是一种针对 16bits( 或8bits或者更高) 声音波形数据的一种有损压缩算法。它将声音流中每次采样的 16bit 数据以 4bit 存储,3. 赵力. 语音信号处理(第三版) M. 北京: 机械工业出版社,2016.5所以压缩比 1:4. 而且压缩/解压缩算法非常简单,所以是一种低空间消耗,高质量高效率声音获得的好途径。保存声音的数据文件后缀名为 .AUD 的大多用ADPCM 压缩。 MATLAB是MathWorks公司开发的一套高性能的数值计算和各种专业工具箱。它基于矩阵运算,4. 陈杰. MATLAB宝典 M. 北京: 电子工业出版社,2007集数值运算、图形显示、图形界面设计等功能和模糊逻辑等30多个专业工具箱于一体,具有极强大的计算功能和极高的编程效率,特别适合科学计算、数值分析、系统仿真和信号处理等方面的工作,对其他学科的学习有重要影响。1.1理论知识最简单的脉冲编码调制(PCM),即线性PCM,对语音作数模变换后再由低通滤波器恢复出现原始的模拟语音波形。5. 韩纪庆,张磊,郑铁然. 语音信号处理(第二版)M. 北京: 清华大学出版社,2013.4在数据率为64Kbps的时候,重构话音质量几乎与原始的话音信号没有什么差别。在PCM的调制过程中,将输入的模拟信号进行取样,量化和编码。这种方法通过用脉冲编码来代表取样后的模拟信号幅度,即用二进制的大小来代表取样后的信号幅度。在接收端再将这些编码的二进制数还原为原来的模拟信号。自适应差分脉冲编码调制(Adaptive Differential Pulse Code Modulation简称为ADPCM)利用预测编码来压缩数据量。6. 廖广锐,刘萍. 基于ADPCM的语音压缩算法研究 J. 计算机与数字工程,2007,35卷,39-42.它结合了ADM(自适应增量调制)的差分信号与PCM(脉冲编码调制)的二进制码的方法,是一种性能比较好的波形编码。它的核心想法是:利用自适应的思想改变量化阶的大小,即使用小的量化阶(step size)来编码小的差值,使用大的量化阶来编码大的差值。使用过去的样本值来估算下一个输入样本的预测值。1.2编程工具MATLAB简介 MATLAB是一个高级的矩阵(阵列)语言,7. 张光化,刘鑫蕊,张秋野. MATLAB/SIMULINK实用教程 M. 北京: 人民邮电出版社,2009它包含控制语句、函数、数据结构、输入输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步。也可以先编好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C+语言基础上的,因此语法特征与C+语言极为相似,而且更加简单,更适符合科技人员对数学表达式的书写各式。1.3主要函数介绍 MATLAB具有强大、丰富的内置函数,以及高度灵活的可编程性,所以特别适合数据处理以及结果的图形化显示。由于其函数种类较多,故此处选取此次设计中应用到的常用函数加以介绍。1.3.1主要函数一 数组与矩阵 数组或矩阵是 MATLAB最基础的内容之一,几乎所有的数据都是用数组的形式进行存储的,这就是MATLAB又被称为矩阵实验室的原因。8. 王琦,赵睿涛,高军锋等. MATLAB基础与应用实例集粹 M. 北京: 人民邮电出版社,20079. 张雪英. 数字语音处理及MATLAB仿真 M. 北京: 电子工业出版社,201610.李正周. MATLAB数字信号处理与应用 M. 北京: 清华大学出版社,2008创建数组是所有MATLAB运算和操作的基础。数组分为一维数组、二维数组和高维数组;针对不同维数的数组,MATLAB提供了多种创建方法,此次设计中使用一维数组较多,所以主要叙述一维数组的定义使用。 (1)直接输入法使用分号,创建一维列数组,如:D1=pi;log(5);7+2;23使用空格,创建一维行数组,如:D2=pi log(5) 7+2 23。(2)步长生成法采用通用格式a:step:b。其中a表示数组中的第一个元素;step表示数组的间隔,即步长;b表示数组的最后一个元素。如果省略step,默认值为1;如果step是正数,必须满足ab。如;D3=1:2:10 D3= 1 3 5 7 9D4=1:10 D4= 1 2 3 4 5 6 7 8 9 10(3)定数线性采样法在设定了总个数的条件下,均匀采样分布生成一维行数组。采用通用格式:x=linspace(a,b,n)其中a、b分别是数组的第一个和最后一个元素,n表示个数。如: D5=linspace(1,2,10) D5=1.0000 3.2500 5.5000 7.7500 10.0000(4)定数对数采样法在设定了总个数的条件下,经过“常用对数”采样生成一维行数组。采用通用格式为: x=logspace(a,b,n)其中a、b分别是数组的第一个和最后一个元素,n表示个数。如:D6=logspace(1,2,10) D6=10.0000 12.9155 16.6810 21.5443 27.8256 35.9381 46.4159 59.9484 77.4264 100.0000。1.3.2主要函数二 读写数据函数MATLAB中常用的读写数据函数有fopen、fscanf、fprintf等,在此次设计过程中,由于要读取语音信号文件并且通过编码解码完成信号的恢复,所以基本的数据读写函数都在主程序中有所体现。(1) fopen函数 fopen()是个将数据按指定格式读入到MATLAB中的函数。其常用的调用形式有两种: fid=fopen(filename) fid = fopen(filename,permission)其中fid是文件的代号,filename是要打开的文件名,permission是打开方式,默认的打开方式是只读模式(r,rt)。第一种情况时选择默认的打开方式,第二种是认为指定的打开方式(读r,写w)。(2) fprintf函数 fprintf函数可以即使将数据按指定格式写入到指定的文本文件中。其基本格式为:fprintf(fid, format, A) 其中fid为文件代号,从fopen()函数中得到,若缺省,则输出到屏幕;format用来指定数据输出时采用的格式:%d 正数,%e实数:科学计数法形式,%f实数:小数形式,%g由系统自动选取上述两种格式之一,%s输出字符串。A是用来存放数据的矩阵。 (3) fscanf函数 fscanf函数可以从文本文件中读取数据,或从一个文本文件中数据列顺序读取并转换成数组。fscanf使用的格式和编码方案与该文件相关联。要设置编码方案,使用fopen。该fscanf函数重新应用在整个文件的格式,并在最终的文件标记位置的文件指针。其表达形式主要有如下三种: A= fscanf(fileID, format) A= fscanf(fileID, format, sizeA) A, count = fscanf()注:中读入一个sizeA元素和最后一个元素的位置后,文件指针读取。sizeA可以是整数,也可以有表格m,n。中成功读取,返回数字的元素。二、设计过程通过小组成员的不懈努力,在查询筛选大量资料的基础上,小组成员一致决定采用自适应差分脉冲编码调制(Adaptive Differential Pulse Code Modulation简称为ADPCM)的方法完成此次设计任务,并且选用目前比较成熟的G.721 ADPCM标准进行设计方案与程序的设计。2.1设计方案(G.721 ADPCM标准语音压缩编码设计)首先ADPCM将脉冲编码调制、差值调制和自适应技术三者结合起来,进一步利用语音信号样点间的相关性,并针对语音信号的非平衡特点,使用了自适应预测和自适应量化,在32kbit/s速率上能够给出网络等级语音质量,从而符合进入公用网的要求。下图(a)是G.721算法的框图,其中虚线部分是解码器框图。由图中可以看出,编码器中嵌入一个解码器,使得编码器的自适应修正完全取决于信号的反馈值。这个反馈值与解码器的输出是一致的,所以后续的差值采样就补偿了量化误差,从而避免了量化误差的积累。 图(a)G.721算法的框图2.2方法流程根据G.721 ADPCM标准算法的原理,可以发现其核心算法流程为如下图(b)所示,首先计算差值信号(采样值S(k)与其估计值Se(k)之间差值),然后输出差值给ADPCM自适应量化器完成语音信号的压缩编码量化,然后通过系适应逆量化器与自适应预测器完成解码与重建信号功能。同时设计时在编码器中嵌套一个解码器,加入量化阶距自适应、速度控制自适应、单频与瞬变音检测来进行后续信号的补偿,减小量化误差并且避免它的积累。 图(b)主要算法流程图根据G.721 ADPCM标准算法的原理设计MATLAB程序流程如下图(c)所示,该流程图中主要描述本组设计程序的思路过程。 图(c)设计思路流程图2.3程序清单及注释本组成员通过反复讨论与实践,根据G.721 ADPCM标准算法的原理设计MATLAB程序,将算法中的每一环节编写成对应的m文件,然后通过d.m主函数程序文件完成赋初值、语音信号读入、调用编码函数、编码解码信号输出等操作流程,具体程序清单及注释如下:主程序clc;clear;coe=1,0,1,0,0,0,0,0,0,0,0;coe1=0,0,0;coe2=0,0,0,0,0,0,0,0,0,0;coe3=0;Dqk=zeros(1,7);%自适应你量化器输出 load 20170629_001.mat %加载音乐文件 save 原始音频波形.txt -ASCII wavedata; fid=fopen(原始音频波形.txt,rt);a=fscanf(fid,%en);fclose(fid);fid=fopen(解压还原波形.txt,wt);%存放压缩后解码输出波形fid2=fopen(压缩后波形.txt,wt);%存放压缩后波形for i=1:size(a,1); Slk=a(i); coe,coe1,coe2,coe3,Dqk=adpcm(Slk,coe,coe1,coe2,coe3,Dqk); fprintf(fid,%fn,coe2(5); fprintf(fid2,%fn,coe2(3);endfclose(fid);fclose(fid2); fid1=fopen(原始音频波形.txt,rt);a=fscanf(fid1,%en); fid2=fopen(解压还原波形.txt,rt);%存放压缩后解码输出波形b=fscanf(fid2,%en);fid3=fopen(压缩后波形.txt,rt);%存放压缩后波形c=fscanf(fid3,%en);subplot(2,2,1),plot(a);title(输入语音波形)subplot(2,2,2),plot(b);title(解码输出波形) subplot(2,2,3),plot(c);title(压缩后波形) c=c*0.1; %由于ASCII码转换 防止失真 sound(c,16000); %播放还原音频 语音编解码子函数程序adpcm.mfunction coe,coe1,coe2,coe3,Dqk=adpcm(Slk,coe,coe1,coe2,coe3,Dqk) %语音编解码函数 Yk_pre = coe2(1); %初值传递Sek_pre = coe2(2);Ik_pre = coe2(3);Ylk_pre_pre = coe2(4);Srk_pre = coe2(5);Srk_pre_pre = coe2(6);a2=coe2(7);Tdk_pre =coe2(8);Trk_pre =coe2(9); Num=coe2(10);coe2(10)=coe2(10)+1;Sek,coe = Sek_com(Srk_pre,Srk_pre_pre,Dqk,coe); %自适应预测 Dk = Dk_com( Slk, Sek ); %采样值与其估值差值计算Yuk_pre = yu_result( Yk_pre, wi_result(abs(Ik_pre) ); %快速非锁定标度因子计算if Yuk_pre10.00 Yuk_pre=10.00; end endYlk_pre = yl_result( Ylk_pre_pre, Yuk_pre ); %锁定标度因子计算 Trk_pre = Trk_com( a2, Dqk(6), Ylk_pre ); %窄带信号瞬变判定 Tdk_pre = Tdk_com( a2 ); %单频信号判定Alk,coe1= Alk_com( Ik_pre, Yk_pre ,coe1,Tdk_pre,Trk_pre); %自适应速度控制与自适应预测 if Alk1.0 Alk=1.0; end endYk,coe3=Yk_com(Ik_pre,Alk,Yk_pre,coe3); %量化阶距自适应因子计算Ik = Ik_com( Dk, Yk ); %自适应量化并编码输出Yk_pre = Yk;Srk_pre_pre = Srk_pre;Sek_pre = Sek;Ylk_pre_pre = Ylk_pre;Ik_pre = Ik; coe2(1)= Yk;coe2(6)= Srk_pre;coe2(2)= Sek;coe2(4)= Ylk_pre;coe2(3)= Ik; Dqk(1) = Dqk(2);Dqk(2) = Dqk(3);Dqk(3) = Dqk(4);Dqk(4) = Dqk(5);Dqk(5) = Dqk(6);Dqk(6) = Dqk(7);Dqk(7) = Dqk_com( Ik_pre,Yk_pre); %自适应逆量化器输出Srk_pre = Srk_com( Dqk(7), Sek_pre); %重建信号输出coe2(5)=Srk_pre;自适应速度控制与自适应预测子函数Alk_com.mfunction h,coe1=Alk_com(Ik_pre,Yk_pre,coe1,Tdk_pre,Trk_pre)Dmsk_p2=coe1(1);Dmlk_p2=coe1(2);Apk_pre2=coe1(3);Dmsk_p1=(1-2(-5)*Dmsk_p2+2(-5)*fi_result(abs(Ik_pre);Dmlk_p1=(1-2(-7)*Dmlk_p2+2(-7)*fi_result(abs(Ik_pre);coe1(1)=Dmsk_p1;coe1(2)=Dmlk_p1;if (abs(Dmsk_p1-Dmlk_p1)=2(-3)*Dmlk_p1)|(Yk_pre=1 Alk=1; else Alk=Apk_pre1; end h=Alk;采样值与其估计值差值计算奇函数Dk_com.mfunction d=Dk_com(Slk,Sek);Dk=Slk-Sek;d=Dk;自适应逆量化器输出子函数Dqk_com.mfunction f=Dqk_com(Ik,Yk)if Ik=0 Dqsk=0; i=Ik;else Dqsk=1; i=-Ik;endswitch i case 7 Dqlnk=3.32; case 6 Dqlnk=2.91; case 5 Dqlnk=2.52; case 4 Dqlnk=2.13; case 3 Dqlnk=1.66; case 2 Dqlnk=1.05; case 1 Dqlnk=0.031; case 0 Dqlnk=-1000;end%归一化输出Dqlk=Dqlnk+Yk;Dqk=2Dqlk;if Dqsk=1 Dqk=-Dqk;endf=Dqk;自适应预测中f函数值计算子函数f_com.mfunction b=f_com(a)if abs(a)0 Dsk=0;else Dsk=1;endif Dk=0 Dk=Dk+0.0001;endDlk=log(abs(Dk)/log(2);Dlnk=Dlk-Yk;x=Dlnk;a=10;if Dlnk-0.98 Ik=0;endif -0.98=Dlnk&Dlnk0.62 Ik=1;endif 0.62=Dlnk&Dlnk1.38 Ik=2;endif 1.38=Dlnk&Dlnk1.91 Ik=3;endif 1.91=Dlnk&Dlnk2.34 Ik=4;endif 2.34=Dlnk&Dlnk2.72 Ik=5;endif 2.72=Dlnk&Dlnk=3.12 Ik=7;endif Dsk=1 Ik=-Ik;endf=Ik;自适应预测子函数Sek_com.mfunction g,f=Sek_com(Srk_pre,Srk_pre_pre,Dqk,coe)a1_pre=coe(1);a2_pre=coe(2);b1_pre=coe(3);b2_pre=coe(4);b3_pre=coe(5);b4_pre=coe(6);b5_pre=coe(7);b6_pre=coe(8);Sezk_pre=coe(9);p_pre2=coe(10);p_pre3=coe(11);%六阶零点预测器系数b1=(1-2(-8)*b1_pre+2(-7)*sgn_com(Dqk(7)*sgn_com(Dqk(6);b2=(1-2(-8)*b2_pre+2(-7)*sgn_com(Dqk(7)*sgn_com(Dqk(5);b3=(1-2(-8)*b3_pre+2(-7)*sgn_com(Dqk(7)*sgn_com(Dqk(4);b4=(1-2(-8)*b4_pre+2(-7)*sgn_com(Dqk(7)*sgn_com(Dqk(3);b5=(1-2(-8)*b5_pre+2(-7)*sgn_com(Dqk(7)*sgn_com(Dqk(2);b6=(1-2(-8)*b6_pre+2(-7)*sgn_com(Dqk(7)*sgn_com(Dqk(1);%二阶极点预测器系数Sezk=b1*Dqk(7)+b2*Dqk(6)+b3*Dqk(5)+b4*Dqk(4)+b5*Dqk(3)+b6*Dqk(2);p_pre1=Dqk(7)+Sezk_pre;if abs(p_pre1)=0.000001 b=1;else b=-1;end重建信号输出子函数Srk_com.mfunction Srk=Srk_com(Dqk,Sek)Srk=Dqk+Sek;单频信号判定子函数Tdk_com.mfunction Tdk=Tdk_com(A2k)if (A2k-0.71785) Tdk=1;else Tdk=0;endTdk=Tdk;窄带信号顺便判定子函数Trk_com.mfunction Trk=Trk_com(A2k,Dqk,Ylk)if (A2kpow(24.2,Ylk) Trk=1;else Trk=0;endTrk=Trk;量化器标度因子自适应wi的选取子函数wi_result.mfunction J=wi_result(in)switch in case 0 wi=-0.75; case 1 wi=1.13; case 2 wi=2.56; case 3 wi=4.00; case 4 wi=7.00; case 5 wi=12.38; case 6 wi=22.19; case 7 wi=70.13;endJ=wi;量化阶矩自适应因子计算子函数Yk_com.mfunction Yk,coe3=Yk_com(Ik_pre,Alk,Yk_pre,coe3);Yl_pre_pre=coe3;Yu_pre=(1-2(-5)*Yk_pre+2(-5)*wi_result(abs(Ik_pre);Yl_pre=yl_result(Yl_pre_pre,Yu_pre);coe3=Yl_pre;Yk=Alk*Yu_pre+(1-Alk)*Yl_pre;锁定标度因子计算子函数yl_result.mfunction yl=yl_result(yl_pre,yu_now)yl=(1-2(-6)*yl_pre+2(-6)*yu_now;yl=yl;快速非锁定标度因子计算子函数yu_result.mfunction yu=yu_result(y_now,wi_now)yu=(1-2(-5)*y_now+2(-5)*wi_now;yu=yu;2.3.1主要子程序1(语音编解码子函数程序adpcm.m) ADPCM是利用语音信号样点间的相关性,并针对语音信号的非平衡特点,使用了自适应预测和自适应量化,在32kbit/s速率上能够给出网络等级语音质量,从而符合进入公用网的要求。在如上方所示的程序列表及注释中,可以明显的发现这部分子函数主要完成对于G.721 ADPCM标准算法中压缩编码部分函数变量的初始化,以及调用自适应预测子函数和采样值与其估计值差值计算奇函数返回值,然后再通过算法原理图中的快速非锁定标度因子计算、锁定标度因子计算、窄带信号瞬变判定、单频信号判定、自适应速度控制与自适应预测等补偿环节的计算与函数调用,来完成对于量化误差的调整与补偿。同时该子函数也完成自适应逆量化输出和解码数据信号重建工作。此子函数在整体设计环节中至关重要。2.3.2主要子程序2(自适应量化并编码输出子函数Ik_com.m) 根据G.721 ADPCM标准算法所给出的自适应量化d(k),并编码输出I(k)之间关系:,其中I(k)中还包含一位符号位,在程序中用变量Dsk表征: 若Dsk=0,则I(k)为正值,反之Dsk=1;则I(k)为负值。表达式中的在程序中用(对数换底公式),所以程序中归一化量化输入值表示为:,对应Dlnk输入量的值并参考表格(d)中归一化输入与输出代码I(k)的关系完成这一部分子函数的设计。同时该函数也会被其他子函数调用参数值所以设定返回值: f = Ik。表(a)归一化量化关系归一化输入log2dk-y(k)输出代码Ik归一化量化输出log2dqk-y(k)3.12,+73.322.72,3.1262.912.34,2.7252.521.91,2.3442.131.38,1.9131.660.62,1.3821.05-0.98,0.6210.031-,-0.980-2.3.3主要子程序3(自适应预测子函数Sek_com.m)根据G.721 ADPCM标准算法,自适应预测的预测器采用6阶零点、2阶极点的模型。此时预测信号可表示为:(i=1起始)其中: (j=1起始),零点、极点预测器系数分别为:和。其中零点系数的调整方式为: 而极点系数的调整系数为:公式中: 当时, 当时,2.3.4 主要子程序4 (量化器标度因子自适应wi的选取子函数wi_result.m) 根据G.721 ADPCM标准算法,称快速非锁定标度因子,它的取值范围在区间,对应的线性域为,。称快速非锁定标度因子的计算式为: 上述公式中I(k)的取值如下表(e)所示:表(b):I(k)编码值与 取值关系|Ik|76543210I(k)70.1322.1912.387.004.002.561.13-0.75 为了适应语音预测差值信号中的基音引起的能量突变,的高端取值都很大。对于带内数据,信号短时能量基本上是平稳的,阶矩自适应采用如下算法:,其中称为锁定标度因子。2.3.5 主要子程序5(速度控制中FI(k)计算子函数fi_result.m) 根据G.721 ADPCM标准算法,速度控制的实现是通过速度控制因子,它是通过的长时平均幅度值与短时平均幅度值的差求出的。它反映了预测余量信号的变化率。 长时: 短时: 函数对应编码值的取值如下表(f)所示,对应于程序中的switch-case语句中的编写赋值关系。|Ik|76543210FI(k)73111000表(c): 的取值 当余量信号短时能量平稳时,的统计特性随时间变化很小,与相差不大。而当余量信号短时能量起伏较大时,它们出现差值.利用这一特性先计算中间参数: 当或者时: 其他情况: 显然,当幅度变化较大时,而差别小时。条件表明输入信号很小,处于清音段或噪声段,这时也有,以便量化器处于快速自适应状态来等待输入信号的突然变化。量器速度控制因子是通过对限幅得到的,其二者关系如下: 当时,。 当时,。这样量化器从快速自适应向慢速自适应转变有一个延时。对于带内调幅数据,这种延迟效应可以防止自适应速度过早变慢,从而避免脉冲沿产生太大的畸变。2.3实验结果及分析 实验过程:利用Goldwave软件将制作后的WAV音频转为MAT格式,注意录制的音频应该是单声道,采样频率16000的音频文件,且需要先保存为MAT格式文件再读入到MATLAB中,通过程序将MAT格式文件转换为ASCII码存储的TXT文件,对其进行G.721 ADPCM 压缩编码算法后,将原音频波形和压缩后的音频波形及还原的音频波形显示出来,如下图13所示(图中上方两图分别为原始语音信号波形(左图)和解码后复原的信号波形(右图),下方为压缩编码后的波形)。图1:歌曲Fade压缩编码图2:乐器吉他压缩编码图3:录音人声压缩编码 结果分析:对原始语音信号和恢复语音信号进行频谱分析,利用MATLAB相应函数进行编程,得出对应信号的频谱图,观察图形并对数据进行分析得出相应结论,首先对不同类别的语音信号频谱分析绘制频谱图,如下图46所示。-图4:歌曲Fade音频频谱图5:乐器吉他音频频谱图6:录音人声音频频谱 由上述图像可知,此时得到的频域波形图是对称的,并且由于全部显示没有拉开距离,需要经过MATLAB中绘图函数处理后得到有所改观的波形,其改进波形程序如下: y,Fs,bits=wavread(q.wav); sound(y,Fs,bits); figure; plot(y); n=length(y); t=(0:n-1)/Fs; figure; plot(t,y); xlabel(s); title(时域波形); x=fft(y); Y=abs(x); figure; plot(Y); title(中心频率点位移处理后的频谱图形); f=linspace(-Fs/2,Fs/2,n);figure;plot(f,W);xlabel(频率(Hz);title(频域波形);axis(100.2000,0,1600);处理后的图像如下图79所示:图7:歌曲Fade音频频谱图8:录音人声音频频谱图9:乐器吉他音频频谱 经过小组成员对傅立叶变换频谱图的处理,观察频谱图数据并记录不同音频文件频谱图集中的频率范围、能量值最大的频率、能量最大值、能量最小值。记录如表(g)所示,根据压缩前后文件大小计算压缩率结果如表(h)所示。表(d):傅立叶频谱分析表能量集中的频率范围能量最大值频率能量最大值能量最小值歌曲Fade音频804000Hz418Hz乐器吉他音频1

温馨提示

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

最新文档

评论

0/150

提交评论