【语音隐写】DCT音频水印嵌入提取【含Matlab源码 3677期】

在这里插入图片描述

⛄一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【语音隐写】基于matlab DCT音频水印嵌入提取【含Matlab源码 3677期】
点击上面蓝色字体,直接付费下载,即可。

获取代码方式2:
付费专栏Matlab语音处理(初级版)

备注:
点击上面蓝色字体付费专栏Matlab语音处理(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab语音处理(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码

⛄二、扩频语音水印简介

1 引 言
数字水印是20世纪90年代发展起来的一项新技术, 它通过在原始的数字信息中, 隐含特定信息 (如身份标志等) , 以确认数字产品的版权, 或验证信息是否属伪造和有害。数字水印一般是加在图像、音频、视频或文本中, 依据使用的目的不同, 水印可分为可见性水印和不可见性水印。随着应用需求的发展, 在特定的应用场合 (如防止通信信号被伪造或识别攻击性信号等) , 需要在通信信号中加入水印信息, 确定所接收的信号是否属于有效信号, 但又不损害原始信号的正常接收和使用。在通信信号中嵌入水印信息的最常见的图像通信和语音通信。本文主要研究的是语音中通信水印信息的嵌入方法。

一般来说, 话音通信的水印应该有如下特性:①不可察觉性, 即加入水印后的语音与原语音信号相比, 对人耳来说应该听不出来, 其处理算法通常是在语音的冗余位置嵌入水印信息, 或利用人耳的掩蔽特性。在扩频通信中, 可利用码字的正交性来达到嵌入水印信息的目的;②鲁棒性, 即未经授权的第三方不能通过一些处理方法, 去除或修改嵌入的水印信息, 或者去除水印信息后, 原语音信号的质量有明显下降;对于常用的处理算法, 如传输、过滤、采样等, 嵌入的水印信息损坏很小, 并在一定的正确概率下可以被检测到;③可靠性, 水印嵌入和检测方法对未授权的第三方而言, 应该是保密且不易破解的, 而合法的使用者, 可通过水印证实其合法性。

语音通信的水印嵌入主要有时域和变换域嵌入两种方式。近年来, 随着扩频技术的发展, 利用扩频方式将水印嵌入到原始信息中, 显示出很大的优越性。同时, 随着抗干扰性、保密性等的要求, 扩频技术已在通信中得到广泛应用[3], 在扩频通信的基础上, 加入扩频水印信息, 不仅容易实现, 而且具有非常优越的性能。

本文提出一种基于扩频通信的水印嵌入模型, 并分析其相关的性能。

2 水印的嵌入模型
扩频通信是将原始信息通过与扩频码 (伪随机码) 进行扩频运算, 使信号被扩频到很宽的频带上, 接收端通过相关运算, 将原始信息还原到原来的带宽, 同时将干扰信号扩展到很宽的频带上, 达到减少干扰信号的功率谱密度, 从而可通过滤波的方法, 提高信噪比的目的。在扩频信号中, 通过采用正交扩频码字, 很容易将水印信号嵌入到原始信号中, 并且具有良好的特性。在扩频信号中嵌入水印信息的框图如图1 所示, 接收端处理如图2所示。
在这里插入图片描述
图1 发端水印嵌入处理框图
在这里插入图片描述
图2 接收及水印提取
在发端的情况, 水印信息和语音信息分别被不同的伪码扩频 (正交扩频码, 且码长一样) , 扩频后的信号通过相加器, 叠加在一起, 再经过调制, 送入信道, 类似于多码扩频通信。在接收端, 接收到的信号经过前端滤波后, 分别以信息扩频码和水印扩频码进行解扩、解调输出。由于信息与水印扩频码的正交性, 水印信息直接叠加于原始信号上, 并占用相同的带宽, 相互之间不影响, 达到了透明性要求;同时除非通过解扩频来提取水印, 再进行抵消水印信号, 而传统的任何方法均不能除去水印信号, 从而达到了可靠性的要求;由于扩频系统的本身特性, 传输过程中的干扰, 接收过程中的各种算法均对水印信号信号的影响较小, 故而达到鲁棒性的要求。

在图中数字语音信息记为m (t) , 信息扩频码记为Cm (t) , 水印信息记为w (t) , 水印扩频码记为Cw (t) , 其中Cm (t) 和Cw (t) 正交, 即:
在这里插入图片描述
式中T为扩频码的周期时间。
发送到信道中的信号为
在这里插入图片描述
其中, m (t) 、w (t) 、Cm (t) , Cw (t) 都取值{-1, +1}, 则其组合m (t) Cm (t) +w (t) Cw (t) 可能的取值为{-2, 0, +2}, 采用相位调制时, 则相位的变化为{0, π/2, π}。

信号在信道中传输时, 要叠加上噪声和干扰, 记为n (t) , 则到达接收端的信号r (t) 可表示为
在这里插入图片描述
其中, a为幅度衰减, φ载波相位。为分析简洁, 在式 (3) 中, 我们没考虑传播中的多径效应、衰落和多谱勒效应的影响。

3 性能分析
在假设接收端的载波和扩频本地码均能精确同步的情况下, 分别对原始信息和水印信息进行解扩和解调, 则有:
在这里插入图片描述
我们考虑解扩频解调后经过低通滤波, 滤除二次谐波及高频分量, 则有:
在这里插入图片描述
式 (5) 中, 第一项为有用信号的输出, 第二项为水印信号对有用信号的干扰, 第三项为噪声的输出。由于信息扩频码字与水印扩频码字的正交性, 由式 (1) 可知, 式 (5) 的第二项为0, 因此, 嵌入的水印对原始信息没有任何影响, 保证了透明性要求。在实际的应用中, 由于码字不正交, 水印信息对原始信息的接收有一定影响, 但只要信息扩频码与水印扩频码之间的互相关系数足够小, 则其影响可忽略。

同理, 水印信号的解扩解调输出为
在这里插入图片描述
式 (6) 的第二项为0, 原始信息对水印信息亦不够成影响。
由上述的基本原理可知, 水印信号和信息信号无论在时域、频域还是空间域都混叠在一起, 不能通过滤波及其它数字信号的处理方法将原始信号和水印信号分开, 除非通过解扩频的方法, 恢复出水印信号, 再将它在混合信号中加以抵消, 才能消除水印信号。但由于水印扩频码对第三方是未知的, 所以要获得扩频码信息是非常难的, 尤其是当扩频码足够长时, 破译扩频码的信息几乎是不可能的。因此, 在这样的系统中, 较好地保证了水印信息的鲁棒性。
扩频系统对干扰的抑制程度取决于扩频增益。当扩频增益足够高时, 就可以很好地抑制干扰。因此, 采用扩频的方法, 可以很明显地提高水印信号的可靠性。同时, 由于采用正常的接收处理方式, 只要对有用信号不构成损害, 也就不能对水印信号构成损害。反之, 若损害了水印信号, 必定损害有用信号。
由于扩频码字的正交性, 水印的加入对扩频话音信号的正常接收不产生任何影响, 反之, 话音信号对水印信号亦不能够成任何影响, 非常好地保证了透明性要求。
由上述可知, 在语音扩频通信系统中, 通过采用同体制的扩频方式, 嵌入水印信号, 可取得最佳的水印性能。

⛄三、部分源代码

%加入白噪声的音频水印程序
clear;
clc
[y,fs]=audioread(‘1.wav’); %读入原始音频文件
y=y(:,1);
[c,l]=wavedec(y,3,‘db4’); %三级小波分解
ca3=appcoef(c,l,‘db4’,3);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
x=ca3; %提取低频系数
len=length(y);
x1=x;
s=max(abs(x))0.2;
i=find(abs(x)>s);
lx=length(x(i)); %找出大于最大值0.2倍的序列
figure;
subplot(2,2,1);
plot(ca3); %画出低频系数图
title(‘低频系数图形’);
subplot(2,2,2);
plot(cd3);
title(‘cd3’);
subplot(2,2,3);
plot(cd2);
axis([0 10e4 -0.5 0.5]);
title(‘cd2’);
subplot(2,2,4);
plot(cd1);
title(‘cd1’);
randn(‘seed’,10); %产生随机高斯序列
mark=randn(1,lx);
ss=mark;
rr=ss
0.01; %设置水印嵌入强度
x(i)=x(i).(1+2rr’); %嵌入水印
c1=[x’,cd3’,cd2’,cd1’];
s1=waverec(c1,l,‘db4’);
file1=‘已加水印.wav’;

dd=length(s1); %调整s1的长度,使之可以分成两列
s11=s1; %s1的值不能改变,因为后面还需要用到
if rem(dd,2)==1 %如果s1是奇数,则去掉最后一个数,将新数组定义为s11
s11=s1(1:dd-1);
end
ee=reshape(s11,[],1); %将s1调整成2列的数组
audiowrite(file1,ee,fs);

figure;
subplot(3,1,1);plot(y); %画出原信号图
title(‘原信号的图’);
subplot(3,1,2);plot(ss);
title(‘水印图’);
subplot(3,1,3);plot(s1); %画出嵌入了水印的信号图
title(‘加入了水印的声音信号’)

[kk,fs]=audioread(‘已加水印.wav’);
yc=kk;
dy=length(y);
if rem(dy,2)==1 %如果y为奇数,处理同s1,但是因为后面不需要用到y,所以不必定义一个新数组
y=y(1:dd-1);
end
y1=reshape(y,[],1); %调整数组y的维数,使之可以和yc做运算
fz=sum(y1.y1); %计算嵌入了水印的信号的信噪比,"."用于实现对应元素的乘法
fm=sum((y1-yc).(y1-yc));
SNR=-10
log(fm/fz)
nc(s1,y)

yyy=randn(1,dd); %加入白噪声
b=sqrt(0.01);
yyy=b*yyy;
s1=s1+yyy;
if rem(length(s1),2)==1
s1=s1(1:length(s1)-1);
end
ee=reshape(s1,[],1);
audiowrite(‘加噪水印.wav’,ee,fs);

[kk,fs]= audioread(‘加噪水印.wav’); %读入声音文件
yr=kk(:,1);
[cr,lr]=wavedec(yr,3,‘db4’);
car3=appcoef(cr,lr,‘db4’,3);
cdr3=detcoef(cr,lr,3);
cdr2=detcoef(cr,lr,2);
cdr1=detcoef(cr,lr,1);
xr=car3;
figure;
rrr=((xr(i)./x1(i))-1)/2;
subplot(2,1,1);plot(rr);
title(‘原水印的图’);
subplot(2,1,2);plot(rrr);
title(‘加入白噪声后提取水印的图’);

figure;
rr1=reshape(rrr,1,lx);
syc=rr1-rr;
plot(syc); %画出水印差别图
axis([0 1.8e3 -0.3 0.3]);
title(‘水印之差’);

⛄四、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.
[3]何世彪,杨士中.扩频通信中扩频水印的嵌入方法[J].电讯技术. 2005,(04)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值