在小波域中实现的动态嵌入音频隐藏算法*

2018-11-28 02:18:22陆诗依
传感器与微系统 2018年12期
关键词:音频秘密语音

陆诗依, 高 勇

(四川大学 电子信息学院,四川 成都 610065)

0 引 言

隐蔽信息嵌入到数字音频信号中的算法主要分为两种:时域嵌入和变换域嵌入。时域是将隐蔽信息嵌入到音频采样信号中。变换域嵌入是先将采样的音频信号在变换域处理,然后将隐蔽信息嵌入到处理后的音频信号中。在变换域算法中,文献[1]给出了离散傅里叶变换(discrete Fourier transform,DFT)的信息隐藏算法,主要用于版权保护。文献[2]提出了一种结合奇异值分解(singular value decomposition,SVD)和离散小波变换(discrete wavelet transform,DWT)的隐藏算法,主要是在小波包系数中修改特征矩阵的值。文献[3]给出了扩频信息隐藏算法,主要对扩频后的性能进行一些描述。文献[4]提出了离散傅里叶变换和离散小波变换相结合的隐藏算法。文献[5~10]提出了提升小波变换(lifting wavelet transform,LWT)-SVD算法,这些文章算法的共同点都是把秘密信息转换为二进制比特,通过改变奇异矩阵的某些值进行嵌入。以往的LWT-SVD算法,都存在隐藏容量不够大、嵌入点固定等问题。其中隐藏容量不够大一直是语音隐藏算法中较难解决的问题,本文的算法可以进一步地提高隐藏容量,并且能灵活决定嵌入秘密语音的位置。

首先把隐藏信息进行Logistic一维变换,再将输出的数据流经过里所(Reed-Solomon,RS)编码,得到两层加密的秘密语音。同时载体语音经过提升小波变换,得到两个系数,即近似系数和细节系数。本文在近似系数中藏入秘密语音,在细节系数中藏入嵌入点的位置,经过SVD的变换来更新近似系数,用更新后的近似系数和细节系数形成含密语音。

通过实验测试,本文算法显著地提升了语音的透明度,隐藏容量和抗干扰能力,可以实现嵌入语音位置的动态化。

1 音频隐写算法

1.1 整数小波提升变换

在文献[10]中,Islam M提出了一种不依赖于傅里叶变换的新的小波构造的方法,即提升小波变换法。提升小波变换可以实现系数的整数化,使其在运算中减小了计算冗余度。提升小波变换即Harr,其具有如下特性:1)任一函数均可由其位移函数组成;2)任意函数都可以由常函数,以及其位移函数组成;3)具有正交性等。

1.2 Logistics映射

Logistic变换,其序列映射之后的信号具有混沌特性,很难预测。表达式为

Bk+1=μBk(1-Bk),-1≤Bk≤1,0<μ≤4

(1)

式中μ为控制参数,Bk为第k个语音数据。根据不断的累计迭代,最终序列的值与初始值B0以及控制参数μ有关。通常,可以用Lyapunov指数来判别一个系统是否具有混沌特性,当系统的Lyapunov指数为正时,系统才呈现出混沌状态。文献[8]中指出,只有当控制参数μ∈[3.75,4]时,Logistic序列才呈现出混沌状态。本文置乱采用的Logistic序列初始值为B0为0.61,μ为3.90。

1.3 RS编码

一种特殊的BCH码,且其码元和生成多项式g(x)都在伽罗华域GF(qm)(qm≠2)上。其能够纠正信号在信道中传输时引入的随机错误与突发错误。RS(n,k)编码的一些基本性质如下:

n=2m-1表示码字的长度,r=n-k=2t为监督码元,其能够纠正t个错误。

RS编码生成多项式的表达式为g(x)=(x-α)(x-α2)…(x-α2t),其中α为多项式g(x)的根,生成多项式的定义如下:在码元RS(n,k)中,存在唯一的n-k次多项式g(x),使得每一个码字多项式c(x)都是g(x)的倍式。

RS码的校验多项式为h(x)=(xn-1)/g(x),其阶数为k,满足

g0h1+g1hi-1+…+gn-khi-(n-k)=0,i=1,2,…,n-1

(2)

生成矩阵G=[Ikpz],其中Ik为k×k阶的单位方阵,表示码字多项式c(x)中的第n-1~n-k次的系数,这些系数是信息位,其余位置是监督位。具体有

