📄 receiver.m
字号:
%接收端执行程序,接收索引号并在码本语音库中根据索引提取语音数据最终合成语音
load('voicedatacodebook','vcw');
load('transdata','transindex1');
sr=vcw(:,transindex1(1));
for i=2:length(transindex1)
sr=vertcat(sr,vcw(:,transindex1(i)));
end
soundview(sr,8000,'speechreceived1');%播放滤波前语音
%将合成语音进行二次平滑滤波
l=length(sr);
sr1=zeros(l,1);
sr2=zeros(l,1);
sr3=zeros(l,1);
sr1(1)=sr(1);
sr1(l)=sr(l);
for i=2:l-1
vm=[ sr(i-1) sr(i) sr(i+1) ];
sr1(i)=median(vm);
end
for i=2:l-1
vm=[ 0.25*sr1(i-1) 0.5*sr1(i) 0.25*sr1(i+1) ];
sr1(i)=mean(vm);
end
sr2=sr-sr1;
for i=2:l-1
vm=[ sr2(i-1) sr2(i) sr2(i+1) ];
sr2(i)=median(vm);
end
for i=2:l-1
vm=[ 0.25*sr2(i-1) 0.5*sr2(i) 0.25*sr2(i+1) ];
sr2(i)=mean(vm);
end
sr3=sr1+sr2;
soundview(sr3,8000,'speechreceived2');%播放滤波后语音
%计算滤波前后信噪比
load('originalspeechdata','sd');
snr0=10*log10(sum(sd.^2,1)/sum((sd-sr).^2,1));%计算滤波前信噪比
disp(snr0);
snr1=10*log10(sum(sd.^2,1)/sum((sd-sr3).^2,1));%计算滤波后信噪比
disp(snr1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -