一种基于时域掩蔽效应的语音自适应隐藏算法

2020-05-16 06:33张林科肖明芳
计算机应用与软件 2020年5期
关键词:时域阈值容量

张林科 康 凯 肖明芳 王 苗

1(火箭军工程大学 陕西 西安 710025)2(火箭军装备研究院 北京 100000)

0 引 言

音频信息隐藏是基于人耳听觉掩蔽特性在音频信号中嵌入秘密信息,以实现隐蔽通信功能。语音信号使用广泛,以语音为载体隐藏信息更不易被察觉,在信息安全传输领域具有重要应用价值。语音自适应隐藏考虑信号的局部特征,使得信息嵌入的位置、强度和容量随着局部特征的变化而变化,进一步改善语音信息隐藏性能。文献[1]通过小波包分解和DCT变换估算掩蔽阈值,自适应选取嵌入音频段、嵌入的频率系数和量化步长,与人耳频域掩蔽特性关联好,但掩蔽阈值计算过于复杂,嵌入强度提取误差易导致算法不稳定,隐藏容量有限。文献[2]在DCT变换低频系数计算掩蔽阈值,确定嵌入强度,设置能量补偿点保持信息隐藏前后能量一致,算法稳定、鲁棒性强,但计算复杂,隐藏容量有限。文献[3]在DWT域计算掩蔽阈值,通过以前载密数据计算当前嵌入强度,盲检测嵌入强度准确,鲁棒性强,但同样存在计算复杂、隐藏容量有限等不足。文献[4]在小波变换域依据信噪比最优原则调整嵌入强度,与人耳掩蔽特性关联不好。文献[5]基于DWT-SVD和SNR优化隐藏信息,不可感知性和鲁棒性很好,但运算量太大,隐藏容量太小,在80 bit/s左右,不适用于隐蔽通信。以上算法采用固定分帧或对固定分帧进行优选的方法确定信息隐藏位置,与语音信号的非平稳特性关联较差。

针对以上不足,本文提出一种基于人耳时域掩蔽效应的语音自适应隐藏算法,采用能零比和m序列动态选取和标记适于信息隐藏的语音段;通过QIM方法检测时域掩蔽效应,根据时域掩蔽效应强弱自适应调整小波域嵌入强度和嵌入容量;结合QIM和容错处理消除提取端嵌入强度误差。本文算法不可感知性好,隐藏容量大,算法简单,计算量小,同时具有不差的抗干扰性能,能够实现基于语音载体的隐蔽通信。

1 算法原理

1.1 隐藏数据帧结构设计

语音信号能零比能够检测语音端点,区分有声段和无声段,但对数据平移不敏感,尤其是在信息嵌入和受扰后,提取端难以再次准确定位隐藏信息。本文采用时域能零比检测语音有声段起始帧,插入m序列标识起始帧位置;三层尺度系数能零比检测当前语音段结束帧,在起始帧和结束帧之间逐帧嵌入信息。隐藏数据帧结构如图1所示。

图1 隐藏数据帧结构

由人耳时域掩蔽效应可知,大强度信号会对小强度信号产生较强的前向、后向和同时掩蔽效应。由人耳的听阈特性可知,人耳对2~4 kHz的声音最为敏感,对低频和高频成分都不敏感。大强度和低频率可以通过信号能零比来表征,在能零比大的语音段隐藏信息具有更好的鲁棒性和不可感知性。

由语音信号的激励模型可知,基音范围为60~500 Hz, 由基音激励产生的浊音集中了语音信号的大部分能量;基音范围与8 kHz采样语音信号三层尺度系数所表征的频率范围基本一致,则三层尺度系数能零比恰能反映语音信号的时域能零比变化,且较时域能零比检测具有更好的稳定性。本文采用时域能零比检测语音起始帧,采用尺度系数能零比检测语音结束帧,将隐藏信息嵌入在有声段。

设帧长为L,第i帧信号为yi(n),1≤n≤L,第i帧短时能量为:

(1)

设第i帧短时过零率为ZCR(i),则短时能零比为:

ECR(i)=E(i)/(ZCR(i)+b)

(2)

式中:b是一个较小的常数,防止ZCR(i)为0时发生溢出情况。

提取端采用尺度系数能零比检测当前段结束帧时,能零比靠近阈值的语音帧易因干扰、数据隐藏等因素造成提取端错检,进而导致提取信息错误。为克服上述问题,在发送端对尺度系数能零比做容错处理。

