首页 / 专利库 / 信号处理 / 滤波器组 / 一种基于Android的声纹识别方法

一种基于Android的声纹识别方法

阅读:741发布:2024-01-12

专利汇可以提供一种基于Android的声纹识别方法专利检索,专利查询,专利分析的服务。并且本 发明 一种基于Android的声纹识别方法,运行在Android 操作系统 中,通过调用内置录音设备采集训练说话人音频并进行语音增强,训练时构建矢量量化模型的kd树以及高斯混合模型。识别时在矢量量化模型的kd树中搜索出与测试说话人声纹特征最接近的K个训练说话人后,利用高斯混合模型进行精确识别。本发明利用矢量量化模型的kd树不仅避免了遍历高斯混合模型库中的所有模型,增加了识别速度,而且利用矢量量化模型和高斯混合模型的二次识别增加了识别的准确度,具有很强的实用性、易用性和鲁棒性。,下面是一种基于Android的声纹识别方法专利的具体信息内容。

1.一种基于Android的声纹识别方法,该方法步骤如下:
步骤1:利用AudioRecorder接口采集音频数据,采用单声道录音,设置采样频率
22050HZ,采取脉冲编码调制,每个采样点量化位数16,同时通过调用
AcousticEchoCanceler类实例、NoiseSuppressor类实例和AutomaticGainControl类实例进行自动回声消除、抑制噪声和自动增益控制,达到语音增强的效果,同时通过Android的异步消息处理机制实现子线程更新UI并实现计时功能,在获取音频裸数据的同时,为其编写wave格式的头文件后存入相应的训练说话人语音库文件夹中,录音结束后,软件界面弹出重命名窗口,用户输入对应训练说话人的姓名作为文件名;
步骤2:当训练说话人语音库采集完毕后,对该库中所有音频文件进行预处理,首先进行分操作,设置分帧帧长为16毫秒,帧移为8毫秒;当分帧操作完成后,利用双限法进行端点检测工作,由于步骤1中语音增强效果理想,设置低能量阈值为0.1,高能量阈值为1,低过零率阈值为0.01,高过零率阈值为10,语音段中最长静音时长为12帧,即语音段的帧能量和过零率同时小于低能量阈值和低过零率阈值的时长不能超过12帧,最短语音时长为10帧,即起始语音段的帧能量大于低帧能量阈值或过零率大于低过零率阈值的时长不能短于
10帧;当端点检测完成后,获取语音段信号,为每帧信号加上汉明窗;当加窗操作完成后,为每帧语音段信号进行预加重操作,弥补高频分量的损失,本方法设置预加重系数为0.93;
步骤3:当预处理完成后,本方法提取梅尔频率倒谱系数,设置三带通滤波器个数为
40,每帧提取前12维系数;当提取梅尔频率倒谱系数完成后,提取前1阶和2阶12维差分梅尔频率倒谱系数;当提取完成差分特征后,淘汰对应帧能量小于1和大于10的特征向量,消除说话人声音音量过大或过小而产生的识别误差;
步骤4:当完成特征提取后,训练其矢量量化模型,生成代表该说话人的码书,采用构造平衡kd树的算法,以所有训练说话人码书中的码字构建kd树,每个码字作为该树中的一个结点而存在;
步骤5:同时,程序在另一线程中利用k均值聚类算法将特征矢量进行聚类,分类数为
16,该方法将k均值聚类过程重复进行10次后,分别计算每次聚类后的总类内方差,选择总类内方差最小的一次作为最终结果;当完成聚类操作后,利用EM算法进行高斯模型的参数估计,首先将聚类后的各参数—均值、方差和权重系数作为高斯混合模型的初始参数,通过EM算法的参数重估公式进行各项参数的重估,在重估过程中计算似然函数值的对数值的改变量,当该改变量小于阈值0.01时,即判定为收敛,记录此时的均值、方差和权重系数,然后将该三项参数与抓取的该语音文件名即训练说话人姓名存入说话人模型类中,并将该说话人模型类实例存入模型动态数组中;当模型动态数组中的内存大小即模型类实例的个数,等于说话人个数时,表明所有语音文件全部被训练完毕,然后程序将模型动态数组进行序列化操作,其中的各个模型类实例转换为字节序列,然后将该序列存入高斯混合模型数据库文件,训练工作即完毕;
步骤6:当高斯混合模型数据库文件建立完成后,即可进行测试工作,录取测试说话人音频数据后,按照步骤2、3提取测试说话人的声纹特征向量集,在特征向量集中选取一个特征向量,在步骤4生成的kd树中,找到与该特征向量的欧式距离最近的M个码字,并查找该M个码字分别对应的码书,重复上述步骤,直到遍历完测试特征向量集,然后找出被查找次数最多的K个码书,其中K2.根据权利要求1所示的声纹识别方法对应的声纹识别系统,包括如下模
语音采集模块:硬件部分包括麦克和声卡,麦克风负责语音的采集,而声卡则是用来对语音进行数字化转换;软件部分包括音频数据采集、自动回声消除、抑制噪声、自动增益控制和计时功能;
声纹特征提取模块:包括语音预处理和特征提取两个子模块,输入是由语音采集模块录取的音频数据,训练阶段把特征送到模型训练模块进行处理,测试阶段把特征送到模型识别模块进行处理;
模型训练模块:该模块包括训练语音的矢量量化模型、构建码字的kd树和训练语音的高斯混合模型;
模型更新模块:该模块将新添加的训练说话人矢量量化模型插入到kd树中,并将其高斯混合模型添加到高斯混合模型数据库文件中;
模型识别模块:该模块的输入是声纹特征提取模块的输出,而该模块的输出是测试说话人的姓名及其个人信息;
数据库管理模块:负责管理训练说话人的姓名及其个人信息、模型参数以及语音文件,其中每个模型对应着每个语音文件,每个语音文件的命名是对应说话人的姓名,每个说话人的姓名在数据库中连接着其个人信息。