Pz=[xn-1(modg(x))xn-2(modg(x))…

xn-k(modg(x))]T

(3)

(4)

式中 mod为模二运算。

RS码的校验矩阵H为

(5)

RS的编码主要解决一个除法问题,以生成多项式为模,而RS的解码比编码要更加复杂,其主要是从接收多项式r(x)中找出错误图样e(x),其中错误图样可以表示为

(6)

式中Yi∈GF(2m)为错误值,xi=αli为错误位置。RS解码分为时域解码和频域解码两种方法,由于频域解码实现开销大,一般采用时域解码方法,解码步骤如下:

1)根据接收码字计算伴随式,计算第i个伴随式为

=r0(αi)0+r1(αi)1+r2(αi)2+…+rn-1(αi)n-1

(7)

(8)

将式(8)写成矩阵形式,得

(9)

2)采用BM算法[11]计算错误位置多项式。

BM算法就是用伴随式计算错误位置多项式的一种迭代算法,错误位置多项式为

(10)

式中σi为错误位置多项式的系数,t为实际发生错误的符号的总数。

将式(10)展开并变形,写成矩阵的形式为

(11)

根据式(11),利用BM迭代算法可求出错误位置σi。

3)求解错误位置多项式的根,错误位置为多项式的根的导数;亦即检验r(x)=rn-1xn-1+rn-2xn-2+…+r1x+r0中有几处错误,钱氏搜索法[8]就是依次对每一个rn-i(i=1,2,…,n)检验,从而求出σ(x)=0的根。

4)计算错误符号的值,表达式为

(12)

5)译码输出等于接收码字减去错误图样。

本文采用RS(15,7)编码。RS编码的输入为经过置乱之后的秘密信息w2(n),输出为s(n)。

1.4 秘密语音的嵌入

1)将载体语音C先进行一维小波变换,得两个系数。

2)秘密语音S(二进制比特流)进行Logistic一维变换,再经过RS编码,得到加密的秘密语音。

3)在小波变换的低频系数中嵌入秘密信息,高频系数中嵌入秘密语音的位置,C的长度大于S。

嵌入方式如下:

先将C进行小波变换,按照式(13)~式(15)的公式隐藏信息

CL=UPVT

(13)

D=CL+KS

(14)

(15)

式中CL为C经过小波变换的低频系数(近似系数),经过SVD变换得到右特征矩阵V、奇异值矩阵P、左特征矩阵U,式(14)中0

4)将式(14)中的秘密语音的嵌入点q(嵌入系数CL中的第q个点)转换为二进制比特流{ai}(i=1,…,n),取载体语音高频系数CH前面n(n为偶数)个数值嵌入,并将其按照降序排列,每隔n个数值嵌入一个信息位,具体嵌入方式为

(16)

式中CHt为原始的第t(t=q+n)个高频系数,CH′为更新之后的第i个高频系数值,K为语音嵌入强度,藏好信息位将CH的位置还原。

经过反小波变换,把{CL′,CH′ }重新组合为新的含密语音C′。

1.5 秘密语音提取

1)传递的密匙为{U1,V1,P,K},得到含密语音C′,将含密语音进行小波变换,分别取出来CL′和CH′。

2)取CH′中的前n项值,将其按照降序排列,按照式(17)取秘密语音位置隐藏点

(17)

(18)

3)按照如下公式进行SVD构造和分解

CL′=UP1V

(19)

U1P1V1=D

(20)

UPV=CL

(21)

式中 先将CL′进行SVD变换,将奇异值矩阵P1、密匙中的左特征矩阵U1、右特征矩阵V1进行SVD反变换,构成式(20)中的融合语音D,再经一次SVD反变换构成式(21)中的CL。

4)提取的秘密语音为

(22)

5)判断门限值

(23)

式中S(i)为S中的第i个值。

6)提取出来的比特流进行RS译码,经过逆Logistic变换,得到秘密语音

2 仿真实验与结果分析

2.1 算法实验结果

实验均采用8 kHz采样,16 bits量化的语音,取一段4.2 s 载体语音C,取1.54 s秘密语音S,C的长度大于S,分解出来的细节系数CL的长度要大于S的长度,每帧嵌入点随意,在CL的一部分中隐藏信息,灵活的嵌入点让信息隐藏更加安全。实验结果如图1所示。

图1 实验结果

1)在客观上,用信噪比(SNR)来衡量嵌入秘密语音后载体的失真,定义为

(24)

式中C(m)为原始载体语音,C′(m)为含有秘密语音的载体语音,h为秘密语音的长度。

2)用归一化相关系数(NC)来衡量恢复出的秘密语音的失真,定义为

(25)

式中s(m)为原始的秘密语音,s′(m)为恢复出的秘密语音。SNR与NC的值越大,说明算法的透明性越好。由该算法计算出的载体信息的SNR为36.96 dB,密语音的NC值为0.996 8。这些数据从客观上说明该算法的透明性好,而且恢复出的秘密语音几乎与原始的秘密语音失真很小,语音的舒适度较好。

2.2 RS编码对比实验

本文采用RS对秘密语音进行编码,对比了未进行RS编码的算法,经过取MIMIT语音库中的300条语音的测试,得出信噪比与误码率的关系如图2。

图2 提取之后的秘密语音

可以看出,未加RS编码的误码率明显高于有RS编码的情况,并且信噪比在20 dB以上时,误码率很少,在一定地程度上可以抵抗噪声,在实验中还发现,只要误码率小于或者等于4 %,恢复出的秘密语音虽然夹杂着噪声,但有一定地可懂度,人耳能够分辨出语音的内容

2.3 算法性能的对比实验

取MIMIT语音库中300条纯净语音进行对比实验,对不同算法的含密语音结果测量其SNR值,进行透明性打分:采用MOS[12]评价标准进行音质主观性打分;测量隐藏量(秘密语音/载体语音长度)。结果如表1~表4。

表1 鲁棒性分析(误码率) %

表2 不同载体音乐的SNR值 dB

表3 不同算法的透明程度MOS打分

表4 隐藏量 %

把所选取的300条纯净语音作为载体语音,嵌入秘密信息后,对含密语音进行了各种攻击,攻击实验如下:1)带通滤波。截止频率为800 Hz和5 kHz;2)加高斯白噪声,信噪比为20 dB;3)重采样。将待测音频先下采样的方法到44.1 kHz,再上采样到96 kHz;4)重量化。将音频从16 bit量化到8 bit再量化为16 bit;5)MP3压缩。将音频信号进行比特率为64 kbp的压缩,再解压缩;6)MP4压缩。将音频信号进行比特率为 128 kbps的压缩,再解压缩。对被攻击的含密语音进行水印提取,并统计信息误码率的平均值,得到表1数据,可以看出本文算法有较好的鲁棒性。

在表3中不同算法使用了不同的载体对含秘密语音进行了MOS打分,评分接近5表示语量优质,使用本文算法之后的含密语音,在一定程度的信噪比中,仍然具有可听性,在表4中,进行了隐藏量的对比,对于隐藏一段秘密语音,有时候情况并不允许传输很长的载体,所以隐藏容量一直是算法的一个重点,经过测试,本文算法的隐藏容量有一定程度提高。

3 结束语

本文所采用的隐藏算法结合了LWT和SVD两种变换,考虑到含密语音在传输过程中的抗噪声干扰问题,在秘密语音中加入了RS编码,可以纠正一定的错误码元,降低了传输的误码率,提高了算法的鲁棒性。在传统LWT-SVD算法中,秘密语音的嵌入点不能动态地变化,导致了透明性不高,在本文的算法中,将秘密语音隐藏位置点量化进入细节系数中,可以做到秘密语音的动态嵌入,提高了算法透明性。隐藏容量一直都是隐藏算法中重视的问题,本文的算法使得隐藏容量较以前的算法有明显的提高,本文算法在鲁棒性、透明性、隐藏容量上都有极大的改善。

猜你喜欢
音频秘密语音
魔力语音
基于MATLAB的语音信号处理
电子制作(2019年14期)2019-08-20 05:43:38
基于MQ3与MP3的价廉物美的酒驾语音提醒器
电子制作(2019年9期)2019-05-30 09:42:10
必须了解的音频基础知识 家庭影院入门攻略:音频认证与推荐标准篇
对方正在输入……
小说界(2018年5期)2018-11-26 12:43:42
基于Daubechies(dbN)的飞行器音频特征提取
电子制作(2018年19期)2018-11-14 02:37:08
音频分析仪中低失真音频信号的发生方法
电子制作(2017年9期)2017-04-17 03:00:46
愿望树的秘密(二)
手心里有秘密
Pro Tools音频剪辑及修正
人间(2015年8期)2016-01-09 13:12:42