本文采用线性放大缩小尺度系数的方法调整能零比,不改变信号的过零率和频谱结构,且设定多个调整阈值对尺度系数划分区间,不同区间采用不同的调整系数,尽量减小容错处理对原信号的影响。尺度系数能零比容错处理算法数学形式表示如下:

(3)

语音信号小波变换三层系数具有较好的稳定性,在三层尺度系数中嵌入信息具有很好鲁棒性[6],但仿真实验表明,过强的鲁棒性会导致定位不精准。因此本文在三层小波系数中采用QIM的方法嵌入m序列作为起始帧检测标识。设m序列为m(i),则有:

(4)

式中:d(i)、d′(i)为嵌入前后的小波系数;s表示嵌入强度;⎣·」表示向下取整。

1.2 信息隐藏提取

1.2.1 自适应隐藏

由人耳的时域掩蔽效应可知,同时掩蔽效果最好,一般前向掩蔽发生在掩蔽音出现前5~20 ms,后向掩蔽发生在掩蔽音消失后50~200 ms,掩蔽效应具有叠加特性,每个数据点嵌入1比特信息的方法不能很好地利用时域掩蔽效应。本文采用改进的量化索引调制(QIM)方法对三层系数大小进行区分。首先对大于设定阈值的系数,根据系数大小确定不同的嵌入强度,嵌入不等量信息;再用已嵌入信息量的多少表征时域前向和后向叠加掩蔽效应强弱,据此确定小于阈值系数的嵌入信息量。

不等距QIM量化器结构如图2所示。

图2 不等距QIM量化器结构示意图

量化器以某一阈值Y为起点,设基本量化步长为J,嵌入强度为Qn,则第n个量化区间对应的嵌入强度Qn= 2n + 1J,嵌入n+1比特信息;第n个量化区间量化步长为:

Jn=2×Qn+2×J

(5)

式中:n为正整数,不大于nmax。

Y+J1+J2+…+Jn

(6)

设待量化数据为x,根据x绝对值对应量化区间确定嵌入强度Qn,确定嵌入强度的数学表示形式为:

(7)

设由式(7)确定当前帧嵌入信息比特总数为N,再通过判断N值大小确定x绝对值小于Y值样点嵌入强度Q0。数学表示形式为:

(8)

式中:Nmax、Nmin为设定的阈值,取值大小根据基本步长J和实验结果确定,本文取Nmax=100,Nmin=20。

为与前文一致,便于下文表述,将前述嵌入强度Qn(n为正整数)与此处Q0统一采用Qn表示,n取非负整数。

各量化区间内均以基本步长J再量化,以不同量化区间号代表嵌入信息;量化区间嵌入强度Qn不同,嵌入信息多少不同。上述方案数学形式表示为:

(9)

式中:md为嵌入强度Qn对应的m比特待隐藏信息M(i:i+m-1)的十进制表示;x′表示嵌入信息前数值;x″表示嵌入信息后数值;⎣·」表示向下取整。

由上述嵌入算法可知,载体数据嵌入前后最大增量为嵌入强度的1/2,小波域抗干扰能力均为J/2,为防止载体数据在嵌入和受扰后越界导致提取错误,上下边界各设置大小为J的保护区间,由此确定各量化区间量化步长Jn和容错处理容限。

嵌入和受扰后数据会发生变化,靠近量化区间边界的数据易发生越界造成提取错误。因此,数据量化前先进行容错处理,使待量化数据远离量化区间边界,容错处理容限设为Qn/2+J。容错处理算法的数学形式表示如下:

x>0时,

x<0时,

(10)

式中:x表示原始数值;x′表示x容错处理后的值。

1.2.2 重定位

提取端利用小波变换的时频局部特性,在小波域搜索匹配m序列实现精准重定位。DWT变换不是平移不变的,但DWT变换具有时频局部特性。以哈尔(Haar)三层小波变换为例,由经典的Mallat离散小波变换公式可得哈儿小波变化三层尺度系数cj-3(i)和三层小波系数dj-3(i)分别为:

(11)

式中:k=1,2,…,L,i=0,1,…,(L/8-1);L为帧长,为便于计算,本文取L=2N,N为不小于3的整数,通过控制N的大小调整帧长;cj是语音信号采样值。

