首页 > 乐器声学 专利正文
声纹识别方法及装置、存储介质及电子设备与流程

时间:2022-02-13 阅读: 作者:专利查询

声纹识别方法及装置、存储介质及电子设备与流程

1.本公开涉及人工智能技术领域,具体而言,涉及一种声纹识别方法、声纹识别装置、计算机可读介质和电子设备。


背景技术:

2.近年来,神经网络架构搜索(nas,neural architecture search),作为一种可以自动搜索最佳神经网络架构的技术,已经在多种任务,例如图像分类、语义分割、对象检测等等任务上面,取得了超越人工设计的网络架构的性能。
3.常规的nas方法对候选的网络架构进行了择优选择,但是却需要耗费大量的计算资源;对搜索到的网络单元也只是进行简单拼接,整个网络仍然存在大量的网络参数。
4.现有的网络架构搜索方法,搜索过程需要耗费大量的计算资源,且搜索到的网络结构存在网络参数量大、计算量大的问题。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开实施例的目的在于提供一种声纹识别方法、声纹识别装置、计算机可读介质和电子设备,进而在一定程度上减少现有神经网络架构搜索过程中耗费计算资源,且搜索到的网络结构中网络参数数量大,运算量大的问题。
7.根据本公开的第一方面,提供了一种声纹识别方法,包括:
8.确定候选单元结构;基于所述候选单元结构,构建神经网络模型并对所述神经网络模型进行训练;
9.向所述神经网络模型中添加掩码模块,构建对应的生成器;
10.将训练好的神经网络模型作为基线网络,通过所述基线网络、所述生成器和判别器构建生成对抗网络模型,并对所述生成对抗网络模型进行训练;
11.根据训练好的生成对抗网络模型,确定待裁剪的中间状态节点;
12.将所述神经网络模型中的待裁剪的中间状态节点进行裁剪,得到精简结构神经网络模型;
13.对所述精简结构神经网络模型进行重新训练,采用训练好的精简结构神经网络模型提取待识别目标的声纹特征,得到待识别目标的声纹特征向量;
14.根据所述待识别目标的声纹特征向量与带标签的声纹特征向量之间的相似度,确定声纹识别结果。
15.在本公开的一种示例性实施例中,基于前述方案,所述确定候选单元结构;基于所述候选单元结构,构建神经网络模型,包括:
16.利用基于梯度的神经网络架构搜索方法搜索得到候选单元结构,即normal单元和reduction单元;
17.根据设置的网络单元数量和堆叠规则,对所述normal单元和reduction单元进行交替堆叠,形成神经网络主体架构;
18.在所述神经网络主体架构之后设置分类层,得到神经网络模型。
19.在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
20.在所述神经网络主体架构与分类层之间顺序设置池化层和全连接层。
21.在本公开的一种示例性实施例中,基于前述方案,所述向所述神经网络模型中添加掩码模块,构建对应的生成器,包括:
22.向所述神经网络模型的中间状态节点添加掩码模块,以使中间状态节点的特征值中加入稀疏掩码值,形成生成器。
23.在本公开的一种示例性实施例中,基于前述方案,所述通过所述基线网络、所述生成器和判别器构建生成对抗网络模型,包括:
24.将基线网络的分类层预测值标记为真标签;将生成器的分类层预测值标记为假标签;
25.将多层感知器网络作为判别器;
26.利用判别器对基线网络的输出与生成器的输出进行二分类学习,形成生成对抗网络模型。
27.在本公开的一种示例性实施例中,基于前述方案,所述对所述生成对抗网络模型进行训练,包括:
28.固定所述生成器与掩码模块的参数值,采用训练数据训练所述生成对抗网络模型,以更新判别器的参数;
29.固定更新后的判别器的参数,采用训练数据训练所述生成对抗网络模型,以更新生成器与掩码模块的参数。
30.在本公开的一种示例性实施例中,基于前述方案,所述根据训练好的生成对抗网络模型,确定待裁剪的中间状态节点,包括:
31.根据训练好的生成对抗网络模型的中间状态节点的掩码模块的掩码值,确定待裁剪的中间状态节点。
32.在本公开的一种示例性实施例中,基于前述方案,所述将所述神经网络模型中的待裁剪的中间状态节点进行裁剪,包括:
33.将每个单元的待裁剪的中间状态节点、该中间状态节点与前置节点连接的边、该中间状态节点与后置节点连接的边分别进行裁剪,形成对应的新的单元结构;
34.采用新的单元结构按神经网络模型的网络架构重新组合,得到精简结构神经网络模型。
35.根据本公开的第二方面,提供了一种声纹识别装置,包括:
36.网络模型构建模块,用于确定候选单元结构;基于所述候选单元结构,构建神经网络模型并对所述神经网络模型进行训练;
37.生成器构建模块,用于向所述神经网络模型中添加掩码模块,构建对应的生成器;
38.生成对抗网络模型构建模块,用于将训练好的神经网络模型作为基线网络,通过所述基线网络、所述生成器和判别器构建生成对抗网络模型,并对所述生成对抗网络模型进行训练;
39.待裁剪节点确定模块,用于根据训练好的生成对抗网络模型,确定待裁剪的中间状态节点;
40.网络结构确定模块,用于将所述神经网络模型中的待裁剪的中间状态节点进行裁剪,得到精简结构神经网络模型;
41.声纹特征提取模块,用于对所述精简结构神经网络模型进行重新训练,采用训练好的精简结构神经网络模型提取待识别目标的声纹特征,得到待识别目标的声纹特征向量;
42.识别结果确定模块,用于根据所述待识别目标的声纹特征向量与带标签的声纹特征向量之间的相似度,确定声纹识别结果。
43.根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
44.根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
45.本公开示例性实施例可以具有以下部分或全部有益效果:
46.在公开示例实施方式所提供的声纹识别方法中,可以基于神经网络架构搜索的候选单元结构,构建神经网络模型并训练;构建生成器,将训练好的神经网络模型作为基线网络,进一步构建生成对抗网络模型,并对所述生成对抗网络模型进行训练,根据训练好的生成对抗网络模型,确定待裁剪的中间状态节点并进行节点裁剪;对裁剪后的精简结构神经网络模型进行重新训练,并用训练好的网络对待识别语音进行声纹识别。这样一方面通过神经网络架构搜索算法获得较优的网络架构,保证网络的运行速度和运行效果;另一方面通过生成对抗网络模型裁剪压缩神经网络模型,在不降低识别效果的同时能够大幅压缩模型大小,降低计算资源耗费量;更进一步地,裁剪得到的新的单元结构,大大减少了网络参数数量和运算量,提高声纹识别效率。
47.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
48.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1示出了可以应用本公开实施例的一种声纹识别方法及装置的示例性系统架构的示意图;
50.图2示意性示出了根据本公开的一个实施例的声纹识别方法的流程图;
51.图3示意性示出了根据本公开的一个实施例中神经网络模型构建流程图;
52.图4示意性示出了根据本公开的一个实施例中搜索到的候选单元结构示意图;其中(a)为normal单元的结构示意图,(b)为reduction单元的结构示意图;
53.图5示意性示出了根据本公开的一个实施例中神经网络模型中单元堆叠方式示意
图;
54.图6示意性示出了根据本公开的一个实施例中神经网络模型的网络结构示意图;
55.图7示意性示出了根据本公开的一个实施例中生成对抗网络模型构建流程图;
56.图8示意性示出了根据本公开的一个实施例中生成对抗网络模型的结构示意图;
57.图9示意性示出了根据本公开的一个实施例中normal单元裁剪中间状态节点之后的单元结构图;
58.图10示意性示出了根据本公开的一个实施例中待识别目标的声纹特征向量获取流程示意图;
59.图11示意性示出了根据本公开的一个实施例中两个不同说话人的语谱图;其中,每副图对应一个说话人的语谱图;
60.图12示意性示出了根据本公开的一个实施例中不同网络模型的训练正确率和测试正确率随训练轮次的变化图;其中,(a)对应vgg16,(b)对应resnet18,(c)对应传统darts网络,(d)对应本公开的精简结构神经网络;
61.图13示意性示出了根据本公开的一个实施例中声纹识别装置的结构框图;
62.图14示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
具体实施方式
63.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
64.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
65.图1示出了可以应用本公开实施例的一种声纹识别方法及装置的示例性应用环境的系统架构100的示意图。如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
66.本公开实施例所提供的声纹识别方法可以在服务器105执行,相应地,声纹识别装
置一般设置于服务器105中。本公开实施例所提供的声纹识别方法也可以由终端设备101、102、103执行,相应的,声纹识别装置也可以设置于终端设备101、102、103中。
67.神经网络中包含成千上万的节点和网络参数,如何优化网络结构和网络参数是该领域的技术难点。本公开基于可微分网络架构搜索(darts,differentiable architecture search)算法,构建神经网络模型,利用生成对抗网络模型裁剪网络中冗余的中间状态节点,保证网络运行效果的同时,压缩网络结构,减少网络参数量,降低计算资源耗费量。
68.以下对本公开实施例的技术方案进行详细阐述:
69.参考图2所示,本公开提供的一种示例实施方式的声纹识别方法可以包括以下步骤:
70.步骤s210,确定候选单元结构;基于所述候选单元结构,构建神经网络模型并对所述神经网络模型进行训练;
71.步骤s220,向所述神经网络模型中添加掩码模块,构建对应的生成器;
72.步骤s230,将训练好的神经网络模型作为基线网络;通过所述基线网络、所述生成器和判别器构建生成对抗网络模型,并对所述生成对抗网络模型进行训练;
73.步骤s240,根据训练好的生成对抗网络模型,确定待裁剪的中间状态节点;
74.步骤s250,将所述神经网络模型中的待裁剪的中间状态节点进行裁剪,得到精简结构神经网络模型。
75.步骤s260,对所述精简结构神经网络模型进行重新训练,采用训练好的精简结构神经网络模型提取待识别目标的声纹特征,得到待识别目标的声纹特征向量;
76.步骤s270,根据所述待识别目标的声纹特征向量与带标签的声纹特征向量之间的相似度,确定声纹识别结果。
77.在本示例实施方式所提供的声纹识别方法中,在公开示例实施方式所提供的声纹识别方法中,可以基于神经网络架构搜索的候选单元结构,构建神经网络模型并训练;将训练好的神经网络模型作为基线网络,构建生成器,进一步构建生成对抗网络模型,并对所述生成对抗网络模型进行训练,根据训练好的生成对抗网络模型,确定待裁剪的中间状态节点并进行节点裁剪;对裁剪后的精简结构神经网络模型进行重新训练,并用训练好的网络对待识别语音进行声纹识别。这样一方面通过神经网络架构搜索算法获得较优的网络架构,保证网络的运行速度和运行效果;另一方面通过生成对抗网络模型裁剪压缩神经网络模型,在不降低识别效果的同时能够大幅压缩模型大小,降低计算资源耗费量;更进一步地,裁剪得到的新的单元结构,大大减少了网络参数数量和运算量,提高声纹识别效率,进一步降低计算资源耗费量和能耗。
78.下面,在另一实施例中,对上述步骤进行更加详细的说明。
79.在步骤s210中,确定候选单元结构;基于所述候选单元结构,构建神经网络模型并对所述神经网络模型进行训练。
80.在本示例实施方式中,可以根据分类任务选择相应的数据集,从已有声纹数据集中选择训练数据。具体通过以下步骤s310

s330,实现神经网络模型的构建。
81.在步骤s310中,利用基于梯度的神经网络架构搜索方法搜索得到候选单元结构,即normal单元和reduction单元。在本示例实施方式中,基于梯度的神经网络架构搜索方法,以darts为例进行说明。首先,对所有候选的基础操作(例如,convolution或pooling等
等)上面施加softmax,以放宽对特定操作的分类选择。其中,softmax引入了对候选操作的权重信息,用于计算每层输出的期望值。在darts收敛时,仅选择具有相对最大权重值的操作,保留在最终模型中,其他候选操作将被删除。
82.举例而言,本示例中采用darts搜索算法确定构成模型架构的两种候选单元结构,一种是normal单元,如图4(a)所示,包含0、1、2、3总共4个中间装填节点。normal cell:不改变输入feature map的大小的卷积。另一种为reduction单元,其结果如图4(b)所示,包含0、1、2、3总共4个中间状态节点。reduction cell:将输入feature map的长宽各减少为原来的一半的卷积,是通过增加stride的大小来降低size。从图4(a)和4(b)可以看出,normal单元和reduction单元中对应节点与其前置节点、后置节点连接形成的边对应的候选操作是不同的,属于不同的单元结构。
83.在步骤s320中,根据设置的网络单元数量和堆叠规则,对所述normal单元和reduction单元进行交替堆叠,形成神经网络主体架构。
84.在本示例实施方式中,可以根据分类任务设置网络单元数量,即网络深度;可以根据输入数据的维度,确定堆叠规则。该堆叠规则可以是将一个normal单元和一个reduction单元交替堆叠形成设置网络单元数量,也可以是多个normal单元和一个reduction单元交替堆叠形成设置网络单元数量,还可以是不同数量的normal单元和不同数量的reduction单元交替堆叠形成设置网络单元数量,也就是说,每次交替堆叠的单元数量不同,例如,第一次交替堆叠是2个normal单元和1个reduction单元,第二次交替堆叠是3个normal单元和2个reduction单元。优选的,本示例为在网络的三分之一处和三分之二处各设置一个reduction单元,其余均设置为normal单元,其网络单元拼接结果如图5所示,图5中,x为输入数据,z
l
为第l个单元的输出,即第l个单元提取的特征;z
n
第n个单元的输出。
85.在步骤s330中,在所述神经网络主体架构之后设置分类层,得到神经网络模型。在本示例实施方式中,可以在normal单元和reduction单元形成的神经网络主体架构之后设置softmax分类层,将提取的特征归一化映射至(0,1)之间,则可以将其看作概率值,用于多分类。此外,还可以在第一个单元之前加入卷积模块,可以用于降低输入特征的维度,使得darts能够在单块gpu上进行网络架构的搜索,例如在死一个单元之前加入一个步长为2、核大小为3的卷积算子,其神经网络模型如图6所示,图6中n表示对应位置的normal cell的数量。
86.在本公开的另一种实施方式中,根据实际需要,可以在神经网络主体架构与分类层之间顺序设置池化层和全连接层,形成神经网络主体架构、池化层、全连接层、分类层的神经网络模型。本示例实施方式中的池化层可以为最大池化层,用于对神经网络主体架构提取的特征进行降维,并增加特征的不变性,例如旋转不变性和偏移不变性。全连接层用于对所有神经元提取的特征进行综合,形成最终的特征向量。分类层为softmax,用于对特征进行归一化分类。
87.最后,还包括对构建的神经网络模型进行训练。在本示例实施方式中,可以首先对神经网络模型中的网络参数进行随机初始化;可以根据分类任务选择数据集,还可以根据需要将数据集分为训练集和测试集;采用训练数据对初始化后的神经网络模型进行训练,训练过程中,采用梯度下降算法和交叉熵损失函数进行网络参数的迭代更新。可以通过设置最大训练批次或相邻两次损失函数之差的阈值,确定训练是否完成。
88.在步骤s220中,向所述神经网络模型中添加掩码模块,构建对应的生成器。在本示例实施方式中,向所述神经网络模型的中间状态节点添加掩码模块,以使中间状态节点的特征值中加入稀疏掩码值,形成生成器。在本示例实施方式中,可以向基线网络中每个单元的中间状态节点添加掩码模块,即向每个单元的中间状态节点的特征值中加入稀疏的掩码值(soft mask),形成生成器,即加入掩码模块的基线网络就是生成器。
89.在步骤s230中,将训练好的神经网络模型作为基线网络;通过所述基线网络、所述生成器和判别器构建生成对抗网络模型,并对所述生成对抗网络模型进行训练。在本示例实施方式中,可以将步骤s210中构建的神经网络模型作为基线网络,也可以将上述任一实施例中训练好的神经网络模型作为基线网络(即baseline网络)。参考图7,通过以下步骤s710

740构建并训练生成对抗网络模型。
90.在步骤s710中,将基线网络的分类层预测值标记为真标签;将生成器的分类层预测值标记为假标签。在本示例实施方式中,将基线网络的softmax预测值标记为真标签,将生成器的softmax预测值标记为假标签。
91.在步骤s720中,将多层感知器网络作为判别器。多层感知器(multi

layer perceptron,mlp)也叫人工神经网络(artificial neural network,ann),包括一个输入层,一个输出层,及输入层与输出层之间的多个隐含层。是一种前馈人工神经网络模型,其将输入的多个数据集映射到单一的输出的数据集上。在本示例中,可以将基线网络和生成器的输出分别输入多层感知器网络,使该两个输入数据集映射至一个输出数据集上。
92.在步骤s730中,利用判别器对基线网络的输出与生成器的输出进行二分类学习,形成生成对抗网络模型。在本示例实施方式中,基线网络和生成器为两个并行网络。输入数据需要分别输入到该两个网络中,基线网络和生成器的输出数据都输入判别器中,判别器对输入的数据进行真假判别,输出判别结果。以图像数据为例,生成器g(x),用于试图产生与训练集类似的图像。判别器d(x),是一个二元分类器,试图区分真正的训练集x中的图片和生成器生成的假图片。因此,生成器用于学习数据在x中的分布情况,从而生成真实图像,并确保识别器不能区分训练集中的真图像和生成器生成的假图像。以此形成生成对抗网络模型,其网络结构如图8所示,网络中生成器与判别器的训练处于一种对抗博弈状态。
93.在步骤s740中,对生成对抗网络模型进行训练。在本示例实施方式中,可以通过以下步骤对生成对抗网络模型进行训练。
94.首先,固定所述生成器与掩码模块的参数值,采用训练数据训练所述判别器,以更新判别器的参数。在本示例实施方式中,先对掩码模块和判别器的参数值进行随机初始化,掩码模块的参数值在[0,1]之间取值。初始化之后,将生成器的网络参数和掩码模块的参数值固定不变,将训练数据分别输入基线网络和生成器,判别器对生成器的输入进行真假判别,根据判别结果和基线网络输入的真标签计算损失函数(交叉熵损失函数mse loss)并更新判别器的网络参数,例如可以采用梯度下降法更新判别器的网络参数。当判别器的判别结果符合要求(例如达到设定训练轮次或精度),则判别器训练结束。
[0095]
然后,固定更新后的判别器的参数,采用训练数据训练所述生成器,以更新生成器与掩码模块的参数。在本示例实施方式中,可以固定训练好的判别器的网络参数,采用训练数据输入基线网络和生成器,通过计算生成器的输出数据的损失函数(交叉熵损失函数mse loss),对生成器和掩码模块的参数进行调整更新,例如可以采用梯度下降法更新参数。直
到训练结束得到训练好的生成器。
[0096]
在步骤s240中,根据训练好的生成对抗网络模型,确定待裁剪的中间状态节点。在本示例实施方式中,可以根据训练好的生成对抗网络模型的中间状态节点的掩码模块的掩码值,确定待裁剪的中间状态节点。即根据训练好的生成器中掩膜模块的掩码值,确定待裁剪的中间状态节点。例如,可以将掩码值接近0的中间状态节点作为待裁剪的中间状态节点。举例而言,将掩码值处于[0,0.1]的中间状态节点作为待裁剪的中间状态节点。优选的,将掩码值为0的中间状态节点作为待裁剪的中间状态节点。
[0097]
在步骤s250中,将所述神经网络模型中的待裁剪的中间状态节点进行裁剪,得到精简结构神经网络模型。
[0098]
在本示例实施方式中,神经网络模型中每个单元为一个由多个有序节点的序列组成的有向无环图,图中的每一条边由若干候选操作构成,每一个节点都是一个特征张量;候选操作可以包含max_pool、skip_connect、sep_conv、dil_conv、avg_pool。如图4(a)和4(b)中一条带箭头的连线为一条边。
[0099]
在确定了待裁剪的中间状态节点后,将网络中每个单元结构中的待裁剪的中间状态节点、该中间状态节点与前置节点连接的边、该中间状态节点与后置节点连接的边都进行裁剪,将剩余的节点和边组成的单元结构作为新的单元结构,如图9所示,为裁剪中间状态节点之后的新的单元结构,从图中可以明显看出,裁剪后的单元结构缩小,候选操作显著减少。最终,由新的单元结构按神经网络模型的网络架构组成精简结构神经网络模型。
[0100]
在步骤s260中,对所述精简结构神经网络模型进行重新训练,采用训练好的精简结构神经网络模型提取待识别目标的声纹特征,得到待识别目标的声纹特征向量。
[0101]
在本示例实施方式中,首先,获取语音训练数据;其中,语音训练数据包含从语音数据中提取的语谱图及其标签;每个语谱图对应有说话人的标签。语音训练数据可以采用voxceleb1数据集中说话时长差异最小的100个说话人的数据。在100个说话人组成的声纹数据集中,最短的说话人说话时长为10分钟,最长的说话时长为20分钟。对每一个说话人的语音每隔一段时间切割为一个语音文件,再将该时间段的语音文件转换为语谱图,为语谱图添加标签。语谱图特征中能够明显地体现两个说话人声纹的区分性,具有区分性的输入特征将更加有益于神经网络模型的识别。
[0102]
然后,采用所述语音训练数据对所述精简结构神经网络模型进行网络参数训练,训练过程中,采用梯度下降算法和交叉熵损失函数对所述精简结构神经网络模型的网络参数进行迭代更新。
[0103]
在本示例实施方式中,参考图10,通过步骤s1010

1040实现待识别目标的声纹特征提取。
[0104]
在步骤s1010中,获取待识别语音数据。在本示例实施方式中,可以通过终端设备的语音录入功能获取待识别语音数据,也可以通过录音功能获取,还可以是其他语音播放设备播放的语音,本示例对此不做特殊限定。
[0105]
在步骤s1020中,对所述待识别语音数据进行语音活性检测,得到有效语音数据。在本示例实施方式中,可以对每一条语音采用vad算法进行语音活性检测,以去除语音中对识别没有意义的静默音等无用信息。
[0106]
在步骤s1030中,提取所述有效语音数据的语谱图,将该语谱图作为待识别目标。
在本示例实施方式中,可以对每个说话人的语音每隔一个时间间隔提取一张语谱图,该时间间隔可以根据具体情况进行设置,例如可以设置为几秒或十几秒。优选的,可以设置帧长为25毫秒、帧移为10毫秒。以此得到待识别目标,也就是说精简结构神经网络模型的输入数据为语谱图。
[0107]
在步骤s1040中,通过训练好的精简结构神经网络模型的候选单元结构提取待识别目标的声纹特征,通过全连接层将所述声纹特征综合,得到待识别目标的声纹特征向量。在本示例实施方式中,待识别语谱图通过训练好的精简结构神经网络模型的新的单元结构进行相应的特征提取,得到提取的不同的声纹特征,再通过全连接层将提取的所有特征进行综合,得到待识别目标的声纹特征向量,该声纹特征向量中包含有各个网络单元提取的声纹特征信息。
[0108]
在步骤s270中,根据所述待识别目标的声纹特征向量与带标签的声纹特征向量之间的相似度,确定声纹识别结果。在本示例实施方式中,相似度可以是两个特征向量之间的余弦相似度。当执行任务为声纹确认时,计算待识别目标的声纹特征向量与对应的已注册的声纹特征向量余弦相似度,当该相似度值高于预设阈值,则通过当前声纹验证,否则拒绝。当执行任务为声纹辨认时,计算待识别目标的声纹特征向量与声纹库中每个声纹特征向量的余弦相似度,再选取相似度最高的特征向量作为识别结果,将该声纹特征向量对应的说话人作为身份辨认结果。
[0109]
举例而言,通过一个具体实施例说明本公开的声纹识别效果。
[0110]
首先,制作训练数据集,数据集采用voxceleb1数据集中说话时长差异最小的100个说话人的数据。voxceleb1是目前较为通用的文本无关声纹识别开源数据集之一,该数据集是从youtube视频中提取出的声音,语音的格式统一为16khz采样率、单声道。在100个说话人组成的声纹数据集中,最短的说话人说话时长为10分钟,最长的说话时长为20分钟。总语音时长为1647分钟,平均每个说话人的说话时长为16分钟。对每一个说话人的语音每隔3秒切割为一个语音文件,再将切割的语音文件转换为360dpi
×
360dpi的语谱图,语谱图特征中能够明显地体现两个说话人声纹的可区分性,具有可区分性的输入特征将更加有益于神经网络模型的识别,两个不同说话人的语音,提取的语谱图如图11所示,从图11的两幅图中可以看出明显差别。
[0111]
将转换成语谱图的数据集划分为训练集和测试集,其中训练集中有30931张语谱图图片,平均每个说话人310张语谱图。而测试集中固定每个说话人20张语谱图,总共有2000张语谱图图片。
[0112]
由于提取出的语谱图特征是360dpi
×
360dpi的特殊图片,该种特殊图片属于大尺寸高维图片,因此在神经网络模型的第一个单元之前加入一个步长为2、核大小为3的卷积算子,用于降低输入语谱图的维度,使得神经网络模型能够在单块gpu上进行网络架构的搜索。
[0113]
在以上建立的声纹数据集上先采用基于梯度的网络架构搜索方法,搜索得到normal和reduction两种候选单元结构,两种单元的结构如图4(a)和4(b)所示。网络架构搜索时的单元模块的数量设置为10,第一个单元的初始通道数量为16,每个单元的中间状态节点的数量都定为4。
[0114]
将搜索得到的10个cell结构按设定规则进行拼接并训练,拼接规则为网络中第4
和第7个单元为reduction单元,其余为normal单元。以训练好的神经网络模型作为baseline网络,再通过生成对抗网络模型确定待裁剪中间节点,执行神经网络模型的结构化剪枝,本示例中网络10个单元的中间状态节点在裁剪之后的保留情况如表1所示。
[0115]
从表1可以看出,每个单元的保留节点情况均不一样,也就是说每个单元的裁剪节点不同,即每个单元在节点裁剪是需要单独考虑。图9所示为表1中的2号单元的结构图。
[0116]
表1神经网络裁剪后各单元的节点保留情况
[0117][0118]
此外,本实施例还分别采用不同的网络模型在上述数据集上进行模型训练和声纹识别测试,结果如图12和表2所示。
[0119]
表2声纹数据集上不同网络模型的性能结果
[0120][0121]
从表2可以看出,在该声纹数据集上,vgg16网络的测试正确率为87.30%,而从图12(a)可以看出,vgg16在该数据集上训练正确率达到了100%,但训练正确率与测试正确率车别较大,说明过拟合情况较严重。而resnet18的测试正确率也达到了88.95%,而从图12(b)可以看出,resnet18网络的过拟合情况是最轻微的,但测试正确率较低。现有单元结构下10个单元拼接的darts网络正确率达到了94.05%,而从图12(c)可以看出,其过拟合情况较轻。而本公开裁剪节点后的单元拼接的精简结构网络的测试正确率也达到了93.30%,而从图12(d)可以看出,其过拟合情况也较轻。但是,从表2可以看出,本公开网络相对于其他网络模型来讲,网络的参数量减少了若干个百万级数量,且相比于现有darts网络,正确率下降非常小。
[0122]
具体来讲,vgg16有上亿的参数量,在网络训练过程中存在着训练异常缓慢的情况;而resnet18的参数量相比较于vgg16有了大幅的减少,但也依然存在着千万级别的参数
量。通过直接拼接得到的darts网络有1.1百万的参数,而经过本公开裁剪的网络的参数量只有0.68百万,网络参数量只有原来darts网络的61.8%。裁剪了原darts网络40个中间状态节点中的23个,只保留了17个中间状态节点,这说明在声纹识别数据集上,原始的darts网络中直接按通道方向拼接中间状态节点作为一个单元的输出,依然会产生很多冗余的中间状态节点。本实施例实验结果表明,在声纹识别任务上使用语谱图提取声学特征并采用本公开方法进行节点裁剪的网络优化方法是有效的,相比于原始darts算法,本公开方法在基本不降低正确率的情况下,可以使原始网络的参数量减少近40%,结构得到优化。
[0123]
本公开提供的声纹识别方法,一方面通过神经网络架构搜索算法获得较优的网络架构,保证网络的运行速度和运行效果;另一方面通过生成对抗网络模型裁剪压缩神经网络模型,在不降低声纹识别效果的同时能够大幅压缩模型大小,降低计算资源耗费量;更进一步地,裁剪得到的新的单元结构,可以大大减少网络参数数量和运算量,进一步降低计算资源耗费量和能耗。此外,裁剪节点后的网络可以之间部署与移动终端设备上,便于应用范围非常广。
[0124]
本公开一方面以基于梯度的神经网络架构搜索算法搜索出较优的网络单元结构,以此构建基线网络,相比于传统的网络模型具有更快的速度和更好的效果;另一方面采用生成对抗网络模型裁剪压缩网络模型,可以使模型向训练良好的基线网络对抗学习,在不降低识别效果的同时能够大幅压缩模型大小;更近一步地,裁剪后的单元结构,大大减少了网络参数数量和运算量,可以加速前向推理速度,节省计算资源,并降低能耗。
[0125]
本公开的精简结构神经网络模型能够部署在移动设备上,且能耗低,实用性强。
[0126]
本公开的精简结构神经网络模型还可以用于图像分类等领域。
[0127]
进一步的,本示例实施方式中,还提供了一种声纹识别装置1300。该声纹识别装置1300可以应用于一服务器或终端设备。参考图7所示,该声纹识别装置1300可以包括:
[0128]
网络模型构建模块1310,可以用于确定候选单元结构;基于所述候选单元结构,构建神经网络模型并对所述神经网络模型进行训练;
[0129]
生成器构建模块1320,可以用于向基线网络构中添加掩码模块,构建对应的生成器。
[0130]
生成对抗网络模型构建模块1330,可以用于将训练好的神经网络模型作为基线网络;通过所述基线网络、所述生成器和判别器构建生成对抗网络模型,并对所述生成对抗网络模型进行训练;
[0131]
待裁剪节点确定模块1340,可以用于根据训练好的生成对抗网络模型,确定待裁剪的中间状态节点。
[0132]
网络结构确定模块1350,可以用于将所述神经网络模型中的待裁剪的中间状态节点进行裁剪,得到精简结构神经网络模型。
[0133]
声纹特征提取模块1360,可以用于对所述精简结构神经网络模型进行重新训练,采用训练好的精简结构神经网络模型提取待识别目标的声纹特征,得到待识别目标的声纹特征向量;
[0134]
识别结果确定模块1370,可以用于根据所述待识别目标的声纹特征向量与带标签的声纹特征向量之间的相似度,确定声纹识别结果。
[0135]
在本公开的一种示例性实施例中,所述网络模型构建模块1310包括:
[0136]
单元结构搜索模块,可以用于利用基于梯度的神经网络架构搜索方法搜索得到候选单元结构,即normal单元和reduction单元。
[0137]
单元堆叠模块,可以用于根据设置的网络单元数量和堆叠规则,对所述normal单元和reduction单元进行交替堆叠,形成神经网络主体架构。
[0138]
添加分类模块,可以用于在所述神经网络主体架构之后设置分类层,得到神经网络模型。
[0139]
第一训练模块,可以用于训练神经网络模型。
[0140]
在本公开的一种示例性实施例中,所述生成对抗网络模型构建模块1330包括:
[0141]
标签添加模块,可以用于将基线网络的分类层预测值标记为真标签;将生成器的分类层预测值标记为假标签。
[0142]
判别器构建模块,可以用于将多层感知器网络作为判别器。
[0143]
对抗网络形成模块,可以用于利用判别器对基线网络的输出与生成器的输出进行二分类学习,形成生成对抗网络模型。
[0144]
第二训练模块,可以用于对所述生成对抗网络模型进行训练。
[0145]
在本公开的一种示例性实施例中,第二训练模块包含:
[0146]
判别器训练模块,可以用于固定所述生成器与掩码模块的参数值,采用训练数据训练所述判别器,以更新判别器的参数。
[0147]
生成器训练模块,可以用于固定更新后的判别器的参数,采用训练数据训练所述生成器,以更新生成器与掩码模块的参数。
[0148]
在本公开的一种示例性实施例中,网络结构确定模块1350,包括:
[0149]
裁剪模块,将每个单元的待裁剪的中间状态节点、该中间状态节点与前置节点连接的边、该中间状态节点与后置节点连接的边分别进行裁剪,形成对应的新的单元结构。
[0150]
组合模块,采用新的单元结构按神经网络模型的网络架构重新组合,得到精简结构神经网络模型。
[0151]
在本公开的一种示例性实施例中,声纹特征提取模块1360,包括:
[0152]
语音获取模块,可以用于获取待识别语音数据;
[0153]
活性检测模块,可以用于对所述待识别语音数据进行语音活性检测,得到有效语音数据;
[0154]
语谱图提取模块,可以用于提取所述有效语音数据的语谱图,将该语谱图作为待识别目标;
[0155]
特征向量提取模块,可以用于通过训练好的精简结构神经网络模型的候选单元结构提取待识别目标的声纹特征,通过全连接层将所述声纹特征综合,得到待识别目标的声纹特征向量。
[0156]
在本公开的一种示例性实施例中,识别结果确定模块1370,包括:
[0157]
相似度计算模块,可以用于计算待识别目标的声纹特征向量与带标签的声纹特征向量之间的余弦相似度。
[0158]
识别模块,可以用于根据所述余弦相似度,确定声纹识别结果。
[0159]
上述声纹识别装置中各模块或单元的具体细节已经在对应的声纹识别方法中进行了详细的描述,因此此处不再赘述。
[0160]
作为另一方面,本技术还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图2、3、7、10所示的各个步骤等。
[0161]
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0162]
图14示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
[0163]
需要说明的是,图14示出的电子设备的计算机系统1400仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0164]
如图14所示,计算机系统1400包括中央处理单元(cpu)1401,其可以根据存储在只读存储器(rom)1402中的程序或者从存储部分1408加载到随机访问存储器(ram)1403中的程序而执行各种适当的动作和处理。在ram 1403中,还存储有系统操作所需的各种程序和数据。cpu 1401、rom 1402以及ram 1403通过总线1404彼此相连。输入/输出(i/o)接口1405也连接至总线1404。
[0165]
以下部件连接至i/o接口1405:包括键盘、鼠标等的输入部分1406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1407;包括硬盘等的存储部分1408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1409。通信部分1409经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至i/o接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入存储部分1408。
[0166]
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1409从网络上被下载和安装,和/或从可拆卸介质1411被安装。在该计算机程序被中央处理单元(cpu)1401执行时,执行本技术的方法和装置
中限定的各种功能。
[0167]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0168]
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等,均应视为本公开的一部分。
[0169]
应可理解的是,本说明书公开和限定的本公开延伸到文中和/或附图中提到或明显的两个或两个以上单独特征的所有可替代组合。所有这些不同的组合构成本公开的多个可替代方面。本说明书的实施方式说明了已知用于实现本公开的最佳方式,并且将使本领域技术人员能够利用本公开。