发明内容
本发明实施例的目的在于提供一种语音识别模型训练方法、系统、移动终端及存储介质,旨在解决现有的语音识别模型训练方法训练效率低下且耗时长的问题。
本发明实施例是这样实现的,一种语音识别模型训练方法,所述方法包括:
获取样本语音、与所述样本语音对应的样本文本及文本语料,并根据所述样本文本和所述文本语料构建文本字典;
对所述样本语音进行特征提取,以得到语音特征,并对所述语音特征进行向量计算,以得到概率向量;
根据所述概率向量和所述文本字典进行损失计算,以得到模型总损失,并将所述模型总损失在语音模型中进行传播,直至所述语音识别模型收敛;
根据所述文本语料进行语言模型的训练,并将训练后的所述语言模型集成至所述语音识别模型。
更进一步的,所述根据所述样本文本和所述文本语料构建文本字典的步骤包括:
对本地预存储的训练文本进行遍历,将所有不重复的字符加入到所述文本字典中,以构建字符集,且每个字符均用对应唯一的ID表示;
将所述样本文本和所述文本语料中的字符根据所述字符集替换为对应的ID;
将所述文本语料中未在所述字符集中的字符用第一标识表示;
将所述第一标识加入到所述字符集中,并用当前所述字符集最大ID加1的数字表示;
在所述字符集中添加静音分隔符,以描述语音中字符之间短暂的停顿,并用当前所述字符集最大ID加1的数字表示;
将所述字符集中所有字符组成所述文本字典,并对所述文本字典进行独热编码,以使所述文本字典中每个字符均用一个等于所述字符集大小维度的向量表示;
采用标签平滑策略对所述样本文本和所述文本语料中的字符用每个字符对应的所述独热编码进行标识。
更进一步的,所述对所述语音特征进行向量计算的步骤包括:
将所述语音特征输入到GRU网络的第一层中,以得到输出向量;
将所述输出向量设置为第二层GRU网络输入的一部分,并和当前层上一时间步的状态输出一起设置为当前层的输入;
直至完成预设层GRU网络的输出时,将所述预设层GRU网络的输出输入到全连接网络中,并通过softmax函数将输出转换为概率值,以得到所述概率向量。
更进一步的,所述根据所述概率向量和所述文本字典进行损失计算的步骤包括:
根据所述概率向量查询所述文本字典中对应的目标独热编码;
将所有时间步输出的所述概率向量和对应的所述目标独热编码经过标签平滑后的向量求CTC损失函数,并求和以得到所述模型总损失。
更进一步的,所述将所述模型总损失在语音模型中进行传播的步骤包括:
采用随机梯度下降法将所述模型总损失进行后向传播,并同时更新所述语音识别模型中的所有参数;
采用前向-后向算法进行输出候选和标签样本文本之间的对齐,直至所述语音模型收敛。
更进一步的,所述方法还包括:
将测试语音进行特征提取后输入至所述语音识别模型中,并控制所述语音识别模型采用前缀集束搜索的方式进行解码搜索,以得到识别结果。
更进一步的,所述语音识别模型中采用的得分计算公式为:
Q(y)=log(pUniGRU(y|x))+αlog(pLSTMLM(y|x))+βwc(y);
其中,所述得分计算公式中的第一输入项为单向GRU网络输出的字符概率,第二输入项为所述语言模型计算得到的概率值,第三输入项为当前时间步的转写字符数。
本发明实施例的另一目的在于提供一种语音识别模型训练系统,所述系统包括:
字典构建取模块,用于获取样本语音、与所述样本语音对应的样本文本及文本语料,并根据所述样本文本和所述文本语料构建文本字典;
向量计算模块,用于对所述样本语音进行特征提取,以得到语音特征,并对所述语音特征进行向量计算,以得到概率向量;
模型训练模块,用于根据所述概率向量和所述文本字典进行损失计算,以得到模型总损失,并将所述模型总损失在语音模型中进行传播,直至所述语音识别模型收敛;
模型集成模块,用于根据所述文本语料进行语言模型的训练,并将训练后的所述语言模型集成至所述语音识别模型。
本发明实施例的另一目的在于提供一种移动终端,包括存储设备以及处理器,所述存储设备用于存储计算机程序,所述处理器运行所述计算机程序以使所述移动终端执行上述的语音识别模型训练方法。
本发明实施例的另一目的在于提供一种存储介质,其存储有上述的移动终端中所使用的计算机程序,该计算机程序被处理器执行时实现上述的语音识别模型训练方法的步骤。
本发明实施例,无需进行发音词典的构建,降低了人力成本和模型训练的时间,通过采用端到端的架构训练方式,使得所有参数同时进行更新,提高了模型训练效率和后续语音识别的效率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
请参阅图1,是本发明第一实施例提供的语音识别模型训练方法的流程图,包括步骤:
步骤S10,获取样本语音、与所述样本语音对应的样本文本及文本语料,并根据所述样本文本和所述文本语料构建文本字典;
其中,该样本语音为语音识别模型中待识别的语种,例如粤语或闽南语等语种,该样本文本中采用普通话的表达方式,且该样本语音与样本文本之间采用一一对应的关系;
具体的,通过该样本语音和样本文本的获取,以对应构建数据集,并随机选取该数据集中20%的数据作为测试集;
该步骤中,所述根据所述样本文本和所述文本语料构建文本字典的步骤之前,所述方法包括:
删除所述样本文本和所述文本语料中的特殊字符,以保留文字、数字、逗号、句号和问号,并将所述样本文本和所述文本语料中的感叹号转换为句号;
将所述样本文本和所述文本语料中的全角转化为半角,并将英文形式的标点符号转换为对应的中文形式;
步骤S20,对所述样本语音进行特征提取,以得到语音特征,并对所述语音特征进行向量计算,以得到概率向量;
其中,该语音特征采用80维的fbank特征,帧长为25ms,帧移为10ms;
优选的,所述对所述样本语音进行特征提取的步骤包括:
对所述样本语音进行加噪、加混响、速度扰动处理,并对处理后的所述样本语音进行特征提取;
将所述样本语音中的语音根据所述语音特征的特征条数进行分组,并将每一组中最大的所述特征条数设置为目标语音长度;
将所述样本语音中语音对应的所述语音特征通过补0方式达到对应所述目标语音长度;
具体的,例如某一组样本语音的长度为T,则该组中的一条语音可表示为x=(x1,…,xT),其中xi为80维的特征向量,该做法的好处有三点,第一是同一组的语音长度相同,因此可以进行批量训练,加速训练过程,第二是减轻了将所有语音长度设为同一个值造成的有些短语音补0过多的负面影响,第三,如果不进行补0进行对齐,只能按条进行训练,训练速度过慢;
步骤S30,根据所述概率向量和所述文本字典进行损失计算,以得到模型总损失,并将所述模型总损失在语音模型中进行传播,直至所述语音识别模型收敛;
其中,该模型总损失可以采用CTC损失函数的方式进行计算,且该步骤中,该模型总损失可以采用随机梯度下降法进行后向传播;
具体的,CTC损失函数是以最大化所有输出候选的概率总和为目标函数来更新参数的,相对于交叉熵损失函数,CTC损失函数有三个优点:第一,不要求输入和输出进行严格对齐,从而可以解决输入长度比输出长度大的问题,第二,可以区分连续两个相同字符是否应该合并的情况,第三,可以允许有更粗粒度的建模单元,加速解码速度;
步骤S40,根据所述文本语料进行语言模型的训练,并将训练后的所述语言模型集成至所述语音识别模型;
本实施例,无需进行发音词典的构建,降低了人力成本和模型训练的时间,通过采用端到端的架构训练方式,使得所有参数同时进行更新,提高了模型训练效率和后续语音识别的效率,本实施例中,通过对样本语音数据进行加噪、混响、速度扰动,不仅扩充了数据集,同时使得模型能适应更多复杂的环境以及不同的口音。
实施例二
请参阅图2,是本发明第二实施例提供的语音识别模型训练方法的流程图,包括步骤:
步骤S11,获取样本语音、与所述样本语音对应的样本文本及文本语料;
步骤S21,对本地预存储的训练文本进行遍历,将所有不重复的字符加入到所述文本字典中,以构建字符集;
其中,每个字符均用对应唯一的ID表示;
步骤S31,将所述样本文本和所述文本语料中的字符根据所述字符集替换为对应的ID,并将所述文本语料中未在所述字符集中的字符用第一标识表示;
其中,该第一标识可以采用<UNK>的方式进行表示;
步骤S41,将所述第一标识加入到所述字符集中,并用当前所述字符集最大ID加1的数字表示;
步骤S51,在所述字符集中添加静音分隔符,以描述语音中字符之间短暂的停顿,并用当前所述字符集最大ID加1的数字表示;
其中,在字符集中添加一个静音分隔符“-”以描述人在说话时字符之间短暂的停顿,用当前字符集最大ID加1的数字表示,由于语音特征相对于汉字的粒度是更细的,即多帧特征才对应一个汉字,而模型输出的是每一帧对应的字符,因此,会存在连续输出多个相同字符的情况,但是作为标签的样本文本却不存在,因此,需要对输出候选进行后处理,将相邻间相同的汉字合并成一个,进而使得可能将确实是两个连续相同的字符合并,例如“分分合合”,如果不在两个“分”和两个“合”之间输出“-”的时,后处理就会将两个“分”和两个“合”合并成“分合”;
步骤S61,将所述字符集中所有字符组成所述文本字典,并对所述文本字典进行独热编码;
其中,由于神经网络的输入维度要求是固定的,因此,通过对所述文本字典进行独热编码的设计,以使每个字符都用一个等于字符集大小维度的向量来表示,其中只有该字符对应位置上的元素为1,其他元素都为0;
步骤S71,采用标签平滑策略对所述样本文本和所述文本语料中的字符用每个字符对应的所述独热编码进行标识;
其中,为了防止模型对训练数据过度自信(overconfidence),采用标签平滑(Label Smoothing)策略,即对于样本文本中的每一个字,设定一个接近于0的非负小数ε,独热编码中对应1的元素改用1-ε来表示,其他元素则通过ε的均匀分布来表示;
步骤S81,对所述样本语音进行特征提取,以得到语音特征,并将所述语音特征输入到GRU网络的第一层中,以得到输出向量;
其中,该GRU网络可以为单向GRU网络或双向GRU网络,GRU网络各变量计算过程如下:
zt=σ(Uzxt+Wzst-1+bz)
rt=σ(Urxt+Wrst-1+br)
ht=tanh(Uhxt+Wh(st-1⊙rt)+bh)
st=(1-zt)⊙ht+zt⊙st-1
其中σ为sigmoid函数,⊙表示两个维度相同的向量之间逐元素相乘;
请参阅图3,对于每一层单向GRU,当前时间步的输入由当前时间步自身的输入和上一时间步的状态输出组成,通过采用多层单向GRU结构,其中采用多层结构可以抽取出更加抽象的特征;采用单向结构,对于每一时间步,都考虑了前面所有时间步的信息,使得识别结果更加准确,同时,单向结构也能用在实时解码中;采用GRU,可以在不降低识别结果的情况下比LSTM结构减少1/4的参数量,加快了模型的收敛;
一层双向GRU网络的计算过程如附图4所示,从图中可以看出,每一个时间步的输出由正向GRU的状态输出和逆向GRU的状态输出共同决定。对于正向GRU网络,当前时间步的输入由当前时间步自身的输入和上一时间步的状态输出组成,对于逆向GRU,当前时间步的输入由当前时间步自身的输入和下一时间步的状态输出组成;
步骤S91,将所述输出向量设置为第二层GRU网络输入的一部分,并和当前层上一时间步的状态输出一起设置为当前层的输入;
步骤S101,直至完成预设层GRU网络的输出时,将所述预设层GRU网络的输出输入到全连接网络中,并通过softmax函数将输出转换为概率值,以得到所述概率向量;
其中,该预设层的数值可以根据需求进行设置,该步骤中该预设层为第七层,即完成第七层GRU网络的输出时,然后将第七层的输出输入到一层全连接网络(MLP)中,并通过softmax函数将输出转换为概率值;
步骤S111,根据所述概率向量查询所述文本字典中对应的目标独热编码;
步骤S121,将所有时间步输出的所述概率向量和对应的所述目标独热编码经过标签平滑后的向量求CTC损失函数,并求和以得到所述模型总损失;
步骤S131,根据所述概率向量和所述文本字典进行损失计算,以得到模型总损失,并将所述模型总损失在语音模型中进行传播,直至所述语音识别模型收敛;
其中,所述将所述模型总损失在语音模型中进行传播的步骤包括:
采用随机梯度下降法将所述模型总损失进行后向传播,并同时更新所述语音识别模型中的所有参数;
采用前向-后向算法进行输出候选和标签样本文本之间的对齐,直至所述语音模型收敛;
步骤S141,根据所述文本语料进行语言模型的训练,并将训练后的所述语言模型集成至所述语音识别模型;
优选的,所述方法还包括:
将测试语音进行特征提取后输入至所述语音识别模型中,并控制所述语音识别模型采用前缀集束搜索的方式进行解码搜索,以得到识别结果;
其中,在所述语音识别模型进行解码搜索时,有三种搜索方式,如果采用贪婪搜索,则每次只选择概率最大的字符作为输出字符,这可能造成最终的字符序列的得分并不是最高,也即输出的字符序列并不是最优的识别结果,而如果采用常规的集束搜索(beamsearch),因为模型会输出多条转写的候选,只要“-”在不同的位置或者“-”出现的次数不同,模型都认为是不同的输出候选,但经过后处理移除掉“-”和重复的字符后,候选结果有可能是一样的,减少了搜索结果的多样性,而采用前缀集束搜索(prefix beam search)的方式就可以避免这个弊端,并且前缀树集束搜索可以确保找到全局最优解。前缀集束搜索在搜索过程中会合并相同的前缀,进而能保证每一条候选尽量不同。其中beam的值选择200。因为模型后处理会将相同的连续字符进行合并,可能导致最终转写结果字符数过少,因此,在计算最终的得分时,需要将字符个数也作为得分的一部分,即字符数越多,该项得分越高,因此,对每次输出的概率向量,和语言模型的概率值以及字符数进行加权求和;
优选的,所述语音识别模型中采用的得分计算公式为:
Q(y)=log(pUniGRU(y|x))+αlog(pLSTMLM(y|x))+βwc(y);
其中,所述得分计算公式中的第一输入项为单向GRU网络输出的字符概率,第二输入项为所述语言模型计算得到的概率值,第三输入项为当前时间步的转写字符数,为了防止概率值下溢,所有概率均取对数。权重系数和通过模型在验证集上调优得到;
选择其中概率值最大的200个字符,然后将这200个字符的独热编码经过标签平滑分别作为下一时间步单向GRU的输入,得到200个概率向量,分别将这200个概率向量和语言模型以及字符数进行加权求和,重新选择200个概率值最大的200个字符,转换为对应的独热编码,经过标签平滑,作为下一时间步单向GRU的输入,以此类推,直到最后一帧特征输入完毕,该条字符序列结束,表示其中一条识别结果识别结束;
计算所有字符序列的概率乘积,根据需要,选择其中概率乘积最大的字符序列作为最终的识别结果;
本实施例中,采用基于字的单向GRU结构来捕捉语音序列的时序关系,并采用CTC作为损失函数,首先对样本语音提取特征,根据特征条数进行排序,并进行分组,对于每一组特征,选取最大条数作为该组特征的长度,其余的通过补0补齐到同一长度,在每个时间步将一组特征和对应的转写文本输入到单向GRU中,通过最大化所有时间步所有可能的输出候选转写结果的概率总和来训练模型的参数。在测试阶段,通过前缀集束搜索和集成语言模型以及输出字符个数,找出概率最大的字符序列路径,通过后处理删除连续相同的字符以及替换静音分隔符为标点符号或者空作为识别结果。
实施例三
请参阅图5,是本发明第三实施例提供的语音识别模型训练系统100的结构示意图,包括:字典构建取模块10、向量计算模块11、模型训练模块12和模型集成模块13,其中:
字典构建取模块10,用于获取样本语音、与所述样本语音对应的样本文本及文本语料,并根据所述样本文本和所述文本语料构建文本字典。
其中,所述字典构建模块10还用于:
对本地预存储的训练文本进行遍历,将所有不重复的字符加入到所述文本字典中,以构建字符集,且每个字符均用对应唯一的ID表示;
将所述样本文本和所述文本语料中的字符根据所述字符集替换为对应的ID;
将所述文本语料中未在所述字符集中的字符用第一标识表示;
将所述第一标识加入到所述字符集中,并用当前所述字符集最大ID加1的数字表示;
在所述字符集中添加静音分隔符,以描述语音中字符之间短暂的停顿,并用当前所述字符集最大ID加1的数字表示;
将所述字符集中所有字符组成所述文本字典,并对所述文本字典进行独热编码,以使所述文本字典中每个字符均用一个等于所述字符集大小维度的向量表示;
采用标签平滑策略对所述样本文本和所述文本语料中的字符用每个字符对应的所述独热编码进行标识。
向量计算模块11,用于对所述样本语音进行特征提取,以得到语音特征,并对所述语音特征进行向量计算,以得到概率向量。
其中,所述向量计算模块11还用于:
将所述语音特征输入到GRU网络的第一层中,以得到输出向量;
将所述输出向量设置为第二层GRU网络输入的一部分,并和当前层上一时间步的状态输出一起设置为当前层的输入;
直至完成预设层GRU网络的输出时,将所述预设层GRU网络的输出输入到全连接网络中,并通过softmax函数将输出转换为概率值,以得到所述概率向量。
模型训练模块12,用于根据所述概率向量和所述文本字典进行损失计算,以得到模型总损失,并将所述模型总损失在语音模型中进行传播,直至所述语音识别模型收敛。
其中,所述模型训练模块12还用于:
根据所述概率向量查询所述文本字典中对应的目标独热编码;
将所有时间步输出的所述概率向量和对应的所述目标独热编码经过标签平滑后的向量求CTC损失函数,并求和以得到所述模型总损失。
优选的,所述模型训练模块12还用于:
采用随机梯度下降法将所述模型总损失进行后向传播,并同时更新所述语音识别模型中的所有参数;
采用前向-后向算法进行输出候选和标签样本文本之间的对齐,直至所述语音模型收敛。
模型集成模块13,用于根据所述文本语料进行语言模型的训练,并将训练后的所述语言模型集成至所述语音识别模型。
此外,本实施例中,所述语言识别模型训练系统100还包括:
模型测试模块14,用于将测试语音进行特征提取后输入至所述语音识别模型中,并控制所述语音识别模型采用前缀集束搜索的方式进行解码搜索,以得到识别结果。
其中,所述模型测试模块14中采用的得分计算公式为:
Q(y)=log(pUniGRU(y|x))+αlog(pLSTMLM(y|x))+βwc(y);
其中,所述得分计算公式中的第一输入项为单向GRU网络输出的字符概率,第二输入项为所述语言模型计算得到的概率值,第三输入项为当前时间步的转写字符数。
本实施例,无需进行发音词典的构建,降低了人力成本和模型训练的时间,通过采用端到端的架构训练方式,使得所有参数同时进行更新,提高了模型训练效率和后续语音识别的效率。
实施例四
请参阅图6,是本发明第四实施例提供的移动终端101,包括存储设备以及处理器,所述存储设备用于存储计算机程序,所述处理器运行所述计算机程序以使所述移动终端101执行上述的语音识别模型训练方法。
本实施例还提供了一种存储介质,其上存储有上述移动终端101中所使用的计算机程序,该程序在执行时,包括如下步骤:
获取样本语音、与所述样本语音对应的样本文本及文本语料,并根据所述样本文本和所述文本语料构建文本字典;
对所述样本语音进行特征提取,以得到语音特征,并对所述语音特征进行向量计算,以得到概率向量;
根据所述概率向量和所述文本字典进行损失计算,以得到模型总损失,并将所述模型总损失在语音模型中进行传播,直至所述语音识别模型收敛;
根据所述文本语料进行语言模型的训练,并将训练后的所述语言模型集成至所述语音识别模型。所述的存储介质,如:ROM/RAM、磁碟、光盘等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元或模块完成,即将存储装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施方式中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
本领域技术人员可以理解,图5中示出的组成结构并不构成对本发明的语音识别模型训练系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,而图1-2中的语音识别模型训练方法亦采用图5中所示的更多或更少的部件,或者组合某些部件,或者不同的部件布置来实现。本发明所称的单元、模块等是指一种能够被所述目标语音识别模型训练系统中的处理器(图未示)所执行并功能够完成特定功能的一系列计算机程序,其均可存储于所述目标语音识别模型训练系统的存储设备(图未示)内。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。