说明书全文

一种基于Android的声纹识别方法

(一)技术领域:

[0001] 本发明一种基于Android的声纹识别方法,属于计算机技术领域。(二)背景技术:
[0002] 在“无处不账户、无处不密码”的时代,人们常常因为遗忘或丢失密码而感 到烦恼,声纹识别方法的出现无疑带来了更便捷、高效的服务方式,声纹特征可 以“随身携带”,可随时随地进行身份认证。本发明基于Android操作系统,提 取声纹特征,通过利用构造矢量量化模型的kd树(k-dimension Tree)以及高斯 混合模型达到识别说话人的效果。本发明能提升搜索识别速度、精度,有很强的 实用性、易用性和鲁棒性。(三)发明内容:
[0003] 本发明一种基于Android的声纹识别方法,提取出语音的梅尔频率倒谱系数、 一阶差分梅尔频率倒谱系数、二阶差分梅尔频率倒谱系数、能量以及利用帧能 量筛选有效特征后,构造训练说话人声纹特征的矢量量化模型kd树,建立声纹 特征的高斯混合模型库,测试时先搜索出kd树中K个与声纹特征最相近的模型 后,利用高斯混合模型在K个模型中进行精确识别,从而识别出说话人身份。
[0004] 1、一种基于Android的声纹识别方法,该方法步骤如下:
[0005] 步骤1:利用AudioRecorder接口采集音频数据,采用单声道录音,设置采 样频率22050HZ,采取脉冲编码调制,每个采样点量化位数16,同时通过调用 
AcousticEchoCanceler类实例、NoiseSuppressor类实例和AutomaticGainControl 类实例进行自动回声消除、抑制噪声和自动增益控制,达到语音增强的效果;同 时通过Android的异步消息处理机制实现子线程更新UI并实现计时功能;在获 取音频裸数据的同时,为其编写wave格式的头文件后存入相应的训练说话人语 音库文件夹中,录音结束后,软件界面弹出重命名窗口,用户输入对应训练说话 人的姓名作为文件名;
[0006] 步骤2:当训练说话人语音库采集完毕后,对该库中所有音频文件进行预处 理,首先进行分帧操作,设置分帧帧长为16毫秒,帧移为8毫秒;当分帧操作 完成后,利用双限法进行端点检测工作,由于步骤1中语音增强效果理想,设 置低能量阈值为0.1,高能量阈值为1,低过零率阈值为0.01,高过零率阈值为 10,语音段中最长静音时长为12帧,即语音段的帧能量和过零率同时小于低能 量阈值和低过零率阈值的时长不能超过12帧,最短语音时长为10帧,即起始语 音段的帧能量大于低帧能量阈值或过零率大于过零率阈值的时长不能短于10帧; 当端点检测完成后,获取语音段信号,为每帧信号加上汉明窗;当加窗操作完成 后,为每帧语音段信号进行预加重操作,弥补高频分量的损失,本方法设置预加 重系数为0.93;
[0007] 步骤3:当预处理完成后,本方法取梅尔频率倒谱系数,设置三带通滤波 器个数为40,每帧提取前12维系数;当提取梅尔频率倒谱系数完成后,提取前 1阶和2阶12维差分梅尔频率倒谱系数;当提取完成差分特征后,淘汰对应帧 能量小于1和大于10的特征向量,消除说话人声音音量过大或过小而产生的识 别误差;
[0008] 步骤4:当完成特征提取后,训练其矢量量化模型,生成代表该说话人的码 书,采用构造平衡kd树的算法,以所有训练说话人码书中的码字构建kd树,每 个码字作为该树中的一个结点而存在;
[0009] 步骤5:同时,程序在另一线程中利用k均值聚类算法将特征矢量进行聚类, 分类数为16,该方法将k均值聚类过程重复进行10次后,分别计算每次聚类后 的总类内方差,选择总类内方差最小的一次作为最终结果;当完成聚类操作后, 利用EM算法进行高斯模型的参数估计,首先将聚类后的各参数—均值、方差和 权重系数作为高斯混合模型的初始参数,通过EM算法的参数重估公式进行各项 参数的重估,在重估过程中计算似然函数值的对数值的改变量,当该改变量小于 阈值0.01时,即判定为收敛,记录此时的均值、方差和权重系数,然后该三项 参数与抓取的该语音文件名即训练说话人姓名存入说话人模型类中,并将该说话 人模型类实例存入模型动态数组中;当模型动态数组中的内存大小即模型类实例 的个数,等于说话人个数时,表明所有语音文件全部被训练完毕,然后程序将模 型动态数组进行序列化操作,其中的各个模型类实例转换为字节序列,然后将该 序列存入高斯混合模型数据库文件,训练工作即完毕;
[0010] 步骤6:当高斯混合模型数据库文件建立完成后,即可进行测试工作,录取 测试说话人音频数据后,按照步骤2、3提取测试说话人的声纹特征向量集,在 特征向量集中选取一个特征向量,在步骤4生成的kd树中,找到与该特征向量 的欧式距离最近的M个码字,并查找该M个码字分别对应的码书,重复上述步 骤,直到遍历完测试特征向量集;然后找出被查找次数最多的K个码书,其中 K
[0011] 2、根据1所示的声纹识别方法对应的声纹识别系统,包括如下模
[0012] 语音采集模块:硬件部分包括麦克和声卡,麦克风负责语音的采集,而声 卡则是用来对语音进行数字化转换;软件部分包括音频数据采集、自动回声消除、 抑制噪声、自动增益控制和计时功能;
[0013] 声纹特征提取模块:包括语音预处理和特征提取两个子模块,输入是由语音 采集模块录取的音频数据,训练阶段把特征送到模型训练模块进行处理,测试阶 段把特征送到模型识别模块进行处理;
[0014] 模型训练模块:该模块包括训练语音的矢量量化模型、构建码字的kd树和 训练语音的高斯混合模型;
[0015] 模型更新模块:该模块将新添加的训练说话人矢量量化模型插入到kd树中, 并将其高斯混合模型添加到高斯混合模型数据库文件中;
[0016] 模型识别模块:该模块的输入是声纹特征提取模块的输出,而该模块的输出 是测试说话人的姓名及其个人信息;
[0017] 数据库管理模块:负责管理训练说话人的姓名及其个人信息、模型参数以及 语音文件,其中每个模型对应着每个语音文件,每个语音文件的命名是对应说话 人的姓名,每个说话人的姓名在数据库中连接着其个人信息。(四)附图说明:
[0018] 图1、模型训练流程图
[0019] 图2、模型识别流程图;
[0020] 图3、异步消息处理机制;
[0021] 图4、预处理流程图;
[0022] 图5、声纹特征提取流程图;
[0023] 图6、三角带通滤波器
[0024] 图7、高斯混合模型建立流程图。(五)具体实施方式:
[0025] 下面结合附图,对本发明所述的技术方案作进一步阐述。
[0026] 本发明的软件程序主要包括模型训练和识别的算法实现以及客户端软件控 制界面,其中算法部分主要包括对语音数据的分帧加窗、端点检测、预加重、特 征提取和模型的训练、识别,训练和识别流程如图1、2所示。客户端软件控制 界面主要用于用户对软件的操控。
[0027] 音频采集:主要用于采集音频数据、计时以及语音增强。其中音频采集部分 程序调用AudioRecorder类实例来录入音频数据,音频数据录入完毕后程序为其 编写wave格式头文件,并以说话人姓名命名该文件,存入语音库文件中。为了 达到语音增强的效果,在采集音频的同时,程序通过调用AcousticEchoCanceler 类实例、NoiseSuppressor类实例和AutomaticGainControl类实例进行自动回声消 除、抑制噪声和自动增益控制,与此同时程序通过采用Android的异步消息处理 机制实现计时功能,该机制流程图如图3所示;
[0028] 特征提取:主要包括预处理和特征提取的算法实现,预处理部分如图4所示, 首先对音频进行分帧操作,使其具有相对平稳的特性后,便可对其进行部分数字 化处理。对获取的音频进行端点检测工作,以确定语音段所在位置,计算当前帧 的过零率和帧能量,如果两个参数至少有一个参数超过了所设定的阈值,若持续 时间足够长,则记当前帧为起点,否则,跳到下一帧进行计算;如果两个参数均 小于所设定的阈值,若持续时间足够长,则记为终点,否则,跳到下一帧进行计 算。确定语音段的起始帧和终止帧后,为每帧数据加汉明窗以保证帧与帧之间的 连续性,进行预加重工作以提升其高频分量。特征提取部分如图5所示,当预处 理完成后,程序进行特征的提取和筛选工作。程序遍历所有帧的数据后,筛选出 帧能量在正常值范围内的帧数据,对筛选过后的每帧数据进行FFT变换后,将该 频谱进行平方处理,获得其能量谱。同时,程序进行三角带通滤波器的设计计算 工作,实验观测发现人就像一组滤波器一样,它只是有选择性的关注某些频率 信号。但是这些滤波器在频率轴上的分布却不是统一的,低频区域分布密集,高 频区域分布稀疏,如图6所示。该三角带通滤波器组的设计步骤为:
[0029] (1)确定语音信号的最低频率和最高频率以及Mel滤波器的个数;
[0030] (2)计算最低和最高频率所对应的Mel频率;
[0031] (3)由于滤波器中心频率在Mel频率轴上等间隔分布,计算相邻两个Mel滤 波器中心频率的距离;
[0032] (4)将各个Mel中心频率转换成实际频率,计算各频率点所对应的FFT下标。
[0033] (5)根据公式:
[0034]
[0035] 计算三角带通滤波器组的幅度值。其中,f(m)表示第m个中心频率点所对应的 下标,Hm表示第m个滤波器。假设o(m)、c(m)和h(m)分别是第m个三角滤波 器的下限频率、中心频率和上限频率,则相邻的滤波器有:
[0036] c(m)=h(m-1)=o(m+1)
[0037] 当带通滤波器组设计完成后,利用滤波器组过滤每帧的能量谱,然后将结果取对 数后进行离散余弦变换,输出结果即为梅尔频率倒谱系数,然后利用梅尔频率倒 谱系数计算一阶和二阶差分梅尔频率倒谱系数,计算式如下:
[0038]
[0039] 其中,t表示第t个差分系数,N一般取值为2,计算一阶差分时c对应的是MFCC, 计算二阶差分时c对应的是一阶差分MFCC,此后各阶差分都是基于上一阶差分 计算的。本方法提取的是一阶差分和二阶差分,由于12维以后的参数幅值基本 上趋于零,所以只需要前12维参数即可。最后,程序在每帧特征向量最后一维 加入每帧能量值作为一种声纹特征,并淘汰帧能量在1到10之外的特征向量。
[0040] 矢量量化模型kd树的构建:当获得训练说话人语音特征向量集后,训练其 矢量量化模型,按照构建平衡kd树的流程将训练模型后获得的所有码书中的码 字构建出平衡kd树,所有的码字代表kd树中的一个结点。
[0041] 高斯混合模型的训练:该算法流程如图7所示,程序将获得的训练说话人声 纹特征矢量利用K均值聚类算法进行分类,每类的均值、方差作为高斯混合模 型的初始均值和方差,将每类中向量个数占总体特征向量个数的比例作为高斯混 合模型的初始权重,并将初始分类数作为高斯混合模型的混合度,然后利用EM 算法对模型的均值、方差和权重进行迭代运算,直到收敛。
[0042] 矢量量化模型kd树的搜索:当获得测试说话人特征向量集后,在其中任意 选取一个特征向量,按照kd树的最近邻搜索算法搜索出M个与该特征向量最相 近的码字,分别查找其对应的码书。遍历特征向量集中的所有特征向量,重复上 述步骤后,挑选出K个被查找次数最多的码书,其中K
[0043] 高斯混合模型识别:当搜索出与该测试说话人最接近的K个训练说话人后, 在高斯混合模型库中找到该K个训练说话人的高斯混合模型,然后在该K个模 型参数中找到模型参数λi,使得测试说话人的特征矢量组X有最大后验概率 P(λi|X),该模型参数λi所对应的训练说话人即判定为测试说话人。
[0044] 根据贝叶斯公式:
[0045]
[0046] 又由于P(λi)是在模型库中选出第i个模型的概率,所以
[0047]
[0048] 而P(X)是测试说话人的概率,它是一个确定的常数,对于所有测试者都相 等,因此,最大的后验概率即对应最大的P(X|λi),为了减小计算复杂度,通常将 其取对数,如下所示:
[0049]
[0050]
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