一种基于Kaldi的中文语音识别声学模型构建方法与流程
本发明属于语音识别技术领域,特别涉及一种基于kaldi的中文语音识别声学模型构建方法。
背景技术:
语音识别(automaticspeechrecognition,asr)所要解决的问题是让计算机能够"听懂"人类的语音,将语音转化成文本。语音识别是实现智能的人机交互的前沿阵地,是完全机器翻译,自然语言理解等的前提条件。近年来随着大数据时代的到来,以及深度神经网络在语音识别中的应用,语音识别系统的性能获得了显著的提升。语音识别也逐步走向实用化和产品化,越来越多的语音识别智能软件和应用开始走入大家的日常生活,例如语音输入法,智能语音助手,车载语音交互系统等等。
语音识别—通过直接人机语音对话方式即对人类语音的词汇语法的分解,并将内容转换为计算机可读的输入,例如按键、二进制编码或字符序列。思维是人脑的机能,是对外部现实的反映;语言则是现实思维、巩固和传达思维成果即思想的工具。
语音识别的目的是对给定的波形序列,可以得到相应的单词或者字符序列。因此语音识别可以被看作是一个信道解码或者模式分类问题。统计建模是目前主流的语音识别方法。基于统计建模框架,对于给定语音波形序列o,我们可以采用贝叶斯决策的最大后验概率(maximumaposteriori,map)估计得到最优的输出序列w*。其中条件概率p(o|w)表示模型生成观察序列的概率,对应语音识别系统的声学模型(acousticmodel,am)。
声学模型的任务是计算条件概率p(o|w),即给模型产生语音波形的概率。声学模型是语音识别系统的重要组成部分,它占据着语音识别大部分的计算开销,决定着语音识别系统的性能。
技术实现要素:
本发明的目的是提供一种基于kaldi的中文语音识别声学模型构建方法,基于网络爬虫收集的文本材料,设计用于语音识别的文本语料库,并通过手机app采集语音语料。基于kaldi语音识别工具包,训练声学模型,并与语言模型结合,检验声学模型的性能。
为实现本发明的目的,本发明提供的一种基于kaldi的中文语音识别声学模型构建方法,包含以下步骤:
步骤一:获得语料集的音频集和对应的文字集;
步骤二:将获得的文字集格式化;
步骤三:从音频集中提取声学特征;
步骤四:单音素训练;
步骤五:基于高斯混合模型-隐马尔科夫模型和深度神经网络-隐马尔科夫模型的框架,进行如下动作:
5.1将音频集根据声学模型对齐;
5.2训练三音素模型;
5.3根据声学模型重新对齐音频&重新训练三音素模型。
其中,步骤五中5.3具体包括如下步骤:
重复上述5.1和5.2步骤,并加入额外更精细的三音素模型训练,通常包括隐含狄利克雷分布、最大似然准则mllt变换以及说话人自适应训练。
与现有技术相比,本发明的有益效果为,
在对基于kaldi的中文语音识别声学模型的构建过程中,通过以下测试:单音素训练monophone、基于单音素的三因素训练(tri1)、基于三音素的三音素测试(tri2)、对tri2进行隐含狄利克雷分布(latentdirichletallocation,lda)+最大似然线性变换(maximumlikelihoodlineartransformation,mllt)变换(tri3)、对tri3进行说话人自适应训练(speakeradaptivetraining,以下简称sat)处理(tri4)、对tri4进行quick处理(tri5),得到训练方式对错误率的影响及其规律。
通过实验效果可以看出,在进行单音素训练的多次测试中,进行了参数配置、文件准备、初始化单音素流、编译生成训练网络、对齐数据、迭代处理后,测试结果中的词错误率和句错误率随着测试的进行越来越低。因为在进行测试的过程中,也使用测试集对生成的模型进行了进一步训练,所以的到的结果越来越好。
在进行基于单音素的三音素训练的多次测试中,结果中的词错误率和句错误率随着测试的进行越来越低。因为在进行测试的过程中,也使用测试集对生成的模型进行了进一步训练,所以的到的结果越来越好。
在进行基于三音素的三音素训练的多次测试中,结果中的词错误率和句错误率随着测试的进行越来越低。因为在进行测试的过程中,也使用测试集对生成的模型进行了进一步训练,所以得到的结果越来越好。
在进行隐含狄利克雷分布(latentdirichletallocation,lda)+最大似然线性变换(maximumlikelihoodlineartransformation,mllt)训练的多次测试中,结果中的词错误率和句错误率随着测试的进行越来越低,得到的结果越来越好。
在进行说话人自适应训练(speakeradaptivetraining,以下简称sat)处理训练的多次测试中,结果中的词错误率和句错误率随着测试的进行越来越低。因为在进行测试的过程中,也使用测试集对生成的模型进行了进一步训练,所以的到的结果越来越好。
在进行quick处理训练的多次测试中,结果中的词错误率和句错误率随着测试的进行越来越低。因为在进行测试的过程中,也使用测试集对生成的模型进行了进一步训练,所以的到的结果越来越好。
词错误率(worderrorrate,wer)是在语音识别中常用的词错误率,通过插入词语、删除词语、词语替换等方式让识别的次序与标准次序相同,操作的词语数量与标准次序词语数量的比值即为词错误率(worderrorrate,wer)。当一个句子里存在一个词错误的时候,这个句子就是错误的,错误的句子数与总句子数的比值就是句子错误率,也就是句错误率(sentenceerrorrate,ser)。
从实验结果图可以看出,词错误率(worderrorrate,wer)与句错误率(sentenceerrorrate,ser)成正相关,词错误率越高,则句错误率越高。随着训练深度的增加,错误率大致在减少。可以得出训练的深度越高,则正确率越高,识别的效率越高。训练集规模越大,得到的词错误率越低、句错误率越低,即正确率越高,识别的效率越高。
附图说明
图1所示为本申请的方法流程示意图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1为本申请的方法流程示意图。
本发明提出一种基于kaldi的中文语音识别声学模型构建方法,包含以下步骤:
步骤一:研究语音识别的系统架构、对其层次结构、运行流程、所涉及到的算法,对其过程用到的声学模型架构高斯混合模型(gaussianmixturemodel,gmm)-隐马尔科夫模型(hiddenmarkovmodel,hmm)和深度神经网络(deepneuralnetworks,dnn)-隐马尔科夫模型(hiddenmarkovmodel,hmm)进行了分析比对,得出了两种模型之间的优劣势;
步骤二:学习androidstudio的使用方法,对安卓编程的架构进行一定的了解,实现安卓录音的功能,并且在真机上进行测试改良;
步骤三:通过使用自己的音频数据,训练出了一个自己的自动语音识别系统,并且对其进行了测试,将测试得到的结果进行了分析处理,得出了影响语音识别正确率的因素;
在优选的实施例中,步骤一研究语音识别的系统架构、对其层次结构、运行流程、所涉及到的算法。对其过程用到的声学模型架构高斯混合模型(gaussianmixturemodel,gmm)-隐马尔科夫模型(hiddenmarkovmodel,hmm)和深度神经网络(deepneuralnetworks,dnn)-隐马尔科夫模型(hiddenmarkovmodel,hmm)进行了分析比对,得出了两种模型之间的优劣势,具体步骤如下:
将收集到的语音信号进行预处理,包括语音信号预加重、语音信号分帧处理、语音信号加窗处理、特征提取等操作,使后续语音处理得到的信号更加均匀、平滑、为特征参数提取优质的参数,提高语音处理质量。建立基于高斯混合模型(gaussianmixturemodel,gmm)-隐马尔科夫模型(hiddenmarkovmodel,hmm)和深度神经网络(deepneuralnetworks,dnn)-隐马尔科夫模型(hiddenmarkovmodel,hmm)的声学模型,并对两者进行详细的比较。
在优选的实施例中,步骤二中使用androidstudio的方法,利用安卓编程的架构,实现安卓录音的功能,并且在真机上进行测试和改良,具体步骤如下:
首先进行音频数据的准备,声学数据创建一些文本文件使kaldi与音频文件进行联系;在kaldi的配置文件中修改一些必要的参数和配置;然后运行脚本,在终端界面查看解码的结果;最后进行数据分析,将各种不同训练所得到的的数据整合起来,得出训练方式对错误率的影响及其规律。
在优选的实施例中,步骤三中通过使用自己的音频数据,训练出了一个自己的自动语音识别系统,并且对其进行了测试,将测试得到的结果进行了分析处理,得出了影响语音识别正确率的因素,具体步骤如下:
为每一个说话人创建一个名为speakerxxx的文件夹,将其说的146段录音放置在此文件夹下。将40个说话人的音频文件夹放置在train文件夹下,作为训练数据集。在test和dev文件夹下分别放置任意三个说话人的音频文件夹,作为测试集音频文件放置完成后,需要创建文本文件夹使得kaldi与音频文件进行关联;语言模型文件是自动语音识别系统中必要的一部分,需要语言数据帮助形成语言模型文件,进而完成自动语音识别系统的构建在准备完所有的数据之后,还需要准备一些工程文件以及工具包、脚本等等,使得工程变得完整;在kaldi环境下的自动语音识别系统基本已经创建完毕,现在需要创建几个脚本来运行,进而搭建自己设定的自动语音识别系统。
语音识别评估标准
词错误率(worderrorrate,wer)
句错误率(sentenceerrorrate,ser)
将20人训练集的单音素训练、基于单音素的三音素训练、基于三音素的三音素训练、隐含狄利克雷分布(latentdirichletallocation,lda)+最大似然线性变换(maximumlikelihoodlineartransformation,mllt)、说话人自适应训练(speakeradaptivetraining,以下简称sat)处理、quick处理的结果中取最优值进行汇总,结果如表1所示
表120人结果汇总
将40人训练集的单音素训练、基于单音素的三音素训练、基于三音素的三音素训练、隐含狄利克雷分布(latentdirichletallocation,lda)+最大似然线性变换(maximumlikelihoodlineartransformation,mllt)、说话人自适应训练(speakeradaptivetraining,以下简称sat)处理、quick处理的结果中取最优值进行汇总,结果如表2所示。
表240人结果汇总
从表1中可以看出,词错误率(worderrorrate,wer)与句错误率(sentenceerrorrate,ser)成正相关,词错误率越高,则句错误率越高。随着训练深度的增加,错误率大致在减少。可以得出训练的深度越高,则正确率越高,识别的效率越高。从表2中可以看出,训练集规模越大,得到的词错误率越低、句错误率越低,即正确率越高,识别的效率越高。
传统的高斯混合模型(gaussianmixturemodel,gmm)-隐马尔科夫模型(hiddenmarkovmodel,hmm)和声学模型是将每一帧的语言特征进行计算得到独立的参数组合形成模型参数空间,对于上下文相关的帧是同时进行建模的,没有对其相关性进行建模。而深度神经网络则是将每一时刻的声学特征参数输入,对输入后产生的概率(后验概率)进行建模,将得到的概率与先前的概率(前验概率)进行相结合,从而得到状态的观测概率,这是一个递归的过程,
设x为输入的样本,其输入后得到的输出状态为s,深度神经网络得到的概率为p(s|x),而隐马尔科夫模型(hiddenmarkovmodel,hmm)的识别系统最终得到的概率为p(x|s)依据贝叶斯公式,可以得到:
深度神经网络(deepneuralnetworks,dnn)比高斯混合模型(gaussianmixturemodel,gmm)更加强大。深度神经网络(deepneuralnetworks,dnn)训练过程相对高斯混合模型(gaussianmixturemodel,gmm)复杂很多,其进行的是螺旋反复的训练过程。高斯混合模型(gaussianmixturemodel,gmm)只使用单帧作为输入,上下文之间无任何关联,而深度神经网络(deepneuralnetworks,dnn)通过拼接相邻帧进行上下文有效信息的关联,使得准确率更高。在相同时间内训练的数据量以及相同数据量下的训练精度,深度神经网络(deepneuralnetworks,dnn)都要比高斯混合模型(gaussianmixturemodel,gmm)高出很多,所以现在深度神经网络(deepneuralnetworks,dnn)模型相比于高斯混合模型(gaussianmixturemodel,gmm)模型更适合作为语音识别的基础模型。深度神经网络(deepneuralnetworks,dnn)的成功得益于计算机计算能力和gpu的发展,深度神经网络(deepneuralnetworks,dnn)在建模、训练以及解码中都比高斯混合模型(gaussianmixturemodel,gmm)模型更加有优势。深度神经网络(deepneuralnetworks,dnn)的出现,推动了语音识别的普及,加快了人工智能的发展,还解决了高斯混合模型(gaussianmixturemodel,gmm)以前的各种缺点和解决不了的问题。
以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除