一种基于DBSCAN算法的声纹识别方法与流程

文档序号:11954790阅读:475来源:国知局
一种基于DBSCAN算法的声纹识别方法与流程

本发明涉及一种基于DBSCAN算法的声纹识别方法,通过计算机对说话人进行识别,属于语音识别技术领域。



背景技术:

随着网络和通信的发展以及智能手机的普及,电子商务及移动支付迅速兴起。由于网络的不安全性因素,信息安全成了当今社会关注的焦点问题,身份认证作为信息安全的一种重要手段也越来越受到人们的重视。

目前使用最广泛的身份认证方式属于密码验证存取行为,此类认证方式存在着密码遗忘、易被破解等诸多问题,一旦被非法用户获取,将会对个人或单位造成巨大损失。因此人们试图寻找一种更为安全可靠的身份认证方式,而人体所固有的生物特征为此提供了更为便捷的途径。

人体有许多固有特征,比如指纹、虹膜等,这些生物识别技术已经得到了一定程度的开发和利用。声纹同样也是我们人类每个人都独有的特征,每个人的声音特点都是独一无二的,与指纹一样,声纹是说话人独一无二的语音特征,即使说出同一句话,在能量、频谱、语调等等方面都是不一样的。但是,在声纹识别领域目前的利用程度较低,声纹识别必将是生物识别领域的下一片蓝海。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于DBSCAN算法的声纹识别方法,该方法不需要很庞大的训练集,只需要经过筛选的训练语音作为训练集即可,识别准确率较高。

本发明为解决上述技术问题采用以下技术方案:

一种基于DBSCAN算法的声纹识别方法,包括如下步骤:

步骤1,获取检验语音和某说话人的训练集语音,训练集语音包含预设的偶数个训练语音,利用mel倒谱系数分别对训练集语音和检验语音进行语音特征提取,得到各自对应的语音特征向量;

步骤2,对步骤1得到的训练集语音的语音特征向量,利用基于余弦相似度的分组筛选方法进行筛选,当经过筛选后得到的语音特征向量的个数少于步骤1的预设值时,继续获取训练语音,并进行语音特征提取和筛选,直至最后得到的语音特征向量的个数满足步骤1的预设值;

步骤3,利用改进的DBSCAN算法对检验语音进行识别,在改进的DBSCAN算法中,利用距离参数计算检验语音与训练语音是否相似的阈值时,定义距离参数为利用区间估计计算该阈值时的置信区间的大小。

作为本发明的一种优选方案,所述步骤1的具体过程为:根据奈奎斯特采样定律对训练语音进行依次采样并存储,得到训练集语音;利用mel倒谱系数分别对训练集语音和检验语音进行语音特征提取,得到各自对应的特征系数,将特征系数矢量化,从而得到各自对应的语音特征向量。

作为本发明的一种优选方案,步骤2所述对步骤1得到的训练集语音的语音特征向量,利用基于余弦相似度的分组筛选方法进行筛选的具体过程为:将步骤1得到的训练集语音的语音特征向量按顺序标号,并以标号的奇偶分为两组,计算每组中各语音特征向量与其他语音特征向量的余弦相似度,并将余弦相似度转化为角度值,判断每组中各角度值与其他角度值之间的差值,当差值小于等于固定阈值时,则将该角度值对应的语音特征向量保留;否则,不保留。

作为本发明的一种优选方案,所述步骤3的具体过程为:利用检验语音的语音特征向量与步骤2得到的各训练语音的语音特征向量,计算检验语音与各训练语音的余弦相似度,并将余弦相似度转化为角度值;当判断检验语音与其中一条训练语音是否相似时,利用距离参数计算检验语音与该训练语音是否相似的阈值,该阈值表示为其中,Y表示阈值,a表示距离参数对应于标准正态分布的横坐标,μ、σ分别表示该训练语音与其他训练语音之间的余弦相似度对应的角度值的平均值和标准差,判断检验语音与该训练语音的余弦相似度对应的角度值是否小于等于该训练语音对应的阈值,如果是,则认为检验语音与该训练语音相似,否则不相似;当相似的训练语音个数大于等于设定阈值时,认为检验语音与训练语音的说话人匹配,否则不匹配。