由式(11)易知, Haar小波变换三层系数只与原信号8个样点有关,当原信号平移8个样点时,三层系数产生1个样点的平移。在三层小波系数中搜索同步码时,可利用这种特殊的平移性,只全部计算前8次逐点平移的小波系数,后续小波系数可依次通过对应的前8次小波系数向左平移1位,再计算最后8个样点对应的小波系数作为最后1位而得到,这样可以极大提高搜索效率。

设待检序列为m′(i),提取端三层小波系数为hd′(i),待检序列盲提取公式如下:

(12)

m序列自相关函数为:

(13)

式中:p为m序列周期。

做自相关检测,如果有:

(14)

则认为检测到同步码。式中:z是一个适当的阈值。z的取值应根据信道质量、同步码嵌入强度确定,过小易发生假同步,过大易发生漏同步。

1.2.3 盲提取

采用QIM的方法嵌入信息,提取端在搜索匹配m序列后,只需知道阈值Y、量化步长J、Nmax、Nmin,就能够通过构造同样的量化器实现盲提取。

三层系数盲提取公式如下:

cmd′(i)=⎣(hcj-3(i)-⎣hcj-3(i)/Qn」×Qn)/J」dmd′(i)=⎣(hdj-3(i)-⎣hdj-3(i)/Qn」×Qn)/J」

(15)

式中:hcj-3(i)、hdj-3(i)分别表示提取端当前帧三层小波变换的尺度系数和小波系数,仍由式(7)无误差恢复hcj-3(i)、hdj-3(i)对应的嵌入强度Qn和嵌入位数n;cmd′(i)、dmd′(i)分别表示从尺度系数和小波系数提取到的量化区间索引号十进制表示值。

先对每帧大于阈值Y的系数提取隐藏信息,根据已提取信息比特数与Nmax、Nmin关系由式(8)确定Q0,再采用式(15)提取小于阈值Y系数隐藏的信息,将cmdec′(i)、dmdec′(i)转换为对应n位二进制序列,顺序组合得到隐藏的二进制信息码流。

2 仿真实验及性能分析

2.1 实验方案

仿真实验流程如图3所示。性能测试载体语音采用采集的3段8 kHz采样率、16位采样精度、时长5 s(40 000点)单声道语音信号(样本一为女声、样本二为男中音、样本三为男低音),隐藏信息用伪随机序列进行模拟,m序列周期p=63,使用MATLAB R2016b进行仿真。

图3 仿真实验流程框图

2.2 运算复杂度分析

文献[1]采用db8小波基进行部分小波包分解,再对小波包分解系数进行DCT变换和Bark域映射,通过扩展函数做卷积计算掩蔽阈值,帧长L为2 048;文献[2]采用DCT变换,映射到Bark域后只计算单个临界频带掩蔽阈值,帧长L为4 160;文献[3]采用db8小波对44.1 kHz采样30秒时长信号进行5层DWT变换,由前128个嵌入后的小波系数和掩蔽阈值计算当前嵌入强度,关联运算量大;文献[6]在DWT域低频系数直接嵌入固定容量隐藏信息,帧长L选取对性能影响不大;本文算法在DWT域利用时域掩蔽效应隐藏信息,测试中选取帧长L为504,对于8 kHz采样信号相当于时长63毫秒,在后向掩蔽效应作用时间范围内。

涉及频域掩蔽阈值计算时,必须保证足够的帧长以满足分辨率要求,因此文献[1-3]帧长L难以缩短,且算法本身涉及DCT、卷积、相关运算等,导致运算量极大。本文算法采用只采用DWT变换,帧长小,只在帧内进行简单比较和选择运算,因而运算量只略大于文献[6],远小于文献[1-3]。

2.3 不可感知性分析

图4 样本一嵌入前后时域图和时域差值图

图5给出文献[12]嵌入前后时域差值图,由于采用固定分帧方法,所有帧都有隐藏信息,导致时域差值始终存在,实测中能够听到类似底噪的声音,而本文算法不是所有数据帧都有数据嵌入,具有更好的不可感知性。

图5 文献[12]嵌入前后时域差值图

图6给出分段信噪比与对应的隐藏量对比图。

图6 分段信噪比与隐藏量对比图

分段信噪比图中,SNR大于100 dB的帧没有隐藏数据,只是限于计算精度而存在有限极大值;信噪比低的段隐藏容量大,时域差值大,但载体语音能零比大、掩蔽效应强,不可感知性仍然较好。

表1给出不同样本、不同幅度在不同J、Y值时的MOS和SNR值。由测试数据可知,选取合适的J、Y值,MOS值始终大于4.5,SNR值不低于25 dB,不随载体语音类别和幅度变化而大幅变化。

表1 不可感知性测试表 分/db

表2给出基于频域掩蔽效应[1-3]和采用固定强度小波域隐藏算法[6]的MOS和SNR参考值,并与本文算法进行对比。结果表明本文算法不可感知性与文献[1-3]相当,优于文献[6],尤其是信噪比不随语音信号大动态范围变动而剧烈改变,MOS值基本保持不变,不可感知性好,性能稳定。

表2 不同隐藏算法MOS和SNR值

2.4 隐藏容量分析

表3给出不同样本、样本不同幅度、不同参数选取时的隐藏容量值。由测试数据可知,参数J、Y值对隐藏容量影响很大,需根据应用环境选取合理值。参数确定后,隐藏容量受语音样本、幅度影响,载体语音能零比大,隐藏容量大;反之,隐藏容量小。语音信号是典型的非平稳随机信号,且不同于连续音频信号,有声段无声段特征明显,固定隐藏容量显然不能适应其特点,自适应隐藏容量具有更高应用价值。由表2-表3测试结果可知,本文算法嵌入容量动态范围大。

表3 隐藏容量测试表 bit/s

表4给出基于频域掩蔽效应[1-3]和不采用自适应小波域隐藏算法[6]隐藏容量参考值,并与本文算法进行对比。文献[1]自适应选取嵌入帧和嵌入强度,隐藏容量受载体信号影响大;文献[2-3]嵌入容量不受载体音频影响;文献[6]是小波域非自适应嵌入,嵌入容量固定;本文算法自适应选取嵌入位置、嵌入强度和嵌入量,嵌入容量随载体信号不同而大范围变化。

表4 不同算法隐藏容量

2.5 抗干扰能力分析

信息隐藏受到的干扰主要为采样精度和计算精度引入的噪声和信道传输过程中误码导致的噪声,本文采用高斯白噪声模拟干扰,误比特率(BER)测试抗扰能力。表5给出不同样本加入σ=0.001、σ=0.000 2高斯白噪声和无干扰情况下的误比特率(BER)。

表5 抗噪声能力(BER)测试表

不同样本BER值差距很小,考虑隐藏信息伪随机特性对测试结果的影响,可以认为抗扰能力不受载体影响。各种参数下无干扰时误比特率均为0,说明本文算法基于QIM和多重容错处理方法在提取端检测嵌入强度和嵌入量没有误差,不受数据隐藏过程影响,允许采用较大的嵌入强度,算法自身十分稳定;文献[1]提取端嵌入强度误差影响数据提取问题,导致算法自身不够稳定。文献[2-3]嵌入强度根据掩蔽阈值自适应调整,而掩蔽阈值与载体音频密切相关,采用固定分帧时小信号或静音段嵌入强度小,将导致抗干扰能力急剧下降。

基于小波变换的隐藏算法,采样率高,低频子带稳定,抗噪声能力就强。本文算法测试载体采样率为8 kHz,因而抗扰能力相对有限;采样率44.1 kHz情况下,抗扰能力与文献[6]相同,能够对抗重采样、8位重量化、4 kHz低通滤波等;由于加入m序列标识信息隐藏位置,因而还具有一定抗裁剪能力。

3 结 语

本文基于时域掩蔽效应的语音自适应隐藏算法,采用能零比检测有声段和无声段,m序列标识信息隐藏位置,小波变换时频局部特性加速m序列搜索匹配,实现信息隐藏位置的动态自适应优选和精确重定位;采用不等距的QIM方法实现时域掩蔽效应检测,逐点调整嵌入强度和隐藏量,以较小运算量得到很好的不可感知性和大动态范围的嵌入容量,自适应效果明显;采用QIM和多重容错处理方法消除了提取端嵌入强度误差,算法自身十分稳定,能够稳定适应各种语音信号;小波域隐藏提取具有较好抗干扰能力,满足语音隐蔽通信抗干扰性能要求。

猜你喜欢
时域阈值容量
改进的软硬阈值法及其在地震数据降噪中的研究
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
晚霞浅淡少年糖
改进小波阈值对热泵电机振动信号的去噪研究
水瓶的容量
小桶装水
基于MATLAB 的信号时域采样及频率混叠现象分析
两种常用漂浮式风力机平台动态特性分析
不同入射角风波流海上漂浮式风力机频域与时域动态特性