%% 原始音频信号
clear,clc
[x,fs] = audioread("dds.m4a"); % fs是48000Hz
T = 1/fs; % 采样周期
x = x(:,1); % 将双声道信号变为单声道
n = length(x);
t = (0:1:n-1)*(1/fs);
f1 = 0:fs/n:fs/n*(n/2);
f2 = ((n+1)/2*fs/n:fs/n:fs/n*(n-1))-fs;
f = [f1,f2];
figure(1)
subplot(211)
plot(t,x)
title('原始信号时域波形');
xlabel("时间/s")
ylabel("幅度/v")
subplot(212)
plot(f,abs(fft(x)))
title('原始信号幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
% 数字带通滤波器处理
Hd = szdtlbq;
y = filter(Hd,x); % 直接使用设计好的滤波器进行滤波,filter函数是滤波函数
figure(2)
subplot(211)
plot(t,y)
title('原始信号滤波后时域波形');
xlabel("时间/s")
ylabel("幅度/v")
subplot(212)
plot(f,abs(fft(y)))
title('原始信号滤波后幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
sound(x,fs) % 原始信号
pause(4)
sound(y,fs) % 原始信号滤波
% 选择wb所对应频率为7000Hz (wb>2*pi*3000)
fb = 7000;
% 语音信号加密
njia = 0:n-1;
yy1 = cos(2*pi*fb*njia*T); % 调制信号频率为fb Hz
y1 = yy1.*y';
figure(3)
subplot(221)
plot(f,abs(fft(y1)))
title('调制信号幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
Hd1 = gtlbq;
y2 = filter(Hd1,y1);
subplot(222)
plot(f,abs(fft(y2)))
title('调制信号高通滤波后的幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
yy2 = cos(2*pi*(fb+3000)*njia*T); % 调制信号频率为(fb+3000)Hz
y3 = yy2.*y2;
subplot(223)
plot(f,abs(fft(y3)))
title('二次调制信号的幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
Hd2 = ditlbq;
y4 = filter(Hd2,y3);
subplot(224)
plot(f,abs(fft(y4)))
title('二次调制信号低通滤波后的幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
figure(4)
subplot(221)
plot(t,y)
title('原始信号滤波后时域波形');
xlabel("时间/s")
ylabel("幅度/v")
subplot(222)
plot(f,abs(fft(y)))
title('原始信号滤波后幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
subplot(223)
plot(t,y4)
title('加密信号时域波形');
xlabel("时间/s")
ylabel("幅度/v")
subplot(224)
plot(f,abs(fft(y4)))
title('加密信号幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
pause(4)
sound(y4,fs) % 语音加密
% 语音信号解密
Hd3 = ditlbqj;
Hd4 = ditlbqj1;
yj1 = y4.*yy2;
yj2 = filter(Hd3,yj1);
yj3 = yj2.*yy1;
yj4 = filter(Hd4,yj3);
figure(5)
subplot(221)
plot(t,y)
title('原始信号滤波后时域波形');
xlabel("时间/s")
ylabel("幅度/v")
subplot(222)
plot(f,abs(fft(y)))
title('原始信号滤波后幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
subplot(223)
plot(t,yj4)
title('解密信号时域波形');
xlabel("时间/s")
ylabel("幅度/v")
subplot(224)
plot(f,abs(fft(yj4)))
title('解密信号幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
% 再通过一次倒频器
ydj1 = y4.*yy1;
ydj1 = filter(Hd1,ydj1);
ydj2 = ydj1.*yy2;
ydj2 = filter(Hd2,ydj2);
pause(4)
sound(25*ydj2,fs) % 语音解密
% 不知道Wb值的语音信号解密
Hd5 = ditlbqj2;
njie = 0:n-1;
yy = cos(2*pi*3000*njie*T); % 调制信号频率为3000Hz
yjie = yy.*y4;
yjie = filter(Hd5,yjie);
figure(6)
subplot(221)
plot(t,yj4)
title('解密信号时域波形');
xlabel("时间/s")
ylabel("幅度/v")
subplot(222)
plot(f,abs(fft(yj4)))
title('解密信号幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
subplot(223)
plot(t,yjie)
title('一次解密信号时域波形');
xlabel("时间/s")
ylabel("幅度/v")
subplot(224)
plot(f,abs(fft(yjie)))
title('一次解密信号幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
pause(4)
sound(25*yjie,fs) % 语音解密
%% 分割加密
Hd5 = ditlbqj2;
[x,fs] = audioread("dds.m4a"); % fs是48000Hz
T = 1/fs; % 采样周期
x = x(:,1); % 将双声道信号变为单声道
Hd = szdtlbq;
y = filter(Hd,x); % 直接使用设计好的滤波器进行滤波,filter函数是滤波函数
% 第一帧数据
y1 = y(1:0.2/(1/fs));
n1 = length(y1);
t1 = [0:1/fs:(n1-1)*(1/fs)]; % t=0-0.2s
% 第二帧数据
y2 = y(0.2/(1/fs)+1:0.4/(1/fs));
n2 = length(y2);
t2 = [0.2:1/fs:0.2+(n2-1)*(1/fs)]; % t=0.2-0.4s
% 第三帧数据
y3 = y(0.4/(1/fs)+1:0.6/(1/fs));
n3 = length(y3);
t3 = [0.4:1/fs:0.4+(n3-1)*(1/fs)]; % t=0.4-0.6s
% 第四帧数据
y4 = y(0.6/(1/fs)+1:0.8/(1/fs));
n4 = length(y4);
t4 = [0.6:1/fs:0.6+(n4-1)*(1/fs)]; % t=0.6-0.8s
% 第五帧数据
y5 = y(0.8/(1/fs)+1:1/(1/fs));
n5 = length(y5);
t5 = [0.8:1/fs:0.8+(n5-1)*(1/fs)]; % t=0.8-1.0s
% 第六帧数据
y6 = y(1/(1/fs)+1:1.2/(1/fs));
n6 = length(y6);
t6 = [1:1/fs:1+(n6-1)*(1/fs)]; % t=1.0-1.2s
% 第七帧数据
y7 = y(1.2/(1/fs)+1:1.4/(1/fs));
n7 = length(y7);
t7 = [1.2:1/fs:1.2+(n7-1)*(1/fs)]; % t=1.2-1.4s
% 第八帧数据
y8 = y(1.4/(1/fs)+1:1.6/(1/fs));
n8 = length(y8);
t8 = [1.4:1/fs:1.4+(n8-1)*(1/fs)]; % t=1.4-1.6s
% 第九帧数据
y9 = y(1.6/(1/fs)+1:1.8/(1/fs));
n9 = length(y9);
t9 = [1.6:1/fs:1.6+(n9-1)*(1/fs)]; % t=1.6-1.8s
% 第十帧数据
y10 = y(1.8/(1/fs)+1:2/(1/fs));
n10 = length(y10);
t10 = [1.8:1/fs:1.8+(n10-1)*(1/fs)]; % t=1.8-2.0s
y = [y1;y2;y3;y4;y5;y6;y7;y8;y9;y10];
% 秘钥选择5000Hz,3000Hz,7000Hz,9000Hz,11000Hz
f1 = 5000; f2 = 3000; f3 = 9000; f4 = 11000; f5 = 7000;
n = 0:9600-1;
x1 = cos(2*pi*f1*n*T);
x2 = cos(2*pi*f2*n*T);
x3 = cos(2*pi*f3*n*T);
x4 = cos(2*pi*f4*n*T);
x5 = cos(2*pi*f5*n*T);
y11 = y1.*x1'; y12 = y2.*x2'; y13 = y3.*x3'; y14 = y4.*x4'; y15 = y5.*x5';
y21 = y6.*x1'; y22 = y7.*x2'; y23 = y8.*x3'; y24 = y9.*x4'; y25 = y10.*x5';
yjia = [y11;y12;y13;y14;y15;y21;y22;y23;y24;y25];
n = 96000;
f1 = 0:fs/n:fs/n*(n/2);
f2 = ((n+1)/2*fs/n:fs/n:fs/n*(n-1))-fs;
f = [f1,f2];
figure(1)
plot(f,abs(fft(yjia)))
title('分割加密信号幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
% 解密
y1 = y11.*x1'; y2 = y12.*x2'; y3 = y13.*x3'; y4 = y14.*x4'; y5 = y15.*x5';
y6 = y21.*x1'; y7 = y22.*x2'; y8 = y23.*x3'; y9 = y24.*x4'; y10 = y25.*x5';
yy1 = [y1;y2;y3;y4;y5;y6;y7;y8;y9;y10];
yy1 = filter(Hd5,yy1);
figure(2)
subplot(211)
plot(f,abs(fft(yy1)))
title('分割解密后的幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
% 错误解密
y1 = y11.*x5'; y2 = y12.*x4'; y3 = y13.*x3'; y4 = y14.*x2'; y5 = y15.*x1';
y6 = y21.*x4'; y7 = y22.*x3'; y8 = y23.*x5'; y9 = y24.*x2'; y10 = y25.*x1';
yy2 = [y1;y2;y3;y4;y5;y6;y7;y8;y9;y10];
yy2 = filter(Hd5,yy2);
subplot(212)
plot(f,abs(fft(yy2)))
title('错误解密后的幅度频谱');
xlabel("频率/Hz")
ylabel("幅度/v")
sound(y,fs); % 原始信号
pause(4)
sound(yjia,fs) % 分割加密
pause(4)
sound(25*yy1,fs) % 正确解密
pause(4)
sound(25*yy2,fs) % 错误解密
评论0