1.本技术涉及声纹识别技术领域,尤其涉及一种声纹识别方法、装置、设备及存储介质。
背景技术:2.近年来,越来越多的人工智能识别算法采用基于深度神经网络的方法,声纹识别也不例外。2016年以来,以x
‑
vector[1,2]为代表的基于神经网络的方法逐渐取代传统的i
‑
vector的方法,在众多的应用场景中获得最高的声纹识别准确率。采用x
‑
vector的声纹识别方案首先通过神经网络将一个可变长度的语音输入,转换成一个固定长度的向量(称为x
‑
vector),然后再比较不同向量(代表不同的输入语音)之间的距离,以确定两段输入的语音是否来自同一个人。
[0003]
但是目前的神经网络中的池化层仅能关注到语音帧的抽象特征信息,忽略了语音的时序性,使得实际的声纹识别过程丢失语音帧的时间特性,导致识别结果缺乏可靠性。
技术实现要素:[0004]
本技术提供了一种声纹识别方法、装置、设备及存储介质,用于解决现有的声纹识别神经网络仅能提取语音抽象特征信息,忽略了语音的时序特征,导致识别结果缺乏可靠性的技术问题。
[0005]
有鉴于此,本技术第一方面提供了一种声纹识别方法,包括:
[0006]
将预置语音帧输入预置神经网络模型的输入层,得到语音特征向量,所述预置神经网络模型包括预置统计池化层和预置时间差分层;
[0007]
通过所述预置统计池化层计算所述语音特征向量的均值向量和标准差向量;
[0008]
通过所述预置时间差分层计算所述语音特征向量的时间差分向量;
[0009]
将所述均值向量、所述标准差向量和所述时间差分向量拼接为输出特征向量;
[0010]
将所述输出特征向量输入所述预置神经网络模型的输出层,得到声纹识别结果。
[0011]
优选地,所述将预置语音帧输入预置神经网络模型的输入层,得到语音特征向量,之前还包括:
[0012]
通过大量历史语音帧对初始神经网络模型进行预训练,并将测试准确率高于阈值的所述初始神经网络模型作为预置神经网络模型。
[0013]
优选地,所述将预置语音帧输入预置神经网络模型的输入层,得到语音特征向量,之前还包括:
[0014]
采用语音采集器获取目标语音信息;
[0015]
对所述目标语音信息进行多种预处理操作,得到预置语音帧,所述预处理操作包括去噪、语音帧选取和增强处理。
[0016]
优选地,所述通过所述预置时间差分层计算所述语音特征向量的时间差分向量,包括:
[0017]
基于s阶差分统计量,通过预置时间差分方程计算所述语音特征向量的时间差分向量。所述预置时间差分方程为:
[0018][0019]
其中,t为语音帧的总帧数,x
t
、x
t+s
分别为t阶和t+s阶的语音特征向量,δ
s
为所述时间差分向量。
[0020]
本技术第二方面提供了一种声纹识别装置,包括:
[0021]
特征提取模块,用于将预置语音帧输入预置神经网络模型的输入层,得到语音特征向量,所述预置神经网络模型包括预置统计池化层和预置时间差分层;
[0022]
第一计算模块,用于通过所述预置统计池化层计算所述语音特征向量的均值向量和标准差向量;
[0023]
第二计算模块,用于通过所述预置时间差分层计算所述语音特征向量的时间差分向量;
[0024]
特征拼接模块,用于将所述均值向量、所述标准差向量和所述时间差分向量拼接为输出特征向量;
[0025]
声纹识别模块,用于将所述输出特征向量输入所述预置神经网络模型的输出层,得到声纹识别结果。
[0026]
优选地,还包括:
[0027]
模型训练模块,用于通过大量历史语音帧对初始神经网络模型进行预训练,并将测试准确率高于阈值的所述初始神经网络模型作为预置神经网络模型。
[0028]
优选地,还包括:
[0029]
语音采集模块,用于采用语音采集器获取目标语音信息;
[0030]
预处理模块,用于对所述目标语音信息进行多种预处理操作,得到预置语音帧,所述预处理操作包括去噪、语音帧选取和增强处理。
[0031]
优选地,所述第二计算模块,具体用于:
[0032]
基于s阶差分统计量,通过预置时间差分方程计算所述语音特征向量的时间差分向量,所述预置时间差分方程为:
[0033][0034]
其中,t为语音帧的总帧数,x
t
、x
t+s
分别为t阶和t+s阶的语音特征向量,δ
s
为所述时间差分向量。
[0035]
本技术第三方面提供了一种声纹识别设备,所述设备包括处理器以及存储器;
[0036]
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
[0037]
所述处理器用于根据所述程序代码中的指令执行第一方面所述的声纹识别方法。
[0038]
本技术第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面所述的声纹识别方法。
[0039]
从以上技术方案可以看出,本技术实施例具有以下优点:
[0040]
本技术中,提供了一种声纹识别方法,包括:将预置语音帧输入预置神经网络模型的输入层,得到语音特征向量,预置神经网络模型包括预置统计池化层和预置时间差分层;通过预置统计池化层计算语音特征向量的均值向量和标准差向量;通过预置时间差分层计算语音特征向量的时间差分向量;将均值向量、标准差向量和时间差分向量拼接为输出特征向量;将输出特征向量输入预置神经网络模型的输出层,得到声纹识别结果。
[0041]
本技术提供的声纹识别方法,不仅通过池化层提取了语音特征向量的均值和标准差特征,还设置了时间差分层提取语音特征向量的时间特征信息,使得拼接得到的输出特征向量既有抽象特征描述,也有时序特征表达,更加符合语音信息的特性,从而使得识别结果更加可靠。因此,本技术能够解决现有的声纹识别神经网络仅能提取语音抽象特征信息,忽略了语音的时序特征,导致识别结果缺乏可靠性的技术问题。
附图说明
[0042]
图1为本技术实施例提供的一种声纹识别方法的流程示意图;
[0043]
图2为本技术实施例提供的一种声纹识别装置的结构示意图。
具体实施方式
[0044]
为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0045]
为了便于理解,请参阅图1,本技术提供的一种声纹识别方法的实施例,包括:
[0046]
步骤101、将预置语音帧输入预置神经网络模型的输入层,得到语音特征向量,预置神经网络模型包括预置统计池化层和预置时间差分层。
[0047]
预置语音帧是目标识别的语音信息,根据网络模型的输入需求进行处理后得到的。预置神经网络模型是针对语音识别或者声纹识别训练好的模型,可以直接用于语音的识别任务中,可以理解的是,本实施例中的声纹识别即为对语音的识别过程。具体神经网络类型可以根据实际情况选择,只要其中包括统计池化层,可以进行网络改进即可,在此不作赘述。
[0048]
可以理解的是,此处的输入层除了传统意义上的单层输入层之外,还包括在池化层之前的一些卷积层,用于提取输入的语音帧的特征向量,整体的看作输入层处理。预置统计池化层和预置时间差分层均位于输入层之后,处理的是语音特征向量。
[0049]
进一步地,步骤101,之前还包括:
[0050]
通过大量历史语音帧对初始神经网络模型进行预训练,并将测试准确率高于阈值的初始神经网络模型作为预置神经网络模型。
[0051]
模型的预训练需要采用大量的历史语音帧,这些历史语音帧的质量可以是参差不齐的,类别可以根据实际的识别任务而定;预训练的任务就是获取到具备一定准确率的声纹识别模型。可以理解的是,测试过程采用的是测试集,与预训练的训练集并没有数据交叉,准确率的阈值也可以根据情况设置,在此不作限定。
[0052]
进一步地,步骤101,之前还包括:
[0053]
采用语音采集器获取目标语音信息;
[0054]
对目标语音信息进行多种预处理操作,得到预置语音帧,预处理操作包括去噪、语音帧选取和增强处理。
[0055]
目标语音信息可能是长短不一的一些语音记录,需要根据模型输入需求进行基本处理,例如去噪;而语音帧选取则是语音片段式的选取过程,可以选择特征比较突出的语音段,或者特定的语音段;增强处理是为了突出语音信息中的有效信息,便于声纹识别。
[0056]
步骤102、通过预置统计池化层计算语音特征向量的均值向量和标准差向量。
[0057]
预置统计池化层输出的实质是一个向量,是在计算均值向量和标准差向量后进行向量拼接得到的一个总向量。假设在t时刻输入预置统计池化层中的是d维语音特征向量x
t
,预置语音帧共t帧,那么可以计算均值:
[0058][0059]
d维的标准差可以计算为:
[0060][0061]
不论是均值还是标准差,都是d维向量;拼接后得到的池化层输出向量为2d维。
[0062]
步骤103、通过预置时间差分层计算语音特征向量的时间差分向量。
[0063]
进一步地,步骤103,包括:
[0064]
基于s阶差分统计量,通过预置时间差分方程计算语音特征向量的时间差分向量。预置时间差分方程为:
[0065][0066]
其中,t为语音帧的总帧数,x
t
、x
t+s
分别为t阶和t+s阶的语音特征向量,δ
s
为时间差分向量。
[0067]
按照预置时间差分方程可以计算一个或者多个s阶差分统计向量,也即时间差分向量。增加时间差分信息,确保语音信息中的时序特征被保留下来,在一定程度上能够提升声纹识别的准确率。
[0068]
步骤104、将均值向量、标准差向量和时间差分向量拼接为输出特征向量。
[0069]
输出特征向量是预置语音帧最完整的特征描述向量,如果仅仅是均值和方差的特征向量,那么不论预置语音帧是顺序输入网络,还是逆序输入网络,得到的特征表达向量是一样的,不会存在时序上的差别。但是,语音信息与时间密切相关,在时间上一种动态信息,忽略时间特性也会使得语音信息同时丢失一些关键特征信息。加入时间差分向量后,可以保持预置语音帧的时序特性,确保语音信息中的动态特性得以保留,从而提升声纹识别的准确性。
[0070]
步骤105、将输出特征向量输入预置神经网络模型的输出层,得到声纹识别结果。
[0071]
输出层可以将不同的语音帧对应的输出层特征向量进行距离计算,进而将计算的
结果与预设值进行比较,以确认两种语音帧是否来自同一个人。这里的距离可以是欧拉距离、余弦距离、plda距离等,具体不作限定。
[0072]
本技术实施例提供的声纹识别方法,不仅通过池化层提取了语音特征向量的均值和标准差特征,还设置了时间差分层提取语音特征向量的时间特征信息,使得拼接得到的输出特征向量既有抽象特征描述,也有时序特征表达,更加符合语音信息的特性,从而使得识别结果更加可靠。因此,本技术实施例能够解决现有的声纹识别神经网络仅能提取语音抽象特征信息,忽略了语音的时序特征,导致识别结果缺乏可靠性的技术问题。
[0073]
为了便于理解,请参阅图2,本技术提供了一种声纹识别装置的实施例,包括:
[0074]
特征提取模块201,用于将预置语音帧输入预置神经网络模型的输入层,得到语音特征向量,预置神经网络模型包括预置统计池化层和预置时间差分层;
[0075]
第一计算模块202,用于通过预置统计池化层计算语音特征向量的均值向量和标准差向量;
[0076]
第二计算模块203,用于通过预置时间差分层计算语音特征向量的时间差分向量;
[0077]
特征拼接模块204,用于将均值向量、标准差向量和时间差分向量拼接为输出特征向量;
[0078]
声纹识别模块205,用于将输出特征向量输入预置神经网络模型的输出层,得到声纹识别结果。
[0079]
进一步地,还包括:
[0080]
模型训练模块206,用于通过大量历史语音帧对初始神经网络模型进行预训练,并将测试准确率高于阈值的初始神经网络模型作为预置神经网络模型。
[0081]
近一步地,还包括:
[0082]
语音采集模块207,用于采用语音采集器获取目标语音信息;
[0083]
预处理模块208,用于对目标语音信息进行多种预处理操作,得到预置语音帧,预处理操作包括去噪、语音帧选取和增强处理。
[0084]
进一步地,第二计算模块203,具体用于:
[0085]
基于s阶差分统计量,通过预置时间差分方程计算语音特征向量的时间差分向量。预置时间差分方程为:
[0086][0087]
其中,t为语音帧的总帧数,x
t
、x
t+s
分别为t阶和t+s阶的语音特征向量,δ
s
为时间差分向量。
[0088]
本技术还提供了一种声纹识别设备,设备包括处理器以及存储器;
[0089]
存储器用于存储程序代码,并将程序代码传输给处理器;
[0090]
处理器用于根据程序代码中的指令执行上述方法实施例中的声纹识别方法。
[0091]
本技术还提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行上述方法实施例中的声纹识别方法。
[0092]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅
仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0093]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0094]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0095]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以通过一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read
‑
only memory,英文缩写:rom)、随机存取存储器(英文全称:randomaccess memory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0096]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。