基于iLBC编码的一种小容量语音信息隐藏方法与流程

文档序号:13686836阅读:448来源:国知局
基于iLBC编码的一种小容量语音信息隐藏方法与流程

本发明涉及一种信息隐藏方法,针对低速率编码器ilbc编码器的小容量信息隐藏方法,可以保证嵌入信息具有良好的隐蔽性并且不会对载体语音有较大影响。



背景技术:

随着信息社会的不断发展,人们在享受快捷方便的网络通信时,不得不面对隐私泄露和信息失窃的风险。为了实现隐私保护和信息安全,一些安全技术被逐渐应用到了网络通信领域中。就语音的保密通信来看,传统的语音加密技术虽然可以起到保证信息安全的作用,但是由于在网络上传输的是经过加密的语音信号,即密文,这就就会极大的激发非授权者破解密文的欲望,很可能导致语音信息被破解或者暴力破坏,最终导致隐私泄露,失去保密通信的意义。语音信息隐藏技术不同于加密技术,它在信道上传输的是一些不会引起非授权者兴趣的普通语音信息,但是,作为载体,这些普通语音信息中承载了一部分隐秘信息。发送方通过某种隐藏算法,把一些隐秘信息嵌入到普通语音信息中,然后发送到网络上,这并不会引起非授权者的注意。当这些信息到达接收端后,接收端采用提取算法提取出隐秘信息,这就达到了保密通信的效果。

语音信息隐藏领域的研究已经获得了不少成果,wu等人提出了一种基于g.711编码的自适应语音信息隐藏方法;ma等人提出了在g.721编码流中嵌入隐秘信息的方法;wu等人使用lpc系数的替换实现语音信息隐藏;huang等人在低速率编码语音流中使用基音预测完成信息嵌入;huang等人研究了在voip语音流的非活动帧中嵌入隐秘信息的隐藏算法,发现了voip语音流的非活动帧比活动帧更适合做信息隐藏的重要结论;wang等人提出了使用lsb算法在voip语音流中做实时嵌入的方法;liu等人研究了voip语音流中基于帧比特率变化的信息隐藏技术,他们提出了bd(bitratedowngrading)和bs(bitrateswitching)两种隐藏算法,等等。与以上研究成果不同,xiao等人提出了一种互补邻居节点(complementaryneighborvertices,cnv)算法,该算法是信息隐藏领域中第一次结合图论相关知识实现码本分组的算法,与传统码本分组算法不同,cnv算法把每个码字都看成多维空间中一个孤立的点,每两个码字之间的关系用边和权重来表示。相邻的点分别被0和1标记,标记的过程就是码本分组的过程,然后根据隐秘信息中比特的0和1分别在相应的码本组中做搜索,完成隐秘信息的嵌入。

然而,信息隐藏技术是利用载体中的冗余来嵌入隐秘信息的,语音信息在经过ilbc这种低速率编码器压缩编码以后可利用的冗余空间较少,直接导致隐藏容量的下降,同时,由于人耳对声音变化比较敏感,这就对隐秘信息的隐蔽性提出了较高的要求。因此,在低速率语音中,保证容量较大的情况下实现高隐蔽性的语音信息隐藏是一项具有挑战性的研究工作。

ilbc是globalipsound公司在2000年研发的一款能够提供稳健的ip语音通信编解码器。为了节省带宽,ilbc专为窄带语音通信而设计。其采用帧独立线性预测编码(linearperdictivecoding,lpc)算法,该算法对输入语音信号做一系列分析,计算出能够表征原始语音信号的特征参数,把这些特征参数按照一定的格式打包输出,发送到网络上,接收端接收到数据包后对数据解析,根据特征参数恢复出原始语音。

ilbc编码主要分为两部分:

(1)初始状态的选择与编码

根据ilbc编码标准,ilbc编码器的输入信号是经过8000hz采样,16bit量化的标准pcm信号,输入信号按20ms或30ms划分为帧,对于20ms帧,采用8000hz采样,16bit量化就会生成160个样点,同理,30ms帧会产生240个样点。对于每帧信号,每40个样点又划分为一个子帧,即20ms帧有4个子帧,30ms帧有6个子帧。所有信号帧做相应处理得到残差信号,为初始状态的选择做准备。

