⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xiaoboyuyinxinxinyingcang.m

📁 matlab 源码,基于小波变换的语音信息隐藏的实现,对原始语音信息和水印信息都经过三层小波分解处理后,将水印信息的低频信号嵌入原始语音信号的部分高频信号部分实现隐藏.源代码不仅给出隐藏过程,并且给出
💻 M
字号:
%读取原始语音及绘制原始语音图
FILE='open-cc.wav';
[y,Fs,bits]=wavread(FILE);
%画图:
figure(1);
subplot(3,1,1);plot(y);
title('原始声音信号');
%对其进行3级小波分解: 
[c,l]=wavedec(y,3,'db4');
%提取3级小波分解的低频(高能量)高频(低能量):
ca3=appcoef(c,l,'db4',3);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
x=ca3;
lx=length(x);
figure(2);
subplot(3,1,2);plot(x);
title('低频系数图形');
%找出低频系数中大于0.2倍最大值的序列
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i))
%初次进行分段后的程序
SIZ=wavread(FILE,'size')
SIZe=32768,SIZr=111875;
k=32768/(64*64)
for n=1:k
[c,l]=wavedec(y,3,'db4');
end
ca3=appcoef(c,l,'db4',3);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
x=ca3;
lx=length(x);
figure(2);
subplot(3,1,2);plot(x);
s=max(abs(x))*0.2;
i=find(abs(x)>s); %插入位置   
lx=length(x(i));
%产生随机高斯信号作为水印信号

mark= [ ];
mm=[  ]; 
mark=sin(mm);
randn('seed',10);
mark=randn(1,lx);
figure(2);
subplot(3,1,1);plot(mark);
title('水印信号');
%调整水印强度
ss=mark;
rr=ss*0.02;
R=30;
j=1:18086;
for i=1:18086;
xi=[];
xi=sum(x(j).^2) ;
end
a=sqrt(xi*10.^(-R)*10)./rr;
%水印嵌入
x(i)=x(i)+sqrt(xi*10.^(-R)*10); 
%小波重构,生成加入了水印信号的声音信号
c1=[x',cd3',cd2',cd1'];
s1=waverec(c1,l,'db4');
figure(1);
subplot(3,1,2);
plot(s1);
title('含水印的声音信号');
whos('s1');
disp('');
%%水印恢复程序
FILE='open-cc.wav';
[y,Fs,bits]=wavread(FILE);
 %用db4小波对读入的声音文件进行3级小波分解
for n=1:k
[c,l]=wavedec(y,3,'db4');
end
%提取3级小波分解的低频系数和高频系数
ca3=appcoef(c,l,'db4',3);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
%读取含有水印的信号
FILE1='sample2.wav';
[y1,Fs1,bits1]=wavread(FILE1);
%用db4小波对读入的含有水印的声音文件进行3级小波分解
[c1,l1]=wavedec(y1,3,'db4');
%用db4小波对读入的含有水印的声音文件进行3级小波分解
[c1,l1]=wavedec(y1,3,'db4');
%提取3级小波分解的低频系数和高频系数

ca31=appcoef(c1,l1,'db4',3);
cd31=detcoef(c1,l1,3);
cd21=detcoef(c1,l1,2);
cd11=detcoef(c1,l1,1);
x=ca3;x1=ca31;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
%提取公式的编程
z(i)=x1(i)-x(i);
a=sqrt(xi*(10.^(-R))*10)./rr;
mark1=z(i)./a; 
mark1=mark1/0.02;
figure(2);
subplot(3,1,3);
plot(mark1);
title('提取出的水印信号');
diff=mark1-mark; 
 %攻击部分:
%压缩攻击:
FILE='sample2.wav';
>> [y7,Fs,bits]=wavread(FILE);
[c1,l1]=wavedec(y7,3,'db4');
%提取3级小波分解的低频系数和高频系数
ca31=appcoef(c1,l1,'db4',3);
cd31=detcoef(c1,l1,3);
cd21=detcoef(c1,l1,2);
cd11=detcoef(c1,l1,1);
x=ca3;x1=ca31;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
z(i)=x1(i)-x(i);
mark1=z(i)./x(i)';
mark1=mark1/0.02;
figure(3);
subplot(3,1,1);
plot(mark1);
title('压缩攻击后的信号');
%产生随机信号作为噪声信号
noise0=randn(size(y));
y3=y1;
y3=y3+noise0*200;
%用db4小波对读入的含有水印的声音文件进行3级小波分解
[c3,l3]=wavedec(y1,3,'db4');
%提取3级小波分解的低频系数和高频系数
ca32=appcoef(c3,l3,'db4',3);
cd32=detcoef(c3,l3,3);
cd22=detcoef(c3,l3,2);
cd12=detcoef(c3,l3,1);
x=ca3;x1=ca32;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
z(i)=x1(i)-x(i);
mark3=z(i)./x(i)';
mark3=mark3/0.02;
figure(4);
subplot(2,1,2);
plot(mark3);
title('噪声信号图形');
%重采样
fs1=Fs*0.5;
wavwrite(y1,fs1,bits,'ss.wav');
[y6,fs2,bits]=wavread('ss.wav');
%用db4小波对读入的含有水印的声音文件进行3级小波分解
[c4,l4]=wavedec(y6',3,'db4');
%提取3级小波分解的低频系数和高频系数
ca33=appcoef(c4,l4,'db4',3);
cd33=detcoef(c4,l4,3);
cd23=detcoef(c4,l4,2);
cd13=detcoef(c4,l4,1);
x=ca3;x1=ca33;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
z(i)=x1(i)-x(i)';
mark4=z(i)./x(i)';
mark4=mark4/0.02;
figure(5);
subplot(2,1,1);
plot(mark4);
%axis([0 8000 -1 1]);
title('下采样图形');
fs1=Fs*2;
wavwrite(y1,fs1,bits,'ss.wav');
[y6,fs2,bits]=wavread('ss.wav');
%用db4小波对读入的含有水印的声音文件进行3级小波分解
[c4,l4]=wavedec(y6',3,'db4');
%提取3级小波分解的低频系数和高频系数
ca33=appcoef(c4,l4,'db4',3);
cd33=detcoef(c4,l4,3);
cd23=detcoef(c4,l4,2);
cd13=detcoef(c4,l4,1);
x=ca3;x1=ca33;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
z(i)=x1(i)-x(i)';
mark4=z(i)./x(i)';
mark4=mark4/0.02;
figure(5);
subplot(2,1,2);
plot(mark4);
%axis([0 8000 -1 1]);
title('上采样图形');
%低通滤波
[b,a]=butter(10, Fs /10000);
y2=y1;
y5=filtfilt(b,a,y2);
file1='sample3.wav';
wavwrite(y5,Fs,bits,file1);
%FILE1='sample3.wav';
%[y5,Fs1,bits1]=wavread(FILE1);
%用db4小波对读入的含有水印的声音文件进行3级小波分解
[c1,l1]=wavedec(y5,3,'db4');
%提取3级小波分解的低频系数和高频系数
ca31=appcoef(c1,l1,'db4',3);
cd31=detcoef(c1,l1,3);
cd21=detcoef(c1,l1,2);
cd11=detcoef(c1,l1,1);
x=ca3;x1=ca31;
lx=length(x);lx1=length(x1);
s=max(abs(x))*0.2;
i=find(abs(x)>s);
lx=length(x(i));
z(i)=x1(i)-x(i);
mark1=z(i)./x(i)';
mark1=mark1/0.02;
figure(4);
subplot(2,1,1);
plot(mark1);
title('低通滤波信号');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -