基于声纹库的声纹识别方法、主控节点及计算节点与流程

专利2022-06-29  59


本发明涉及声纹识别技术领域,特别是涉及一种基于声纹库的声纹识别方法、主控节点及计算节点。



背景技术:

目前,在1:n声纹识别场景中,采用最近邻搜索(nearestneighborsearch,nns)进行声纹识别。其中,nns是一种线性搜索法,通过将待识别声纹数据的待识别声纹特征向量与声纹库的声纹数据的样本声纹特征向量逐条计算空间距离,最后得出距离最近的top-k条结果向量。但是,随着声纹库规模的增大或者向量维度的增加,完成对待识别声纹数据的声纹识别的时间复杂性增加。



技术实现要素:

本发明实施例旨在提供一种基于声纹库的声纹识别方法、主控节点及计算节点,其能够降低声纹识别的时间复杂性,进而提升声纹识别系统的处理性能。

为解决上述技术问题,本发明实施例提供以下技术方案:

第一方面,本发明实施例提供一种基于声纹库的声纹识别方法,包括:

接收1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量;

转发所述1:n声纹识别请求至至少两个计算节点,以使每一所述计算节点根据所述1:n声纹识别请求,将所述计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果;

接收所述至少两个计算节点返回的所述声纹识别结果。

在一些实施例中,每一所述计算节点的嵌入式内存数据库的容量等于所述声纹库的容量除以所述至少两个计算节点的个数。

在一些实施例中,所述方法还包括:

对所述至少两个计算节点返回的所述声纹识别结果进行合并排序处理;

将合并排序后的所述声纹识别结果发送给客户端。

在一些实施例中,所述方法还包括:

接收声纹数据更新请求;

将待更新的声纹数据分发至目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库。

在一些实施例中,所述将所述待更新的声纹数据分发至目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库,包括:

利用负载均衡策略,从所述至少两个计算节点中选取目标计算节点;

将所述待更新的声纹数据分发至所述目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库。

第二方面,本发明实施例提供一种主控节点,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上任一项所述的基于声纹库的声纹识别方法。

第三方面,本发明实施例提供一种基于声纹库的声纹识别方法,包括:

接收主控节点转发的1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量;

根据所述1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果。

在一些实施例中,所述将计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,包括:

启动所述计算节点的声纹识别引擎;

将所述声纹识别引擎对应的嵌入式内存数据库中的所述声纹数据加载至所述声纹识别引擎的进程内存;

将所述进程内存中的所述声纹数据平均分配至所述计算节点的至少两个cpu核。

在一些实施例中,一个所述声纹数据包括一个样本声纹特征向量和所述样本声纹特征向量对应的样本用户信息,所述待识别声纹数据包括待识别声纹特征向量和所述待识别声纹特征向量对应的待识别用户信息。

在一些实施例中,所述并行处理所述待识别声纹数据,得到声纹识别结果,包括:

并行计算所述计算节点的至少两个cpu核的每一所述样本声纹特征向量与所述待识别声纹特征向量的相似度值;

将所述相似度值放入对应的所述cpu核的待排序列表;

根据预设规则,从所述待排序列表中筛选出所述计算节点的声纹识别结果。

第四方面,本发明实施例提供一种计算节点,包括:

嵌入式内存数据库;

与所述嵌入式内存数据库通信连接的声纹识别引擎,包括至少两个cpu核,所述声纹识别引擎用于接收主控节点转发的1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量,根据所述1:n声纹识别请求,将所述嵌入式内存数据库存储的声纹数据分配至所述至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果。

第五方面,本发明实施例提供一种声纹识别系统,包括:

如上所述的主控节点;以及

与所述主控节点通信连接的至少两个如上所述的计算节点。

第六方面,本发明实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使主控节点能够执行如上对应所述的基于声纹库的声纹识别方法,以及使计算节点能够执行如上对应所述的基于声纹库的声纹识别方法。

本发明实施例的有益效果是:区别于现有技术的情况下,本发明实施例提供的一种基于声纹库的声纹识别方法、主控节点及计算节点,通过接收1:n声纹识别请求,1:n声纹识别请求包括待识别声纹数据,n为声纹库的容量,转发1:n声纹识别请求至至少两个计算节点,以使每一计算节点根据1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至计算节点的至少两个cpu核,以并行处理待识别声纹数据,得到声纹识别结果,接收至少两个计算节点返回的声纹识别结果。因此,本发明实施例通过将基于声纹库的串行nns计算进行一级分解至至少两个计算节点,再经过二级分解至每一计算节点的至少两个cpu核中进行并行nns计算,能够降低声纹识别的时间复杂性,进而提升声纹识别系统的处理性能;通过增加计算节点和/或cpu核的数量,使本发明实施例的声纹识别系统具有可扩展性。另外,通过采用嵌入式内存数据库在计算节点的内存中处理待识别声纹数据,避免了声纹库c/s网络访问模式带来的磁盘i/o、网络i/o、内存拷贝的开销。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是本发明实施例提供的一种声纹识别系统的结构示意图;

图2是本发明实施例提供的一种主控节点和计算节点的结构示意图;

图3是本发明实施例提供的应用于主控节点的其中一种基于声纹库的声纹识别方法的方法流程图;

图4是本发明实施例提供的应用于主控节点的其中一种基于声纹库的声纹识别方法的方法流程图;

图5是本发明实施例提供的基于图3或图4的一种基于声纹库的声纹识别方法的方法流程图;

图6是图5中步骤s17的其中一种方法流程图;

图7是本发明实施例提供的应用于主控节点的其中一种基于声纹库的声纹识别装置的装置示意图;

图8是本发明实施例提供的应用于主控节点的其中一种基于声纹库的声纹识别装置的装置示意图;

图9是本发明实施例提供的应用于计算节点的一种基于声纹库的声纹识别方法的方法流程图;

图10是图9中步骤s22的其中一种方法流程图;

图11是图9中步骤s22的其中一种方法流程图;

图12是本发明实施例提供的应用于计算节点的一种基于声纹库的声纹识别装置的装置示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

请参阅图1,是本发明实施例提供的一种声纹识别系统的结构示意图。如图1所示,所述声纹识别系统300包括如下述实施例所述的主控节点100以及与所述主控节点100通信连接的至少两个计算节点200。

其中,所述主控节点100还与客户端通信连接。所述客户端可以为智能手机、掌上电脑(personaldigitalassistant,pda)、平板电脑、智能手表等移动终端;也可以为计算机、服务器等具有数据采集和数据处理功能的硬件设备。

可以理解,所述客户端发送的1:n声纹识别请求包括用户在所述客户端实时录制的待识别声纹数据和用户预先预存于所述客户端的待识别声纹数据。根据用户操作,将所述待识别声纹数据封装于所述1:n声纹识别请求中,并发送至所述主控节点100。声纹库中存储有若干注册用户的声纹数据,通过将所述待识别声纹数据与声纹库中存储的声纹数据进行比对,可实现对所述待识别声纹数据对应的说话人进行辨认,并返回声纹特征匹配相似度top-k的说话人信息。

在本实施例中,所述主控节点100为服务器,用于接收所述客户端发送的1:n声纹识别请求,转发所述1:n声纹识别请求至所述至少两个计算节点200,以及向所述客户端返回经所述主控节点100处理后声纹识别结果。

所述主控节点100包括应用程序接口(又称应用编程接口)。其中,应用程序接口是软件系统不同组成部分衔接的约定,良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。应用程序接口还是一种中间件,用于为各种不同平台提供数据共享。根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将应用程序接口分为四种类型,分别是远程过程调用(rpc)、标准查询语言(sql)、文件传输以及信息交付。

在一些实施例中,所述主控节点100为物理网络节点。其可以是数据电路端接设备(dce),如调制解调器、集线器、桥接器或交换机;也可以是一个数据终端设备(dte),如数字手机,打印机或主机(例如路由器、工作站或服务器)。相应地,若主控节点100所应用的网络是一个lan或wan,每一个lan或wan节点(至少应该是数据链路层设备)必须拥有mac地址。例如,计算机、包交换机、xdsl调制解调器(带有乙太接口)以及无线lan接入点。若主控节点100所应用的网络是internet或一个intranet,大部分物理网络节点是主机(即通过ip地址来标识的internet节点),所有的主机都是物理网络节点。

请一并参阅图2,所述主控节点100包括至少一个处理器101以及与所述至少一个处理器101通信连接的存储器102,图2中以其以一个处理器101为例。其中,所述存储器102存储有可被所述至少一个处理器101执行的指令,所述指令被所述至少一个处理器101执行,以使所述至少一个处理器101能够执行如下所述的应用于主控节点100的基于声纹库的声纹识别方法。

所述处理器101和所述存储器102可以通过总线或者其他方式连接,图2中以通过总线连接为例。

存储器102作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中应用于主控节点100的基于声纹库的声纹识别方法对应的程序指令/模块,例如,附图7和附图8所示的各个模块。处理器101通过运行存储在存储器102中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现下述方法实施例所述的应用于主控节点100的基于声纹库的声纹识别方法。

存储器102可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据应用于主控节点100的基于声纹库的声纹识别装置的使用所创建的数据等。此外,存储器102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器102可选包括相对于处理器101远程设置的存储器,这些远程存储器可以通过网络连接至应用于主控节点100的基于声纹库的声纹识别装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个模块存储在所述存储器102中,当被所述一个或者多个处理器101执行时,执行下述任意方法实施例中的应用于主控节点100的基于声纹库的声纹识别方法,例如,执行以上描述的图3至图6的方法步骤,实现图7至图8中的各模块和各单元的功能。

上述产品可执行本发明实施例所提供的应用于主控节点100的基于声纹库的声纹识别方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

在本实施例中,所述至少两个计算节点200为硬件配置一致的服务器。如图2所示,每一所述计算节点200包括嵌入式内存数据库201以及与所述嵌入式内存数据201库通信连接的声纹识别引擎202。

所述嵌入式内存数据库201把数据库的主拷贝常驻在内存,使系统性能得到了极大的提高。其中,每一所述计算节点200的嵌入式内存数据库201的容量等于所述声纹库的容量除以所述至少两个计算节点200的个数。

所述声纹识别引擎202包括至少两个cpu核20。所述声纹识别引擎202用于接收主控节点100转发的1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量,根据所述1:n声纹识别请求,将所述嵌入式内存数据库201存储的声纹数据分配至所述至少两个cpu核20,以并行处理所述待识别声纹数据,得到声纹识别结果。

其中,cpu核是cpu中间的核心芯片,由单晶硅制成,用来完成所有的计算、接受/存储命令、处理数据等,是数字处理核心。其具有固定的逻辑结构,该逻辑结构包括一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元,各个逻辑单元合理布局,形成cpu核。所述声纹识别引擎202包括的cpu核20的数量越多,表示所述声纹识别引擎202的cpu的运转速度越快,工作效率越高,性能越好。

上述产品可执行本发明实施例所提供的应用于计算节点200的基于声纹库的声纹识别方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

请参阅图3,是本发明实施例提供的应用于主控节点的其中一种基于声纹库的声纹识别方法的方法流程图。如图3所示,所述基于声纹库的声纹识别方法包括:

s11、接收1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量。

在本实施例中,根据声纹识别系统的结构,将所述声纹库的声纹数据平均分配至所述至少两个计算节点,分别存储于所述至少两个计算节点对应的所述嵌入式内存数据库。从而,所述至少两个计算节点将原先大规模向量集的声纹库均分为至少两个中等规模向量集的声纹库。

其中,每一所述计算节点的嵌入式内存数据库的容量等于所述声纹库的容量除以所述至少两个计算节点的个数。假设,所述计算节点的数量为w个,其中,w≥2,则每一所述计算节点的嵌入式内存数据库的容量q=n/w。例如,所述声纹库的容量n等于160万,所述计算节点的数量w等于4个,则每一所述计算节点的嵌入式内存数据库的容量q=n/w=160万/4=40万。

在一些实施例中,根据预设分区算法,将所述声纹库的声纹数据分配至所述至少两个计算节点,分别存储于所述至少两个计算节点对应的所述嵌入式内存数据库。此时,所述至少两个计算节点所存储的声纹数据的数量不完全相等,即所述至少两个计算节点的容量不完全一致。例如,所述声纹库的容量n等于180万,所述计算节点的数量w等于4个,所述预设分区算法为等间距分区算法,计算节点1的容量q=30万,计算节点2的容量q=40万,计算节点3的容量q=50万,计算节点4的容量q=60万,计算节点2与计算节点1的容量差值为10万,计算节点3与计算节点2的容量差值为10万,计算节点4与计算节点3的容量差值为10万,则计算节点之间的间距均为10万。

s12、转发所述1:n声纹识别请求至至少两个计算节点,以使每一所述计算节点根据所述1:n声纹识别请求,将所述计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果。

s13、接收所述至少两个计算节点返回的所述声纹识别结果。

请参阅图4,是本发明实施例提供的应用于主控节点的其中一种基于声纹库的声纹识别方法的方法流程图。如图4所示,基于图3,所述方法还包括:

s14、对所述至少两个计算节点返回的所述声纹识别结果进行合并排序处理。

s15、将合并排序后的所述声纹识别结果发送给客户端。

进一步的,假设每一计算节点包括c个cpu核,每一cpu核处理得到的声纹识别结果为top-x,x为每一cpu核处理得到的相似度值超过预设阈值的声纹数据的数量,top-x存储于对应所述cpu核的待排序列表中,主控节点处理得到的声纹识别结果为top-k,k为声纹识别系统处理得到的相似度值超过预设阈值的声纹数据的数量,top-k存储于主控节点的待排序列表中,其中,c≥2,x≤k,则主控节点接收的top-x的数量为w*c个,声纹识别系统处理得到的相似度值超过预设阈值的声纹数据的数量k=w*c*x个,将w*c*x个相似度值超过预设阈值的声纹数据进行合并排序处理,并返回给客户端。

综上,每一所述计算节点根据所述1:n声纹识别请求,分别将所述嵌入式内存数据库存储的声纹数据平均分配至所述至少两个cpu核,声纹识别系统通过所述至少两个计算节点的全部cpu核并行处理所述待识别声纹数据。假设至少两个所述计算节点的规格一致,完成对待识别声纹数据的声纹识别的时间复杂性从原来串行计算的o(nd)降低为o((n/w/c)d)。通过增加所述计算节点的数量和/或每一所述声纹识别引擎包括的cpu核的数量,使得每一cpu核分配到的声纹数据的数量减少,进一步降低了声纹识别的时间复杂性,提升了声纹识别系统的处理性能。

请参阅图5,是本发明实施例提供的基于图3或图4的一种基于声纹库的声纹识别方法的方法流程图。如图5所示,基于图3或图4,所述方法还包括:

s16、接收声纹数据更新请求。

s17、将待更新的声纹数据分发至目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库。

请参阅图6,所述将所述待更新的声纹数据分发至目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库,包括:

s171、利用负载均衡策略,从所述至少两个计算节点中选取目标计算节点。

s172、将所述待更新的声纹数据分发至所述目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库。

当有数据更新时,主控节点利用负载均衡策略从所述至少两个计算节点中选取目标计算节点,将待更新的声纹数据分发给目标计算节点,由该目标计算节点更新内存数据库。具体的,利用目标计算节点的落盘功能,选择一种合适的落盘策略,以将待更新的声纹数据落盘到所述目标计算节点对应的嵌入式内存数据库的磁盘上。

本发明实施例提供的应用于主控节点的一种基于声纹库的声纹识别方法,通过接收1:n声纹识别请求,1:n声纹识别请求包括待识别声纹数据,n为声纹库的容量,转发1:n声纹识别请求至至少两个计算节点,以使每一计算节点根据1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至计算节点的至少两个cpu核,以并行处理待识别声纹数据,得到声纹识别结果,接收至少两个计算节点返回的声纹识别结果。因此,本发明实施例通过将基于声纹库的串行nns计算进行一级分解至至少两个计算节点,再经过二级分解至每一计算节点的至少两个cpu核中进行并行nns计算,能够降低声纹识别的时间复杂性,进而提升声纹识别系统的处理性能;通过增加计算节点和/或cpu核的数量,使本发明实施例的声纹识别系统具有可扩展性。另外,通过采用嵌入式内存数据库在计算节点的内存中处理待识别声纹数据,避免了声纹库c/s网络访问模式带来的磁盘i/o、网络i/o、内存拷贝的开销。

请参阅图8,是本发明实施例提供的应用于主控节点的其中一种基于声纹库的声纹识别装置的装置示意图,如图8所示,所述基于声纹库的声纹识别装置400包括第一接收模块401、转发模块402以及第二接收模块403。

所述第一接收模块401用于接收1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量。

所述转发模块402用于转发所述1:n声纹识别请求至至少两个计算节点,以使每一所述计算节点根据所述1:n声纹识别请求,将所述计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果。

所述第二接收模块403用于接收所述至少两个计算节点返回的所述声纹识别结果。

请一并参阅图9,是本发明实施例提供的应用于计算节点的一种基于声纹库的声纹识别方法的方法流程图。如图9所示,所述基于声纹库的声纹识别装置500包括上述实施例所述的基于声纹库的声纹识别装置400,相同之处请参阅上述各个实施例,在此不一一赘述。区别在于,所述基于声纹库的声纹识别装置500还包括合并排序模块501、发送模块502、第三接收模块503以及分发模块504。

所述合并排序模块501用于对所述至少两个计算节点返回的所述声纹识别结果进行合并排序处理。

所述发送模块502用于将合并排序后的所述声纹识别结果发送给客户端。

所述第三接收模块503用于接收声纹数据更新请求。

所述分发模块504用于将待更新的声纹数据分发至目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库。

其中,所述分发模块504包括选取单元5041和分发单元5042。

所述选取单元5041用于利用负载均衡策略,从所述至少两个计算节点中选取目标计算节点。

所述分发单元5042用于将所述待更新的声纹数据分发至所述目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库。

值得说明的是,上述装置内的模块之间的信息交互、执行过程等内容,由于与本发明应用于主控节点的方法实施例基于同一构思,具体内容可参见本发明应用于主控节点的方法实施例中的叙述,此处不再赘述。

本发明实施例提供的应用于主控节点的一种基于声纹库的声纹识别装置,通过第一接收模块接收1:n声纹识别请求,1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量,转发模块转发1:n声纹识别请求至至少两个计算节点,以使每一计算节点根据1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至计算节点的至少两个cpu核,以并行处理待识别声纹数据,得到声纹识别结果,第二接收模块接收至少两个计算节点返回的声纹识别结果。因此,本发明实施例通过将基于声纹库的串行nns计算进行一级分解至至少两个计算节点,再经过二级分解至每一计算节点的至少两个cpu核中进行并行nns计算,能够降低声纹识别的时间复杂性,进而提升声纹识别系统的处理性能;通过增加计算节点和/或cpu核的数量,使本发明实施例的声纹识别系统具有可扩展性。另外,通过采用嵌入式内存数据库在计算节点的内存中处理待识别声纹数据,避免了声纹库c/s网络访问模式带来的磁盘i/o、网络i/o、内存拷贝的开销。

请参阅图9,是本发明实施例提供的应用于计算节点的一种基于声纹库的声纹识别方法的方法流程图。如图9所示,所述基于声纹库的声纹识别方法包括:

s21、接收主控节点转发的1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量。

s22、根据所述1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果。

其中,一个所述声纹数据包括一个样本声纹特征向量和所述样本声纹特征向量对应的样本用户信息,所述待识别声纹数据包括待识别声纹特征向量和所述待识别声纹特征向量对应的待识别用户信息。

可以理解,一个声纹特征本质上是一个高维的特征向量,则每个计算节点的嵌入式内存数据库存储的声纹数据对应一向量集,每个嵌入式内存数据库绑定至一个cpu核的声纹数据对应一向量集。一般,特征向量的维度大小在150~400之间,以维度为150的特征向量为例,每条特征向量有150个双精度浮点数值,意味着每条特征向量将会占用1200字节,则一百万条这样的特征向量就会需要约1.12gb存储空间,对于400维度的特征向量,则一百万条这样的特征向量就会需要约3gb存储空间。

请参阅图10,所述将计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,包括:

s221、启动所述计算节点的声纹识别引擎。

s222、将所述声纹识别引擎对应的嵌入式内存数据库中的所述声纹数据加载至所述声纹识别引擎的进程内存。

s223、将所述进程内存中的所述声纹数据平均分配至所述计算节点的至少两个cpu核。

其中,当主控节点接收到1:n声纹识别请求,将所述1:n声纹识别请求同时转发至所述至少两个计算节点的声纹识别引擎,声纹识别引擎利用openmp等并行计算框架再将本节点的嵌入式内存数据库里的向量集计算均分为绑定到多个cpu核上执行的更小向量集的并行计算,充分利用了现代计算机的多核cpu计算资源,从而降低了声纹识别的时间复杂性,进而提升声纹识别系统的处理性能。

相较于redis、mysql、mongodb等网络型数据库,采用嵌入式内存数据库直接在声纹识别引擎进程内进行全内存计算,避免了声纹库c/s网络访问模式带来的磁盘i/o、网络i/o、内存拷贝的开销。

需要说明的是,每一所述嵌入式内存数据库对应的声纹库的多副本保护能力由所述嵌入式内存数据库的副本复制能力来支持和保障。

请参阅图11,所述并行处理所述待识别声纹数据,得到声纹识别结果,包括:

s224、并行计算所述计算节点的至少两个cpu核的每一所述样本声纹特征向量与所述待识别声纹特征向量的相似度值。

s225、将所述相似度值放入对应的所述cpu核的待排序列表。

s226、根据预设规则,从所述待排序列表中筛选出所述计算节点的声纹识别结果。

由于判断两个声纹特征向量的相似性,本质上是计算两个特征向量的空间距离,因此,在本实施例中,每一cpu核将嵌入式内存数据库返回的的样本声纹数据反序列化转化为其内存中的向量数据结构。声纹识别引擎调用向量相似性计算函数计算待识别声纹特征向量与每一样本声纹特征向量的相似性,得到一个相似度值。然后,将该相似度值放入到所述cpu核的待排序列表,并且,每一cpu核顺序计算待识别声纹特征向量与每一样本声纹特征向量的相似性,直到分配至所述cpu核的声纹数据对应的样本声纹特征向量被全部计算完毕。最后,根据预设规则,从所述待排序列表中筛选出所述计算节点的声纹识别结果。

在一些实施例中,每一cpu核将嵌入式内存数据库返回的的样本声纹数据反序列化转化为其内存中的向量数据结构。声纹识别引擎调用向量相似性计算函数计算待识别声纹特征向量与每一样本声纹特征向量的相似性,得到一个相似度值。然后,根据预设规则,将符合条件的相似度值放入对应的所述cpu核的待排序列表,并且,每一cpu核顺序计算待识别声纹特征向量与每一样本声纹特征向量的相似性,直到分配至所述cpu核的声纹数据对应的样本声纹特征向量被全部计算完毕。

本发明实施例提供的应用于计算节点的一种基于声纹库的声纹识别方法,通过接收主控节点转发的1:n声纹识别请求,1:n声纹识别请求包括待识别声纹数据,n为声纹库的容量,根据1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至计算节点的至少两个cpu核,以并行处理待识别声纹数据,得到声纹识别结果。因此,本发明实施例通过将基于声纹库的串行nns计算进行一级分解至至少两个计算节点,再经过二级分解至每一计算节点的至少两个cpu核中进行并行nns计算,能够降低声纹识别的时间复杂性,进而提升声纹识别系统的处理性能;通过增加计算节点和/或cpu核的数量,使本发明实施例的声纹识别系统具有可扩展性。另外,通过采用嵌入式内存数据库在计算节点的内存中处理待识别声纹数据,避免了声纹库c/s网络访问模式带来的磁盘i/o、网络i/o、内存拷贝的开销。

请参阅图12,是本发明实施例提供的应用于计算节点的一种基于声纹库的声纹识别装置的装置示意图。如图12所示,所述基于声纹库的声纹识别装置600包括第四接收模块601和并行处理模块602。

所述第四接收模块601用于接收主控节点转发的1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量。

所述并行处理模块602用于根据所述1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果。

其中,所述并行处理模块602包括启动单元6021、加载单元6022、分配单元6023、计算单元6024、放入单元6025以及筛选单元6026。

所述启动单元6021用于启动所述计算节点的声纹识别引擎。

所述加载单元6022用于将所述声纹识别引擎对应的嵌入式内存数据库中的所述声纹数据加载至所述声纹识别引擎的进程内存。

所述分配单元6023用于将所述进程内存中的所述声纹数据平均分配至所述计算节点的至少两个cpu核。

所述计算单元6024用于并行计算所述计算节点的至少两个cpu核的每一所述样本声纹特征向量与所述待识别声纹特征向量的相似度值。

所述放入单元6025用于将所述相似度值放入对应的所述cpu核的待排序列表。

所述筛选单元6026用于根据预设规则,从所述待排序列表中筛选出所述计算节点的声纹识别结果。

值得说明的是,上述装置内的模块之间的信息交互、执行过程等内容,由于与本发明应用于计算节点的方法实施例基于同一构思,具体内容可参见本发明应用于计算节点的方法实施例中的叙述,此处不再赘述。

本发明实施例提供的应用于计算节点的一种基于声纹库的声纹识别装置,通过第四接收模块接收主控节点转发的1:n声纹识别请求,1:n声纹识别请求包括待识别声纹数据,n为声纹库的容量,并行处理模块根据1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至计算节点的至少两个cpu核,以并行处理待识别声纹数据,得到声纹识别结果。因此,本发明实施例通过将基于声纹库的串行nns计算进行一级分解至至少两个计算节点,再经过二级分解至每一计算节点的至少两个cpu核中进行并行nns计算,能够降低声纹识别的时间复杂性,进而提升声纹识别系统的处理性能;通过增加计算节点和/或cpu核的数量,使本发明实施例的声纹识别系统具有可扩展性。另外,通过采用嵌入式内存数据库在计算节点的内存中处理待识别声纹数据,避免了声纹库c/s网络访问模式带来的磁盘i/o、网络i/o、内存拷贝的开销。

本发明实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,可执行以上描述的图3至图6的方法步骤或图9至图11的方法步骤,实现图7至图8中的各模块的功能或图12中的各模块的功能。

本发明实施例还提供了一种计算机程序产品,包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使主控节点执行上述应用于主控节点的方法实施例中的基于声纹库的声纹识别方法,例如,执行以上描述的图3至图6的方法步骤,实现图7至图8中的各模块的功能;使计算节点执行上述应用于计算节点的方法实施例中的基于声纹库的声纹识别方法,例如,执行以上描述的图9至图11的方法步骤,实现图12中的各模块的功能。

需要说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。


技术特征:

1.一种基于声纹库的声纹识别方法,其特征在于,包括:

接收1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量;

转发所述1:n声纹识别请求至至少两个计算节点,以使每一所述计算节点根据所述1:n声纹识别请求,将所述计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果;