对于每帧残差信号,在4或6个子帧中寻找两个能量值最大的连续子帧作为初始状态所在的子帧。为了使初始状态向中间偏移,所有能量值都要乘以一个权重因子,对于20ms帧,权重因子ssqen_win[3]={0.9,1.0,0.9},对于30ms帧,权重因子ssqen_win[5]={0.8,0.9,1.0,0.9,0.8}。

为了有效的降低初始状态的比特率,取30ms帧的初始状态长度为58,两个连续子帧的最前或最后22个样点的能量值决定了初始状态取前58个样点,还是后58个样点;20ms帧的初始状态长度为57,选择方法同30ms帧。帧内初始状态位置state_first使用1bit编码:

state_first=1:初始状态取前58或57个样点;

state_first=0:初始状态取后58或57个样点;

随后,初始状态通过一个全通滤波器,做相位杂散处理,使信号具有偶对称性,同时,在滤波器响应中选出幅值最大的样点,对该幅值取对数运算,然后用6位量化器做量化,输出量化索引值idxformax,与idxformax相对应的量化值为qmax,并产生归一化因子scal,对初始状态做归一化运算。用感知加权滤波器wk(z)对每个归一化样点滤波,产生加权语音样点x[n],x[n]减预测样值y[n]产生目标样值d[n],其中预测滤波器由下式给出

目标样值d[n]通过3位量化器得到初始状态编码u[n]。至此,完成初始状态的编码工作。

(2)剩余样点编码

对编码完成的初始状态做解码,得到lpc激励信号,将这些信号缓存在一块固定的内存中,这块内存就是固定码本内存。按照一定的规则选取码本内存中的样点序列,就可以构造出用于编码下一个子帧的动态码本。此过程又包含以下三部分:

1)编码顺序的确定

剩余样点的编码顺序是包含初始状态的两个子帧中除去初始状态后剩余的23/22个样点;时间轴上滞后于初始状态的样点;时间轴上超前于初始状态的样点。

2)码本的构建

用于搜索的码本由两部分组成,第一部分是基码本,第二部分是扩展码本,对于长度为40样点的目标矢量,基码本和扩展码本都会有一个增广部分,称为增广基码本和增广扩展码本。

基码本由码本内存构建,在长度为1mem的码本内存上滑动长度为1target的窗,得到不同的码本矢量,每个码本矢量对应一个索引号。基码本通过一个8阶fir滤波器得到扩展码本,扩展码本长度与基码本长度相同。

3)码本的搜索

码本搜索就是在码本中找到与感知加权目标矢量的最优匹配矢量。搜索方法是三级增益形状匹配法。在每一级中,找到与目标矢量最匹配的码本矢量,然后计算增益并量化,最后更新感知加权目标矢量,为下一级搜索做准备。

每级搜索中,最优匹配矢量由3个准则共同确定:

①使测度最大。最优匹配码本矢量要使得下式的值达到最大,式中target表示目标矢量,cbvec表示选择的码本矢量。

②增益的绝对值小于给定门限。最优匹配码本矢量增益的绝对值要小于给定的门限,通常这个门限值是1.3,即增益满足下式。

③第一级搜索中,目标矢量和码本矢量的点积大于0,即满足下式:

target*cbvec>0

如果没有码本矢量满足上边第二条和第三条准则,那么最优匹配矢量就是满足准则1的码本矢量。

在下一级搜索开始之前,要进行目标更新。通过目标矢量减去最优匹配矢量乘以对应的量化增益值完成更新,更新过程可以用下式表示:

target[i]=target[i]gainq*selected_vec[i]



技术实现要素:

本发明中针对ilbc编码器提出了一种适用于固定码本的信息隐藏方法,可以利用该方法实现小容量的信息隐藏并具有良好的隐蔽性。

使用ilbc编码器编码语音信号时,选定的初始状态会通过一个全通滤波器,在滤波器响应中选出幅值最大的样点,对该幅值取对数运算,然后用6位量化器做量化,输出量化索引值idxformax,为了实现隐秘信息的嵌入,根据嵌入隐秘信息的值,修正idxformax的值,使idxformax具有某种的特征,发送端根据改特征嵌入隐秘信息,接收端根据该特征提取隐秘信息,以此达到语音信息隐藏的效果。隐秘信息嵌入过程如图1所示。

