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

技术编号:17880991 阅读:74 留言:0更新日期:2018-05-06 02:15
本发明专利技术一种基于Android的声纹识别方法,运行在Android操作系统中,通过调用内置录音设备采集训练说话人音频并进行语音增强,训练时构建矢量量化模型的kd树以及高斯混合模型。识别时在矢量量化模型的kd树中搜索出与测试说话人声纹特征最接近的K个训练说话人后,利用高斯混合模型进行精确识别。本发明专利技术利用矢量量化模型的kd树不仅避免了遍历高斯混合模型库中的所有模型,增加了识别速度,而且利用矢量量化模型和高斯混合模型的二次识别增加了识别的准确度,具有很强的实用性、易用性和鲁棒性。

A sound pattern recognition method based on Android

A sound pattern recognition method based on Android is used in this invention, which runs in the Android operating system. By calling the built-in recording equipment to train the speaker's audio and enhance the voice, the KD tree and the Gauss hybrid model are constructed. When identifying the K training speaker which is closest to the voice pattern of the speaker in the KD tree of the vector quantization model, the Gauss hybrid model is used to accurately identify the speaker. The KD tree of the vector quantization model not only avoids all the models in the Gauss hybrid model library, but also increases the recognition speed, and increases the recognition accuracy by using the vector quantization model and the two recognition of the Gauss hybrid model. It has strong practicability, ease of use and robustness.

【技术实现步骤摘要】
一种基于Android的声纹识别方法(一)
:本专利技术一种基于Android的声纹识别方法,属于计算机
(二)
技术介绍
:在“无处不账户、无处不密码”的时代,人们常常因为遗忘或丢失密码而感到烦恼,声纹识别方法的出现无疑带来了更便捷、高效的服务方式,声纹特征可以“随身携带”,可随时随地进行身份认证。本专利技术基于Android操作系统,提取声纹特征,通过利用构造矢量量化模型的kd树(k-dimensionTree)以及高斯混合模型达到识别说话人的效果。本专利技术能提升搜索识别速度、精度,有很强的实用性、易用性和鲁棒性。(三)
技术实现思路
:本专利技术一种基于Android的声纹识别方法,提取出语音的梅尔频率倒谱系数、一阶差分梅尔频率倒谱系数、二阶差分梅尔频率倒谱系数、帧能量以及利用帧能量筛选有效特征后,构造训练说话人声纹特征的矢量量化模型kd树,建立声纹特征的高斯混合模型库,测试时先搜索出kd树中K个与声纹特征最相近的模型后,利用高斯混合模型在K个模型中进行精确识别,从而识别出说话人身份。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个码书,其中K<M,然后将该K个码书分别对应的K个训练说话人的声纹特征进行高斯混合模型的识别,在高斯混合模型识别的过程中,程序针对其中每个人的声纹特征,在高斯混合模型数据库中找到后验概率最大的模型,该模型对应的说话人即判断为测试说话人。2、根据1所示的声纹识别方法对应的声纹识别系统,包括如下模块:语音采集模块:硬件部分包括麦克风和声卡,麦克风负责语音的采集,而声卡则是用来对语音进行数字化转换;软件部分包括音频数据采集、自动回声消除、抑制噪声、自动增益控制和计时功能;声纹特征提取模块:包括语音预处理和特征提取两个子模块,输入是由语音采集模块录取的音频数据,训练阶段把特征送到模型训练模块进行处理,测试阶段把特征送到模型识别模块进行处理;模型训练模块:该模块包括训练语音的矢量量化模型、构建码字的kd树和训练语音的高斯混合模型;模型更新模块:该模块将新添加的训练说话人矢量量化模型插入到kd树中,并将其高斯混合模型添加到高斯混合模型数据库文件中;模型识别模块:该模块的输入是声纹特征提取模块的输出,而该模块的输出是测试说话人的姓名及其个人信息;数据库管理模块:负责管理训练说话人的姓名及其个人信息、模型参数以及语音文件,其中每个模型对应着每个语音文件,每个语音文件的命名是对应说话人的姓名,每个说话人的姓名在数据库中连接着其个人信息。(四)附图说明:图1、模型训练流程图;图2、模型识别流程图;图3、异步消息处理机制;图4、预处理流程图;图5、声纹特征提取流程图;图6、三角带通滤波器;图7、高斯混合模型建立流程图。(五)具体实施方式:下面结合附图,对本专利技术所述的技术方案作进一步阐述。本专利技术的软件程序主要包括模型训练和识别的算法实现以及客户端软件控制界面,其中算法部分主要包括对语音数据的分帧加窗、端点检测、预加重、特征提取和模型的训练、识别,训练和识别流程如图1、2所示。客户端软件控制界面主要用于用户对软件的操控。音频采集:主要用于采集音频数据、计时以及语音增强。其中音频采集部分程序调用AudioRecorder类实例来录入音频数据,音频数据录入完毕后程序为其编写wave格式头文件,并以说话人姓名命名该文件,存入语音库文件中。为了达到语音增强的效果,在采集音频的同时,程序通过调用AcousticEchoCanceler类实例、NoiseSuppressor类实例和AutomaticGainControl类实例进行自动回声消除、抑制噪声和自动增益控制,与此同时程序通过采用Android的异步消息处理机制实现计时功能,该机制流程图如图3所示;特征提取:主要包括预处理和本文档来自技高网...
一种基于Android的声纹识别方法

【技术保护点】
一种基于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个码书,其中K<M,然后将该K个码书分别对应的K个训练说话人的声纹特征进行高斯混合模型的识别,在高斯混合模型识别的过程中,程序针对其中每个人的声纹特征,在高斯混合模型数据库中找到后验概率最大的模型,该模型对应的说话人即判断为测试说话人。...

【技术特征摘要】
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算法进行高斯模型的参数估计,首先将聚类后的各参数—均值...

【专利技术属性】
技术研发人员:陈立江窦文韬张旭东
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1