资源描述:
《ADPCM语音编码标准MATLAB实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ADPCM语音编码标准MATLAB实现(2012-03-0814:54:12)转载▼标签:g.721adpcm语音编码标准matlab实现杂谈分类:信号处理该方法的理论不再赘述,参考《数字语音处理及MATLAB实现》这本书的源程序,对一段英文歌曲进行编码解码:%主程序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);%自适应你量化器输出fid=fopen('speech1.txt');a=fscanf(fid,
2、'%e');fclose(fid);fid=fopen('spp.txt','wt');%存放解码输出波形fori=1:size(a,1);Slk=a(i);[coe,coe1,coe2,coe3,Dqk]=adpcm(Slk,coe,coe1,coe2,coe3,Dqk);fprintf(fid,'%f',coe2(5));endfclose(fid);fid=fopen('spp.txt','rt');b=fscanf(fid,'%e');subplot(211);plot(a);subplot(212);plot(b);%语音编解码子函数程序a
3、dpcm.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
4、_pre,Srk_pre_pre,Dqk,coe);%自适应预测Dk=Dk_com(Slk,Sek);%采样值与其估值差值计算Yuk_pre=yu_result(Yk_pre,wi_result(abs(Ik_pre)));%快速非锁定标度因子计算ifYuk_pre<1.06Yuk_pre=1.06;elseifYuk_pre>10.00Yuk_pre=10.00;endendYlk_pre=yl_result(Ylk_pre_pre,Yuk_pre);%锁定标度因子计算Trk_pre=Trk_com(a2,Dqk(6),Ylk_pre);%窄带信号瞬变判定Td
5、k_pre=Tdk_com(a2);%单频信号判定[Alk,coe1]=Alk_com(Ik_pre,Yk_pre,coe1,Tdk_pre,Trk_pre);%自适应速度控制与自适应预测ifAlk<0.0Alk=0.0;elseifAlk>1.0Alk=1.0;endend[Yk,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_
6、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;%自适应速度控制与自适应预测子函数function[h,coe1
7、]=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)
8、(Y
9、k_pre<3)
10、(Td