互联网时代人们的生活中充斥着大量多媒体信息,如何在这些海量数据中快速搜索到精确信息,仅仅依靠多媒体的简要文本标签是难以实现的,尤其是个人语音、会议讨论等信息,因此基于内容的音频检索[1]成为近年来亟待解决的研究热点问题之一.此外,随着云储存的发展,如何在保障数据安全性及用户隐私的前提下,对密文语音进行检索,在多媒体检索领域受到了众多关注[2].早期的音频检索多在识别基础上进行,如文献[3-4]基于识别出的文本,实现了语音查询.基于识别的检索可以借鉴已非常成熟的文本检索方法,但明文数据容易产生泄露,安全性低,且识别过程耗时较多,对于待检数据库要求较高,检索效率低.为提高检索效率,不少研究者[5]考虑直接利用声学特征来进行检索,文献[6]引入深度模型对原始声学特征进行学习分析;同时,哈希技术[7]也应用于多媒体检索中,通过提取音频指纹来构造指纹哈希模型[8],但不同说话人声学特征不同,对检索效果有着较大影响.为提高安全性,基于内容的密文语音检索研究大多采用语音感知哈希技术[9],其与深度哈希技术一样能够大大减少检索数据量及所需存储空间,而语音中包含的生物信息及其他敏感信息也得到了有效保护[10-12].但基于物理特征等算法的感知哈希技术易受说话人身份等因素影响,仅适合于检索同条语音,语音长度差别较大时检索效果不佳,较难实现全文检索、关键字检索等.针对现有方案存在的问题,本研究给出了一种基于声母和深度哈希的密文语音全文检索方案.该方案利用深度学习技术提高特征表义性,将基于识别与基于感知哈希的检索方法相结合,既能高效实现不同长度语音的全文模糊检索,又能满足密文检索的安全要求,且在一定程度上减小了识别效果、训练数据量、说话人身份等因素造成的负面影响.1 密文语音全文检索算法1.1 密文语音全文检索框架本研究提出的密文语音全文检索算法处理流程框图见图1,由云端密文语音库构建、云端全文哈希索引表构建及客户端语音检索三个模块组成.10.13245/j.hust.211215.F001图1密文语音全文检索算法处理流程框图在密文语音库构建模块,语音持有者利用文献[13]的具二次非线性特性的4D超混沌加密算法,对原始语音文件进行加密来构建云端的密文语音库.在全文哈希索引表构建模块,语音持有者利用基于汉语声母和元音的双向循环递归神经网络(RNN)-长短时记忆(LSTM)深度学习模型提取原始语音的深度特征,生成原始语音的深度哈希码,上传至云端的全文哈希索引表.在客户端语音检索模块,查询用户输入待查询语音,利用同样方法生成哈希码,发送至云端检索服务器,检索服务器分别对全文哈希索引表中所有符合该用户权限的语音哈希码进行阶段式匹配检索,并将密文语音库中符合阈值条件的密文语音列表发送给用户,用户在客户端可根据授权密码对密文语音进行下载解密(解密方法见文献[13]).经三个模块的处理,语音数据在上传、检索过程中一直保持密文状态,进一步防止了传输过程中内容泄露及服务器存储时的隐私泄露问题.1.2 双向循环RNN-LSTM深度学习模型构建本研究建立的声母模型包含现代汉语拼音21个标准声母(b,p,m,f,d,t,n,l,g,k,h,j,q,x,zh,ch,sh,r,z,c,s)及2个习惯拼法中的零声母(y,w),但部分汉字如“阿”“偶”“饿”等只有元音,故将“a”“o”“e”三个元音也加入模型,共26个声母和元音完全覆盖了现代汉语所有发音类别,能够代表语音段中的各类发音字.此外,语音中也存在大量静音段、喘气声、背景噪音等,故再设一类其他类,代表与发音字无关的其他语音信息.本研究提出的检索框架(如图1所示)是基于内容的语音检索方法,故采用梅尔倒频谱系数(MFCC)作为模型原始输入特征,该感知特征已被验证对人类语音具有较好的表征能力,在语音识别、音节分界等领域已广泛应用[14].在特征学习方面,RNN及LSTM能够对时间序列进行建模,更适合用于语音、音频等方面的学习,故本研究采用该深度网络,来构造本研究的语音模型,具体模型设计如下.设一条语音帧数为M,本研究采用26个Mel滤波器,则每帧可提取26个Mel频率倒谱系数.隔帧取样,特征数据可减为26×n,其中n=M/2或(M+1)/2,视奇偶性而定并按时间顺序排列.为强化学习上下文关系,每一帧输入数据集合将同时包含当前帧及其前后9帧的特征数据.设当前时间序列为第t帧,该帧26个MFCC特征设为集合ft,则该帧输入数据集合Xt={ft-9,ft-k,…,ft-1,ft,ft+1,…,ft+9},其中1≤t≤n,且当t-k≤0或t+k≥M时,令ft-k和ft+k填充为0,这里1≤k≤9.最后,得到深度模型的输入数据X,其中所有的特征数据都进行如下式所示的正态标准化,σ为标准差,ft=(ft-∑1nft/n)/σ. (1)本研究构造的基于声母的双向RNN-LSTM模型共6层,每一帧数据集合包含(2×9+1)×26=494个特征数据,按时间顺序输入深度学习模型.前3层为全连接层,第1层与第2层神经元数量为512,第3层为2×512,前3层使用激活函数均为ReLU20,以限制激活范围,促进稀疏特征学习,ReLU20(x)=min(max(x,0),20)∈[0,20], (2)式中x为激活函数输入.第4层为具有LSTM结构的双向循环网络,将第3层输出分为两组,每组各512个,分别进行前向传播运算以及后向传播运算.第5层为全连接层,将2×512个输出结果重新映射为512个.第6层为softmax分类层,将512个特征映射到类别集合C中,C={c1,c2,…,c27},分别代表本研究使用的声母及元音模型.深度模型训练采用连接时序分类器(CTC)搜索作为损失函数,CTC准则能够在序列任意时点对标签进行预测,解决了输入信号与标签对齐问题.通过深度模型学习,语音的感知特征数据与本研究提出的声母模型建立起映射关系,语音信号抽象为模型符号.1.3 哈希码生成与全文哈希索引表构建设原始语音为S,利用构建的深度学习模型,可用来生成S的语音哈希序列,其处理步骤如下.首先,利用已经训练好的基于声母的深度学习模型,获得第6层输出K,K={k1,k2,…,kt,…,kn},其中kt={y1,y2,…,y27},yi对应类别集合C中26个声母元音和1个其他类,yi值越大代表与对应类别的匹配度越高.其次,对学习到的每一特征序列kt计算F(kt)=max(kt),筛选出所有能够代表说话人单字发音的声母元音,将满足条件的kt组成特征子集F,F={kt|F(kt)≠y27,y27∈kt,1≤t≤n},y27为非声母元音类,即将非语音信息类的帧剔除,仅保留能够对应声母和元音的帧信息.再次,若相邻两帧或两帧以上都映射到同一个声母或元音,则认为这几帧实际为同一个发音片段,将重复帧合并,只保留加和平均后的kt.最后,将特征子集F中保留的每一kt二值化,转化为哈希码.按时间顺序,对每一个kt计算中位数r=y(14),哈希码计算如下式所示,最终获得的语音哈希序列H满足F分布:h(yi)=0 (yi≤r);1 (yir). (3)这里不直接利用声母识别结果来生成哈希码,而是采用深度模型的输出特征来计算哈希码,能够一定程度减弱识别效果对哈希表征能力的影响,提高检索精度,并且对信息内容具有一定保护效果,提高安全性.语音检索模块中,查询用户的待查询语音通过上述方法处理,可得哈希序列Hs,将Hs上传到云端服务器,可进行后续检索环节.在云端全文哈希索引表构建模块,语音持有者在加密上传原始语音文件的同时,也通过上述步骤获得该语音文件的全文哈希序列并上传,云端服务器接收后,将语音文件加入密文语音库,将全文哈希序列添加到全文哈希索引表中,并为二者建立一一对应关系,设立相应权限级别.1.4 客户端语音检索当客户端提出查询时,云端检索服务器获得待查语音哈希序列Hs后,在检索服务器的语音全文哈希索引表中,与所有符合权限的哈希序列进行匹配检索,将满足阈值条件的哈希序列所对应的密文语音文件名添入列表,作为检索结果返还给用户.设全文哈希索引表中下一个须检索的哈希序列为Hx,Hx={x1,x2,…,xl,l/27∈N*},其中xi={0,1},具体检索过程如下.步骤1 将须检索的哈希序列Hx中每27个哈希码分为一组,一共可获得p组.步骤2 同理将Hs分组,得到q组哈希码数据.步骤3 计算Hs的第一组哈希码hs1与Hx中每一组哈希码hxi的汉明距离di.若Hx中尚未比较的哈希码组数小于q,则不再进行后续比较.步骤4 若di小于阈值T1,则继续下一步,若不满足,返回步骤3计算hs1与hx(i+1)的汉明距离.步骤5 继续计算Hs后续第j组哈希码hsj与hx(i+j)的汉明距离di+j.步骤6 求得d¯=1j+1∑0jdi+j,其中j≤q.步骤7 比较d¯与阈值T2,若大于T2,则返回步骤3,继续对比hs1与Hx其余哈希码组;否则,返回步骤5,进行下一组比较.步骤8 若Hs的q组哈希码全部完成了对比,仍然符合阈值T2条件,则Hx检索成功,将Hx所对应的语音文件名加入返还用户语音列表.重复上述步骤,直至全文哈希索引表中符合权限条件的所有哈希序列均已完成检索过程,将检索所得语音列表返回给查询用户.查询用户在客户端获得检索结果后,可根据需要下载相应语音文件,利用文献[13]的解密方法完成密文语音的解密处理.2 实验结果与分析本研究实验采用清华大学THCHS30中文语音数据库,语音内容选取大容量新闻,分为四部分,40个说话人,每组中不同说话人句子ID(唯一编码)相同的语音文本内容完全一致,每条语音时长不同.深度模型的训练、测试及哈希码生成环节实验条件:Intel(R) Core(TM)i7-6700 CPU,3.40 GHz,内存8 GiB,Tensorflow-GPU 1.12.0+python 3.6.检索实验条件:Intel(R) Core(TM)i3-2350M CPU,2.30 GHz,内存4 GiB,python 3.6.2.1 基于声母模型的深度学习性能分析本研究将THCHS30数据库的ABC三组中10 875条语音作为训练数据,将D组2 496条语音作为测试集,一次取8条语音进行训练,共循环1 360轮,每70轮输出一次验证集上的测试结果.本研究所采用基于声母的双向RNN-LSTM模型,每一层dropout概率设置为0.95.本研究将文献[6]使用的LSTM-RNN模型作为对比,该深度模型具有一个输入层,一个含55个LSTM单元的隐藏层,一个softmax层,原文中只有两个分类,为进行有效对比,实验采用与本文相同的27个声母与元音分类.此外,文献[6]将29个综合特征不作上下文处理,直接用于深度模型输入,实验中采用相同处理,但使用与本研究相同的26个梅尔倒频谱系数,以消除不同特征对实验效果的影响,训练集与验证集均与本文算法一致,具体性能对比如下.a. 本研究与文献[6]的模型分别进行了50次迭代训练,每次迭代的损失总和及错误率如图2所示.本文方法均低于文献[6],每次迭代平均训练时长为5 895.8 s,高于文献[6]的1 275.0 s,但在迭代20次左右时损失与错误率就已趋平稳,而文献[6]则到40次以后才逐渐趋于平稳,且平稳后的平均错误率为0.32,也高于本文平稳后的平均错误率0.07.10.13245/j.hust.211215.F002 图2 50次迭代训练损失及错误率对比 1—本文算法损失;2—本文算法错误率; 3—文献[6]模型损失;4—文献[6]模型错误率. 本研究与文献[6]在50次迭代学习中得到的50个模型分别在验证集上进行了测试,结果如图3所示,与训练过程中的趋势大致相同.本文方法迭代20~50次后的模型在验证集上的错误率约为0.20,大部分0.20,文献[6]模型的验证集错误率在40次迭代学习后才开始0.40,但都0.35.每条语音平均耗时方面,本文方法在0.9 s左右,文献[6]方法在0.3~0.4 s之间.10.13245/j.hust.211215.F003 图3 50次迭代测试集耗时以及错误率对比 1—本文方法识别耗时;2—本文方法错误率; 3—文献[6]方法识别耗时;4—文献[6]方法错误率. 实验结果表明:语音的上下文关系对模型学习影响较大,本研究采用的双向RNN-LSTM模型及对输入数据的上下文处理,都进一步提高了模型学习效果,且错误率低;虽然识别耗时略多,但平均每条语音低于1 s.b. 常用激活函数ReLU6与本研究采用的ReLU20也做了50次迭代训练对比,如图4所示,为了显示直观,只给出了10次迭代以后数据.两者趋势相似,在20次迭代后ReLU20训练损失略低于ReLU6,错误率方面ReLU20效果也略好于ReLU6.ReLU6平均每次迭代训练时间为5917.1 s,略高于ReLU20.10.13245/j.hust.211215.F004 图4 激活函数性能对比 1—本文方法损失;2—本文方法错误率; 3—ReLU6函数损失;4—ReLU6函数错误率. 2.2 全文检索性能检索中主要使用精确率P及召回率R[15]等指标.a. 本研究的感知哈希生成算法简单易行,对特征序列进行筛选和合并,仅一次遍历即可,取中位值和二值化计算耗时也都为线性时间,故整个算法的时间复杂度基本为O(n),仅与语音帧数有关,空间复杂度也为O(n).一条10 s左右的正常语速语音,大约包含30个字,即存储的哈希码数量为27×30.b. 本研究对检索算法的两个阈值T1及T2进行了不同值的检索实验,待检测语音集为A2共249条语音,检索使用数据库为A语音集,共3 757条语音.图5给出了在T1=0.3情况下,T2对检索精确率及召回率的影响.10.13245/j.hust.211215.F005图5阈值检索性能对比从图5可以看出:随着T2增大,精确率下降,召回率提升.实验发现T1对检索效果影响较不明显,在T2一定的情况下(T2=0.32),仅当T10.30或T10.40时对检索结果有影响,这是因为T1仅为初次匹配门限,后续匹配时均以T2为标准.但T1对检索时长有一定影响,T1每增加0.01,检索时长约增加5%~7%,这是由于门限值增加而使得参加后续计算的数据增多.c. 为了进一步验证本文方法的检索性能,与现有的基于感知哈希[11]和基于识别[3-4]的语音检索方法在全文检索效果和效率方面进行实验对比,待查询语音集均为A2,B12,C14和D21共999条语音,检索使用数据库为全部语音集共1.335 6×104条语音.其中文献[11]采用帧长1 800、帧移1 200的分帧设置,每帧提取20个多重分形特征,再采用原文中2帧一段的聚合划分得到近似特征向量,最后对聚合近似向量进行感知哈希计算,得到哈希序列,检索匹配方法采用原文的整体汉明距离计算方式.文献[3-4]均须先进行识别,再对识别出的文本进行检索匹配,为去除汉字、英文字母等不同识别及不同模型方法的影响,这里采用本研究21次迭代的深度模型作为识别模型,将识别出的声母及元音作为检索文本进行匹配对比,对比结果见表1.10.13245/j.hust.211215.T001表1与现有不同方法的检索性能对比算法阈值精确度/%召回率/%平均耗时/s文献[11]文献[11]0.100.205.510.177.5815.6739.4243.36文献[11]0.300.1249.5247.29基于识别[3-4]100.008.030.01本文方法0.30,0.3297.6847.602.28以语音A2_0检索为例,图6给出了三种方法检索过程及结果.16个正确结果中,文献[11]只检索出4条,但满足阈值(0.20)的语音多达4 588条,文献[11]在三种阈值下精确率都比较低,召回率在阈值为0.30时能够达到较好水平,但此时的精确率只有0.12%,这是由于受说话人声学特性影响较大,同一说话人不同内容的语音特征相似度较高,导致出现错误识别.基于识别的方法[3-4]精确率高,达到100%,但除了同一说话人的同条语音,其他说话人相同内容语音很少被检索到,检索示例中也只检索到同条语音(见图6),每条语音识别结果都有细微差别,针对文本的精确匹配,一旦识别不够精准,就无法被检索到.本文方法当T1=0.30,T2=0.32时,能够检索出12条正确结果,且没有错误识别.10.13245/j.hust.211215.F006图6检索示例检索效率方面文献[11]方法耗时最长,以A2_0语音检索为例,共耗时24.70 s,因其生成哈希码较长,检索时须整体匹配,计算量大.基于识别的检索耗时最低仅0.01 s,这是由于识别后只有29个字符,且不进行距离等计算,仅执行查找,但要实现较好的全文匹配效果,模型训练时间、识别耗时将会增加,此外若是使用汉字等文字识别,则对于数据量和训练都有更高要求.本文算法初次匹配仅须对比27位哈希值,A2_0检索共耗时3.38 s,耗时尚在用户可接受范围.此外,当T1和T2为0.10时,本文算法可针对本人语音进行语音全文检索,精确率和召回率都可达100%,可应用于版权、隐私查询保护等方面.3 结语本研究提出了一种基于声母和深度哈希的密文语音全文检索方法,将基于语音识别与基于内容的感知哈希两类检索方法跨类结合,实验结果表明:本文方法对语音长度无要求,实现了较为高效的全文检索,降低了说话人身份、语速及识别效果对检索的不利影响,同时保证了语音数据的隐私安全.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览