作为本发明的一种优选方案,所述余弦相似度的计算公式为:

<mrow> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mi>&theta;</mi> <mo>=</mo> <mfrac> <mrow> <msubsup> <mi>&Sigma;</mi> <mn>1</mn> <mi>m</mi> </msubsup> <mrow> <mo>(</mo> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&times;</mo> <msub> <mi>B</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msqrt> <mrow> <msubsup> <mi>&Sigma;</mi> <mn>1</mn> <mi>m</mi> </msubsup> <msup> <msub> <mi>A</mi> <mi>i</mi> </msub> <mn>2</mn> </msup> </mrow> </msqrt> <mo>&times;</mo> <msqrt> <mrow> <msubsup> <mi>&Sigma;</mi> <mn>1</mn> <mi>m</mi> </msubsup> <msup> <msub> <mi>B</mi> <mi>i</mi> </msub> <mn>2</mn> </msup> </mrow> </msqrt> </mrow> </mfrac> <mo>,</mo> </mrow>

其中,Ai表示第一个语音特征向量第i维的数值,Bi表示第二个语音特征向量第i维的数值,θ表示要计算的两条语音之间的余弦相似度对应的角度值,m表示各语音特征向量的维度。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

1、本发明基于DBSCAN算法的声纹识别方法,不需要很庞大的训练集,只需要一些经过筛选的训练语音作为训练集即可,并且利用这些训练语音的分布特性对检验语音进行判别。

2、本发明基于DBSCAN算法的声纹识别方法,在实际使用过程中,灵活方便,使用快捷,具有十分良好的用户体验和较高的识别率。

附图说明

图1是本发明基于DBSCAN算法的声纹识别方法的整体架构图。

图2是本发明中DBSCAN算法的一般模型图。

图3是实施例中采用本发明基于DBSCAN算法的声纹识别方法进行识别的流程图。

图4是本发明中利用正态分布的区间估计计算阈值的示意图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

一种基于DBSCAN算法的声纹识别方法,包括:语音特征的提取,训练集语音的筛选,对检验语音的判断算法。所述语音特征提取采用mel倒谱系数进行特征提取;训练语音的筛选采用“基于余弦相似度的分组筛选”方法进行筛选;对检验语音的判断利用改进的DBSCAN算法进行判断。

进一步地,所述语音特征提取过程中,根据经典的奈奎斯特采样定律,以高于两倍普通人所能发出的声音的最高频率进行采样并存储,并且利用经典的mel倒谱系数对所获取的语音信号进行特征提取,并把所获得一系列特征系数矢量化,得到一组多维向量。

进一步地,所述训练语音筛选,一共筛选2n个语音片段数据。筛选方法采用“基于余弦相似度的分组筛选”方法。首先,我们需要对训练集语音之间的相似度进行评价,采用余弦相似度的方法,计算两组语音信号之间的相似度,并且转化成角度值,角度值约束在[0,180]度。

<mrow> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mi>&theta;</mi> <mo>=</mo> <mfrac> <mrow> <msubsup> <mi>&Sigma;</mi> <mn>1</mn> <mi>m</mi> </msubsup> <mrow> <mo>(</mo> <msub> <mi>A</mi> <mi>i</mi> </msub> <mo>&times;</mo> <msub> <mi>B</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msqrt> <mrow> <msubsup> <mi>&Sigma;</mi> <mn>1</mn> <mi>m</mi> </msubsup> <msup> <msub> <mi>A</mi> <mi>i</mi> </msub> <mn>2</mn> </msup> </mrow> </msqrt> <mo>&times;</mo> <msqrt> <mrow> <msubsup> <mi>&Sigma;</mi> <mn>1</mn> <mi>m</mi> </msubsup> <msup> <msub> <mi>B</mi> <mi>i</mi> </msub> <mn>2</mn> </msup> </mrow> </msqrt> </mrow> </mfrac> <mo>,</mo> </mrow>

其中,Ai表示第一个语音特征向量第i维的数值,Bi表示第二个语音特征向量第i维的数值,θ表示两条语音之间的余弦相似角度,m表示各语音特征向量的维度。

进一步地,对这些语音片段按顺序标号,然后以标号的奇偶性分为两组,以固定阈值12度来约束组内的训练语音,要求每个语音片段与其他语音片段的余弦相似度不能超过12度,进而排除组内的离群点。12度为实验的经验值,实际应用中这个值可以有所变化。如果组内的训练集语音不能满足这个条件,则需要重新训练,直到组内的语音能够满足这个条件。如图1所示,训练集语音的筛选对应于系统框架图核心算法层里的语音筛选模块,并且筛选工作做完后,把筛选后的训练集语音存储在图1中的数据层中。如图3所示,给出了n=3时,对训练集语音进行训练的方法。训练集语音数目里的n可以为任意数字,但数字太小误差较大,数字太大训练集的获取比较麻烦,适当的大小较为合适。

“基于余弦相似度的分组筛选”方法通过对训练集进行分组,即可以让训练集组间具有一定的差异性;组内通过固定阈值的约束,可以把过分离群的点去除,保证训练集数据一定的一致性。利用基于余弦相似度的分组筛选方法筛选之后的训练集语音,基本能够覆盖说话人语音的大部分特征,具有较高的代表性。

进一步地,在对检验语音的识别判断上,采用改进的DBCSAN算法。如图1所示,需要先将数据层里的训练集语音读取出来,然后将检验语音与2n条训练语音片段进行比对,如果与大于等于n条(也可以是其他数值)语音片段相似则认为该检验语音是训练语音说话人发出的,即比对成功。

其中改进的DBSCAN算法,把距离参数Eps重新定义为利用区间估计计算阈值时的置信区间的大小,如上文所述,该大小可选。同时我们默认特定说话人所发出的语音为同一个簇族,如果检验语音在该簇族的核心区和边界上,则认为检验语音是该说话人所发出的,否则,则认为该检验语音不是该说话人所发出的。如图2所示,展示了DBSCAN算法的一般思想。图2中取Eps=1,并且设定对某个特定的点,在Eps距离范围内有0~2个近邻点,则这个点为噪声点;有3~4个近邻点,则这个点是边界点;有5个近邻点及以上,则这个点为核心点。

进一步地,判断一条语音是否和另一条语音是否相似,仍采用余弦相似度的方法计算出两者的余弦角度,当这个角度小于某个阈值时认为这两条语音是相似的,反之不相似。通过不断实验,发现一个说话人某个语音片段和其他语音片段之间的余弦相似角度的分布近似满足正态分布特性,所以在计算阈值的时候,采用正态分布的单边估计进行计算。

首先,计算出某条训练语音和别的训练语音之间的余弦相似角度,并计算出这些角度值的平均值和方差,得到一个正态分布的概率分布密度函数。

<mrow> <mi>f</mi> <mrow> <mo>(</mo> <mi>&theta;</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <msqrt> <mrow> <mn>2</mn> <mi>&pi;</mi> </mrow> </msqrt> <mi>&sigma;</mi> </mrow> </mfrac> <mi>exp</mi> <mrow> <mo>(</mo> <mo>-</mo> <mfrac> <msup> <mrow> <mo>(</mo> <mi>&theta;</mi> <mo>-</mo> <mi>&mu;</mi> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mrow> <mn>2</mn> <msup> <mi>&sigma;</mi> <mn>2</mn> </msup> </mrow> </mfrac> <mo>)</mo> </mrow> <mo>,</mo> </mrow>

其中,μ表示上述一系列角度值的平均值,σ表示上述一系列角度值的标准差,f(θ)表示θ的概率密度。

进一步地,如图4所示,利用正态分布的单边区间估计,得到一个上限阈值。通过多次试验,发现这些语音的正态分布概率密度函数在[-∞,0]区间内的概率近似为零。首先查标准正态分布的概率分布表,得到左边区间为97.5%的点为1.96,然后再把这个点转化为本项目的非标准正态分布上对应的点:

<mrow> <mi>Y</mi> <mo>=</mo> <mi>a</mi> <mo>*</mo> <mi>&sigma;</mi> <mo>/</mo> <msqrt> <mi>n</mi> </msqrt> <mo>+</mo> <mi>&mu;</mi> <mo>,</mo> </mrow>

其中,Y表示所计算出的判断是否相似的阈值,a表示该置信度对应于标准正态分布的横坐标,μ与σ的含义与前文一致。此处Y阈值的选取上,标准正态分布可以选择100%处的点进行转化,也可以选择90%处的点进行转化,但是拒绝识别率和错误识别率存在差异。如图3所示,给出了n=3时,以1号语音为例时,对应于1号语音的新的阈值的计算流程。

进一步地,某条检验语音和该训练语音的角度值设为X,我们用计算出来的该训练语音的Y值与X比较,如果X≤Y,则认为检验语音与该训练语音是相似的,否则检验语音和该训练语音不相似。如果一共有n及以上条训练语音和检验语音相似,则认为检验语音和训练语音的说话人是匹配的,否则不匹配。

如图3所示,我们用sum进行计数近邻点个数。当sum=0~2时,这个检验语音为噪声点;当sum=3~4,这个检验语音为边界点;当sum=5~6时,这个检验语音为核心点。我们取边界点和核心点都为比对成功。根据具体情况不同,不一定需要n及以上条训练语音和检验语音相似才认为比对成功,可以为其他数值。其中数值越大,错误识别率越低,拒绝识别识别率越高。

本发明基于DBSCAN算法的声纹识别方法可对应如图1所示的架构图,主要分为三个层次,包括交互层、核心算法层和数据层。

其中交互层包括训练集语音录入、检验语音录入和输出结果显示三个模块。前两个模块主要是完成训练集语音和检验语音的采样和录入工作。输出结果显示模块用来输出显示训练集语音的筛选结果,包括是否筛选成功,如果筛选不成功,用户需要把第几号语音重新录制等信息。同时该模块还要把核心算法层的最终的语音识别的结果显示出来,判别成功与否等信息。

核心算法层包括特征提取、语音筛选、阈值计算、判别算法四个模块。特征提取模块用来提取由交互层录入的语音的mel倒谱系数并且进行矢量化操作。语音筛选模块采用“基于余弦相似度的分组筛选”的方法,用来对训练集语音进行筛选,并将筛选结果交由交互层显示,如果筛选成功,将筛选后的语音送入数据层进行存储。阈值计算模块从数据层读取训练集语音,并且利用正太分布的单边区间估计重新计算阈值。判别模块利用阈值计算模块得到的阈值,将检验语音与训练集语音进行比对,采用改进的DBSCAN算法,并将判别的结果交由交互层进行显示。

数据层,主要是用来存储核心算法层筛选出来的训练集语音,用来与核心算法层进行数据的交互。

如图3所示,是取n为3,以第1号训练语音为主体,判断检验语音和第1号语音是否相似的系统流程图。

首先确定训练语音的大小,如取n=3,即需要说话人Z首先录入一共6条相同的语音片段,如“你好”,并按照先后顺序标号。然后按照标号的奇偶性进行分组,其中1,3,5为一组,2,4,6为一组。以奇数组为例,如果组内两两之间的余弦相似角度都大于12,则认为该组数据无效,需要重新录制,否则需要分别对每个语音进行判断,某条语音与其他两条语音之间的余弦相似角度均小于等于12,则认为该条语音数据是合格的,否则需要重新录制,直至满足要求为止。

以1号语音为例,用1号语音分别与2,3,4,5,6号语音进行余弦相似度的计算得到5个角度值,计算出这组数据的平均值和标准差,从而得到说话人每次说“你好”与1号语音之间的角度分布。然后利用该概率分布密度函数,做左边区间估计,置信区间可以为90%、95%、100%(可选),得到一个角度阈值Y。

用检验语音和1号语音做相似度计算,得到一个角度值X,如果X≤Y,我们就认为检验语音和1号语音是相似的,否则不相似。

如果检验语音和1,2,3,4,5,6号语音一共有超过n条(这里预设阈值为n,也可以是其他数值)语音相似,则认为该训练语音是说话人Z所发出的语音,反之不是说话人Z所发出的。如果判断结果认为是说话人Z所发出的,则系统返回比对成功,否则系统返回比对失败。训练语音的录入只需要进行一次,不需要每次进行比对前都录入一遍训练语音。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

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