接收端收到包含隐秘信息的ilbc数据包后对其做解析,提取出相关编码参数,根据提取出的idxformax索引号的奇偶性判断发送方在载体中嵌入的是0还是1,隐秘信息提取过程如图2所示。由于发送方在隐秘信息嵌入完成后并没有立即停止编码器,而是等待所有载体语音编码完成后停止编码器,因此,没有嵌入隐秘信息的载体的索引号就会表现出随机性,接收方不能根据索引号的奇偶性判断出是否有隐秘信息存在,故接收端采用的提取算法是一种非盲提取方法,需要通过对比接收到的索引号和从本地ilbc编解码器对载体语音的编解码提取出的索引号来判断隐秘信息的位数。

附图说明

图1是隐秘信息嵌入过程。

图2是隐秘信息提取过程。

图3是嵌入前后语音时域波形图。

图4是嵌入前后语音频谱图。

图5是30ms帧格式下pesq_mos值对比。

图6是20ms帧格式下pesq_mos值对比。

具体实施方式

1.首先将隐秘信息数字化,得到二进制流;使用接收端的公钥对得到的二进制流做加密操作,得到加密后的二进制流;如果当前嵌入的隐秘信息是0,那么使用次优且为偶数的idxformax的值来替换最优idxformax值,如果当前嵌入的隐秘信息是1,那么使用次优且为奇数的idxformax值来替换最优idxformax值;根据修正后的idxformax值对应的qmax值归一化初始状态并编码;编码除初始状态以外的样点,完成当前帧的编码;若隐秘信息嵌入完毕,则剩余载体做标准ilbc编码,否则,返回第三步,直至隐秘信息完全嵌入完毕。

2.接收端对接收到的ilbc数据包做解析,得到相应参数;本地ilbc编解码器对载体语音做编解码,得到和之前相同的参数;对比两组参数的不同之处,判断发送方时候有隐秘信息嵌入,并确定嵌入隐秘信息的位数;如果有隐秘信息嵌入,则根据获取的索引号判断嵌入的隐秘信息的值,如果索引号是奇数,那么嵌入的隐秘信息是1,如果索引号是偶数,那么嵌入的隐秘信息是0;将提取出的隐秘信息做整合,形成二进制流;使用秘钥对得到的二进制流做解密,再次整合,得到解密后的二进制流;根据得到的二进制流还原出发送方嵌入的隐秘信息,完成隐秘信息提取过程。

3.进行实验结果的分析。对于语音信息隐藏,最直观的隐蔽性来源于嵌入隐秘信息之后,载体信息的变化问题,如果载体信息变化过大,非授权者可以轻易判断是否有隐秘信息的存在,那么这种隐藏算法是不实用的。

嵌入隐秘信息后载体的变化问题可以用语音的时域波形或者频谱变化来直观判断。为了验证本算法的隐蔽性,在40组10s的语音信号中随机选取一组,画出该信号的时域波形和频谱图,如图3,图4所示。从图中可以看出,时域波形变化较小,频谱图变化较小,从信号处理角度来看,该算法隐蔽性较好。

目前,最流行的语音质量测评工具是pesq_mos值,该值可以反映嵌入隐秘信息之后与未嵌入隐秘信息的载体之间的变化。pesq_mos值在理论范围内越大,语音质量变化越小,越接近原始语音,隐蔽性越好;pesq_mos值越小,语音质量变化越大,隐蔽性越差。本发明也使用pesq_mos值对语音做分析,画出30ms帧格式下pesq_mos值变化如图5所示,20ms帧格式下pesq_mos值变化如图6所示。对比图5和图6可以看出,pesq_mos值变化微小,意味着嵌入隐秘信息对于载体语音语音质量的影响几乎可以忽略。

本发明采用的方法从pesq_mos角度来说隐蔽性较好,20ms帧格式的平均pesq_mos值下降不到0.5%,故本发明中隐藏方法在语音质量方面具有明显优势。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1