接收所述至少两个计算节点返回的所述声纹识别结果。

2.根据权利要求1所述的方法,其特征在于,每一所述计算节点的嵌入式内存数据库的容量等于所述声纹库的容量除以所述至少两个计算节点的个数。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

对所述至少两个计算节点返回的所述声纹识别结果进行合并排序处理;

将合并排序后的所述声纹识别结果发送给客户端。

4.根据权利要求1或3所述的方法,其特征在于,所述方法还包括:

接收声纹数据更新请求;

将待更新的声纹数据分发至目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库。

5.根据权利要求4所述的方法,其特征在于,所述将所述待更新的声纹数据分发至目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库,包括:

利用负载均衡策略,从所述至少两个计算节点中选取目标计算节点;

将所述待更新的声纹数据分发至所述目标计算节点,以使所述目标计算节点将所述待更新的声纹数据存储至对应的嵌入式内存数据库。

6.一种基于声纹库的声纹识别方法,其特征在于,包括:

接收主控节点转发的1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量;

根据所述1:n声纹识别请求,将计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果。

7.根据权利要求6所述的方法,其特征在于,所述将计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个cpu核,包括:

启动所述计算节点的声纹识别引擎;

将所述声纹识别引擎对应的嵌入式内存数据库中的所述声纹数据加载至所述声纹识别引擎的进程内存;

将所述进程内存中的所述声纹数据平均分配至所述计算节点的至少两个cpu核。

8.根据权利要求6或7所述的方法,其特征在于,一个所述声纹数据包括一个样本声纹特征向量和所述样本声纹特征向量对应的样本用户信息,所述待识别声纹数据包括待识别声纹特征向量和所述待识别声纹特征向量对应的待识别用户信息。

9.根据权利要求8所述的方法,其特征在于,所述并行处理所述待识别声纹数据,得到声纹识别结果,包括:

并行计算所述计算节点的至少两个cpu核的每一所述样本声纹特征向量与所述待识别声纹特征向量的相似度值;

将所述相似度值放入对应的所述cpu核的待排序列表;

根据预设规则,从所述待排序列表中筛选出所述计算节点的声纹识别结果。

10.一种主控节点,其特征在于,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-5任一项所述的基于声纹库的声纹识别方法。

11.一种计算节点,其特征在于,包括:

嵌入式内存数据库;

与所述嵌入式内存数据库通信连接的声纹识别引擎,包括至少两个cpu核,所述声纹识别引擎用于接收主控节点转发的1:n声纹识别请求,所述1:n声纹识别请求包括待识别声纹数据,n为所述声纹库的容量,根据所述1:n声纹识别请求,将所述嵌入式内存数据库存储的声纹数据分配至所述至少两个cpu核,以并行处理所述待识别声纹数据,得到声纹识别结果。

12.一种声纹识别系统,其特征在于,包括:

如权利要求10所述的主控节点;以及

与所述主控节点通信连接的至少两个如权利要求11所述的计算节点。

技术总结
本发明实施例涉及声纹识别技术领域,公开了一种基于声纹库的声纹识别方法、主控节点及计算节点。其中,应用于主控节点的基于声纹库的声纹识别方法包括:接收1:N声纹识别请求,所述1:N声纹识别请求包括待识别声纹数据,N为所述声纹库的容量;转发所述1:N声纹识别请求至至少两个计算节点,以使每一所述计算节点根据所述1:N声纹识别请求,将所述计算节点的嵌入式内存数据库存储的声纹数据分配至所述计算节点的至少两个CPU核,以并行处理所述待识别声纹数据,得到声纹识别结果;接收所述至少两个计算节点返回的所述声纹识别结果。本发明实施例能够降低声纹识别的时间复杂性,进而提升声纹识别系统的处理性能。

技术研发人员:郑立松
受保护的技术使用者:深圳市声扬科技有限公司
技术研发日:2020.01.10
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-35685.html

最新回复(0)