一种可支持自定唤醒词的关键词检测方法与流程
本发明属于基于神经网络的关键词检测技术领域,具体涉及一种可支持自定唤醒词的关键词检测方案。
背景技术:
关键词检测技术是指设备从连续不断的语音流中检测特定的关键词,当检测到特定的关键词时,便会发出一个信号,表示该定关键词被检测到,而该关键词被称为唤醒词。其中,基于神经网络的关键词检测方式是一种经典的关键词检测领域的传统方法。
神经网络是一种抽象于人类大脑神经工作机理,进行数据分类识别的机器学习算法。神经网络将人脑神经元之间的联系抽象为矩阵运算,抽象层次较高。神经网络在结构上可以划分为输入层、隐藏层、输出层,输出层也可称为分类层,每一层均包含一个权值矩阵,有时还包含一个偏差向量。神经网络的输入为一个矩阵或者一个向量,需要依次与神经网络各层的权值矩阵进行一系列的矩阵计算,最终由神经网络的分类层输出各个类别的预测概率,而根据预测概率的大小即可输出最终的分类结果,这一过程称为神经网络的前向计算。为了得到准确的分类结果,神经网络需要大量带有标签的数据用于训练,衡量训练效果的指标为损失函数,在训练过程中,损失函数越小,神经网络的分类准确率越高。而神经网络的训练采用反向传播算法,该算法基于梯度下降算法,不断地更新权值矩阵的值,使损失函数的值变小,从而找到最佳的权重。
基于神经网络的关键词检测方法的流程大致如下:首先将采集到的音频信号以极短的时间单位进行切片,切片所得的语音片段称为帧,将每帧语音片段输入至一组梅尔滤波器,计算各个梅尔滤波器的能量并拼接成一个向量,该向量称为每帧语音片段的特征向量,即帧特征向量。对于一段定长的语音,经过分帧、提取特征向量、拼接,最终可以得到一个二维的特征矩阵,将语音信号转化成特征矩阵的过程称为预处理。之后,将该二维矩阵作为神经网络的输入,与神经网络各层的权值矩阵进行一系列的矩阵运算,最终得到各个唤醒词和非唤醒词的预测概率。对于一个特定的唤醒词,若其预测概率最大,则表示该唤醒词被检测到,那么设备将被唤醒。
但是,基于神经网络的关键词检测唤醒方法有一个缺点,由于神经网络的分类层神经元数目在训练完成后是固定的,即该方法只能输出这些固定的唤醒词的预测概率,因此传统的方法无法更改唤醒词,因为只有经过训练的唤醒词,唤醒的准确率才能保持在一个较高的水平。
技术实现要素:
本发明的发明目的在于:针对上述存在的问题,提供一种可支持自定唤醒词的关键词检测方法。
本发明的可支持自定唤醒词的关键词检测方法,包括下列步骤:
步骤1:预训练处理:
设置预训练处理的训练语料,所述训练语料包括:词的样本和噪声语料的样本;
对训练预料的每个样本进行预处理,得到每个样本的特征矩阵,即对每个样本进行分帧和帧特征向量提取处理,再将每个样本的所有帧特征向量拼接成一个特征矩阵;
构建基于神经网络的语音关键词检测网络模型,所述语音关键词检测网络模型包括依次连接的输入层、隐藏层和分类层;其中,分类层用于输出输入的特征矩阵为指定类别的预测概率分,即关于唤醒词的指定类别,其通常包括:k个唤醒词类、1个非唤醒词类和1个静音类,其中,k表示从训练语料包括的所有词中指定的唤醒词数量。
以训练预料的每个样本的特征矩阵为语音关键词检测网络模型的输入层的输入数据,对语音关键词检测网络模型进行分类训练,得到预训练好的语音关键词检测网络模型;
步骤2:微调训练处理:
移除预训练好的语音关键词检测网络模型的分类层,作为支持自定唤醒词的关键词检测模型;
用户对其自定义唤醒词进行样本注册,对用户注册的自定义唤醒词样本进行数据增强处理,将增强处理前后的自定义唤醒词样本一并作为微调训练处理的微调训练样本;
对微调训练样本进行预处理,得到微调训练样本的特征矩阵;
基于微调训练样本的特征矩阵,采用端对端的损失函数对支持自定唤醒词的关键词检测模型的指定网络层进行增量训练,并将训练好的支持自定唤醒词的关键词检测模型作为支持自定唤醒词的关键词检测器;
步骤3:检测处理:
将增强处理前的自定义唤醒词样本的特征矩阵输入支持自定唤醒词的关键词检测器进行前向计算,并将前向计算的输出结果作为每个自定唤醒词的模板;
对待检测语音进行预处理,得到待检测的特征矩阵,并将待检测的特征矩阵输入支持自定唤醒词的关键词检测器进行前向计算,得到待检测的输出结果;
计算待检测的输出结果与每个自定唤醒词的模板之间的相似度,若最大相似度大于或等于相似度阈值,则基于最大相似度对应的自定唤醒词得到待检测语音的关键词检测结果。
进一步的,步骤1中,分类层对应的指定类别设置为:k个唤醒词类、n-k个非唤醒词类和1个静音类;其中,k表示从训练语料包括的所有词中指定的唤醒词数量,n表示训练语料包括的词数量。
在本发明中,非唤醒词这一大类将被更加精细地拆分成具体的非唤醒词1,非唤醒词2等若干个非唤醒词,使用细粒度分类训练手段之后,非唤醒词类别被拆分成更加精细的n-k个类别,对应非唤醒词中的n-k个单词。因此,分类层从原有的k+2分类变成了n+1分类。
进一步的,步骤1中,语音关键词检测网络模型的隐藏层包括依次连接的卷积块conv1、残差块1~残差块nres、卷积块conv2、展平层和平均池化层,其中,nres表示包含的残差块数量,且每个残差块(残差块1~残差块nres)包括依次连接的卷积块r_conv1和卷积块r_conv2,将卷积块r_conv1的输入与卷积块r_conv2的输出相加得到每个残差块的输出;每个卷积块(conv1、conv2、r_conv1和r_conv2)包括:卷积层、非线性层relu(即激活函数设置为relu)和批归一化层;展平层用于将同一通道的特征图转换为一个一维向量;分类层包括依次连接的全连接层和softmax层,通过softmax层输出每个类别的预测概率。
进一步的,对应上述语音关键词检测网络模型的具体网络结构,步骤2中,端对端的损失函数具体为:
其中,lg表示每个训练批的端对端的损失函数;l(eji)表示当前训练批中每个微调训练样本的损失函数;eji、eki分别表示当前训练批中第j个自定义唤醒词和第k个自定义唤醒词的第i个微调训练样本在支持自定唤醒词的关键词检测器中的前向计算的输出向量;且1≤i≤m,1≤j≤n,1≤k≤n且k≠j;sji,k表示每个训练批中eji与ck的似然矩阵,sji,j表示每个训练批中eji与cj的似然矩阵;ck、cj分别表示当前训练批中第k个、第j个自定义唤醒词的中心向量;n表示每个训练批包含的自定义唤醒词的数目,且2≤n≤p,p表示用户注册的自定义唤醒词数量;m表示每个自定义唤醒词包含的微调训练样本数,且m≥2;w1和w2表示两个不同取值的线性因子;cos(·)表示余弦相似度。
进一步的,步骤2中,用户对其自定义唤醒词进行样本注册时,对同一自定义唤醒词重复进行录制q次;且在步骤3中,将同一自定义唤醒词的q个前向计算的输出结果的均值作为每个自定唤醒词的模板。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
(1)本发明通过移除神经网络的分类层,直接比较神经网络输出结果(向量)的相似度,解除了分类数目固定所带来的无法对类外唤醒词(如自定唤醒词)进行分类的技术问题;
(2)通过细粒度分类训练手段,可以提高神经网络对短词(语音长度在指定长度以内的语音中包含的词)分类的泛化能力,从而得到一个初始化较好的网络模型用于自定唤醒词的微调训练;
(3)通过数据增强并辅以部分网络层的增量训练,使神经网络在小样本的情况下经过微调训练也能达到一个较高的准确率。
(4)本发明可用于嵌入设备,当用于嵌入设备时,能够根据用户的个性和需求随时更改唤醒词,提高用户的体验和减去个性定制所引入的成本。
附图说明
图1为具体实施方式中,本发明的关键词检测方法的处理过程示意图;
图2为具体实施方式中,采用的神经网络结构示意图;
图3为具体实施方式中,细粒度分类训练的处理过程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。
本发明的可支持自定唤醒词的关键词检测方法,基于神经网络实现可支持用户自定义唤醒词,从而增加了嵌入该算法设备、系统的个性、便利性。其中,自定义唤醒词指的是用户可设置任何短词作为检测的关键词。本发明通过预训练和微调训练的双阶段训练方式,使原本不支持自定义唤醒词的神经网络变得可支持自定义唤醒词。参见图1,本发明包括预训练阶段、微调训练阶段(简称微调阶段)和测试阶段(即关键词检测阶段)。
在预训练阶段,对训练语料首先进行预处理(分帧和帧特征向量提取)得到二维的特征矩阵,再对采用的神经网络(用于语音的关键词检测的神经网络,即语音关键词检测网络模型)进行细粒度分类训练,从而得到预训练好的神经网络;
在微调阶段,移除预训练好的神经网络的分类层,作为支持自定唤醒词的关键词检测模型;并对用户录制的自定义唤醒词的语音首先进行数据增强处理,再进行预处理获取对应的特征矩阵,对支持自定唤醒词的关键词检测模型进行增量训练,得到训练好的支持自定唤醒词的神经网络,作为支持自定唤醒词的关键词检测器;并再次将用户录制的自定义唤醒词对应的特征矩阵输入支持自定唤醒词的关键词检测器,基于其输出获取每个自定义唤醒词的模板并保存;
在测试阶段,对测试语音(待检测语音)进行预处理,得到对应的特征矩阵,并将其输入至训练好的支持自定唤醒词的神经网络,并计算其输出与各自定义唤醒词的模板之间的相似度,基于与相似度阈值的匹配结果,得到关键词(自定义唤醒词)的检测结果:当前测试语音中存在某个自定义唤醒词或不存在自定义唤醒词。即从相似度大于或等于相似度阈值的相似度中,将最大相似度对应的自定义唤醒词作为当前检测到的唤醒词;若相似度均小于相似度阈值,则当前测试语音中不存在自定义唤醒词。
对于输入神经网络之前的语音,需要先对其做一系列的预处理,包括分帧处理、帧的特征向量提取和特征拼接,即将指定长度的语音段的所有帧的帧特征向量拼接在一起,构成二维的特征矩阵,例如特征矩阵的行数对应帧数,列数对应每帧的特征向量的维度,即每行对应一帧的特征向量。
本具体实施方式中,帧的特征向量采用梅尔频谱倒谱变换。即对于接收的待进行预处理的语音,基于预设的窗口大小和重叠长度(滑窗步长)对语音进行分帧处理,例如采用20ms的窗长,10ms的重叠对语音进行分帧处理。为了解决频谱泄露问题,本具体实施方式中,滑窗采用汉明窗。然后,分帧语音段将通过一组数量为m的梅尔滤波器,可以得到m个滤波器能量,经过取对数和离散余弦变换变换后,最终,对于一帧语音,能够得到一个m维的向量。其中参数m的取值为自定义,基于具体的使用场景进行设置,本具体实施方式中,可将参数m设置为40。
本发明中,所采用的神经网络包括输入层、卷积块、残差块、展平层、平均池化层和分类层;其中输入层为关于音频数据的特征矩阵;所输入的特征矩阵首先经过第一卷积块,然后依次经过多个残差块后输入第二卷积块、再依次经过展平层和平均池化层后进入分类层。本具体实施方式中,残差块的数量设置为6,神经网络的结构如图2所示,其中,每个卷积块包括:卷积层、非线性层relu(即激活函数设置为relu)和批归一化层。每个残差块由两个卷积块构成,且残差块的第一个卷积块的输入与其第二个卷积块的输出相加,得到残差块的输出,如图2所示。而展平层用于将同一通道的特征图转换为一个一维向量;分类层包括依次连接的全连接层和softmax层,通过softmax层输出每个指定类别的预测概率。并将最大预测概率所对应的类别作为当前的分类检测结果,从而基于该类别所对应的关键词得到关键词检测结果。
本具体实施方式中,神经网络的输入为长度为1000ms的语音(即训练预料的每个样本、自定义唤醒词的语音和待检测语音的长度相同,皆为1000ms),经过预处理后可以得到101帧音频帧,并得到一个101×m的特征矩阵,即101×m的梅尔频率倒谱系数(mfcc)矩阵。且为了简化运算过程,将神经网络中的每个卷积层的卷积核设置为相同的大小h×a1×a2,其中h表示通道数,a1,a2分别表示长和宽;例如将卷积核设置为45×3×3。卷积核的空洞系数取决于该卷积核所在的层数,本具体实施方式中,将第一个卷积核的空洞系数设置为1,且从第二个卷积核开始,卷积核的空洞系数每经过3个卷积核就翻倍,本具体实施方式中,卷积核的空洞系数最大为16。
本具体实施方式中,神经网络的前馈计算如下:
参见图2,神经网络的输入为一个101×m的mfcc特征,首先经过第一卷积块。然后,第一卷积块的输出将通过6个残差块,经过6个残差块的输出将再次通过一个卷积块(第二卷积块),得到一个h×101×m的3维矩阵。该3维矩阵需要通过一层展平层降维成一个2维矩阵,展平层将保留矩阵的第1维数据,并且将第2维和第3维的数据展平成1个1维的向量,最终降维成一个h×101m的2维矩阵。然后,该2维矩阵经过平均池化后输出一个h×1的向量,改向量再通过一个h×c的全连接层,以及通过softmax处理对全连接层的输出进行分类,最终得到一个c维的输出向量,其中,c表示分类层预设的类别数,而全连接层的输出向量的每一维表示一个指定类别的预测概率。
将卷积核的通道数h设置为45,卷积核的长和宽均设置为3,唤醒词的数目k设置10,则神经网络的所有卷积核大小均为45×3×3,其中,神经网络的第一卷积块的卷积核的空洞系数为1;6个残差块共计包括12个卷积块,其空洞系数依次为:1,1,1,2,2,2,4,4,4,8,8,8;神经网络的第二卷积块的空洞系数为16;平均池化层和分类层的通道数分别为45和26。
本发明的神经网络的训练阶段分为两个阶段:预训练和微调训练。
在预训练阶段中,选用长度为1000ms左右的n个短词,以及噪声语料的大量样本作为训练语料,每个短词的样本数目可以设置为1000-3000条之间,并从n个短词中选择k个单词作为唤醒词,k<n,其中每个唤醒词作为一类,剩下的n-k个短词作为非唤醒词,所有非唤醒词作为一类,并将噪声归为静音类,从而得到预训练阶段的k+2个类别。本具体实施方式中,选择25个短词作为训练语料,即设置n=25,并从中选择10个作为唤醒词,即k=10。则此时所对应的分类层的了类别数为12。
训练语料经过预处理后可以得到一个101×m的特征矩阵,然后将特征矩阵输入至神经网络进行预训练,预训练中,为了进一步增强神经网络的分辨力,本发明还可以采用一种细粒度分类训练的方式。细粒度分类训练的具体手段是将原本神经网络的分类层调整为更加精细的分类层以增强神经网络的分辨力。在传统技术的神经网络中,分类层可视为对两大类进行分类,一大类为唤醒词,一大类为非唤醒词。在本发明中,非唤醒词这一大类将被更加精细地拆分成具体的非唤醒词1,非唤醒词2等若干个非唤醒词,使用细粒度分类训练手段之后,非唤醒词类别被拆分成更加精细的n-k个类别,对应非唤醒词中的n-k个单词。因此,分类层从原有的k+2分类变成了n+1分类,如图3所示。
再完成更加精细的类别划分后,即可进行对神经网络的网络参数的学习训练,可以采用任一惯用的神经网络的网络参数的训练方式,本发明不做具体限定。本具体实施方式中,采用adam优化器,采用交叉熵作为损失函数,设置学习率为0.001,批大为小为100,预训练阶段总共训练90个周期。当细粒度分类训练完成后,可以得到一个初步训练好的神经网络,将其保存。
在微调阶段之前,用户首先需要注册其想要定义的唤醒词,设自定义唤醒词的个数为p,本发明可支持的最大p值为10。在该过程中,用户需要重复录制q遍自定义唤醒词的范例样本,在本具体实施方式中,设置q=10。为了使微调的准确率更高并且防止神经网络过拟合,自定义唤醒词的范例样本需要进行数据增强处理,并将范例样本和数据增强处理后的范例样本一起作为微调阶段的训练样本。本具体实施方式中,数据增强处理包括:音量增益3db,音量衰减3db,语音语速变速至原音频的75%和语音语速变速至原音频的125%四种处理方式,从而最终将得到5×p×q的训练样本数。
微调阶段,需要对神经网络进行结构上的微调,神经网络的最后一层分类层将被移除,选择最后一层隐藏层(即平均池化层)的输出向量作为输入特征矩阵的一个映射,通过比较两个输出向量之间的相似度,即可判定两个输入特征矩阵是否来自同一唤醒词,本具体实施方式中,相似度的比较选择余弦相似度函数,计算公式为:
此外,微调阶段采用一种新的损失函数(端到端的损失函数),该损失函数要求每个训练批包含n个自定义唤醒词,其中2≤n≤p,每个自定义唤醒词包含m个样本,其中2≤m≤q。该损失函数的表达式为:
其中,lg表示每个训练批的端对端的损失函数;l(eji)表示当前训练批中每个微调训练样本的损失函数值;eji、eki分别表示当前训练批中第j个自定义唤醒词和第k个唤醒词的第i个微调训练样本在支持自定唤醒词的关键词检测器中的前向计算的输出向量;且1≤i≤m,1≤j≤n,1≤k≤n且k≠j;sji,k表示每个训练批中eji与ck的似然矩阵,sji,j表示每个训练批中eji与cj的似然矩阵;ck、cj分别表示当前训练批中第k个、第j个自定义唤醒词的中心向量;n表示每个训练批包含的自定义唤醒词的数目,且2≤n≤p,p表示用户注册的自定义唤醒词数量;m表示每个自定义唤醒词包含的微调训练样本数,且m≥2;w1和w2表示两个不同取值的线性因子,本具体实施方式中,线性因子w1和w2分别设置为10和-5;cos(·)表示余弦相似度。即基于一个训练批中,每个样本的损失函数值的累加和就可以计算出整个训练批的损失函数值。
微调阶段采用adam优化器,学习率为0.001,批大小为100,微调阶段总共训练10个周期。微调阶段采用增量训练,不使用预训练的数据集,采用将范例样本和数据增强处理后的范例样本一起作为微调阶段的训练样本,经过预处理后得到其特征矩阵,载入预训练阶段训练好的且移除分类层的神经网络进行训练,对指定神经网络层的权重进行微调。即在微调阶段,不会对神经网络的所有权重进行微调,而是选择神经网络最后f层的权重进行微调,f的具体取值基于实际应用场景进行设置,本发明不做具体限定。本具体实施方式中,本具体实施方式中,设置f=13,即对第一个卷积块之后所有可训练的网络层权重进行微调。
当神经网络经过预训练阶段和微调阶段,权重固定后,得到的训练好的神经网络作为支持自定唤醒词的关键词检测器。对于用户注册的q条同一自定义唤醒词样本,可以通过支持自定唤醒词的关键词检测器的前向计算得到对应的q个输出向量,对其取平均,即可得到当前自定唤醒词的一个特征向量,将其保存并作为该自定义唤醒词的模板,从而得到p个模板。即将同一自定义唤醒词的q个前向计算的输出结果的均值作为每个自定唤醒词的模板。当需要进行检测时,对待检测的语音数据首先进行预处理,得到待检测的语音数据的特征矩阵,并输入至支持自定唤醒词的关键词检测器,基于其前向计算得到待检测的语音数据的输出向量,并分别计算该输出向量与p个模板对应的特征向量之间的余弦相似度,并与相似度阈值进行比较,保留大于或等于相似度阈值的余弦相似度,通常满足大于或等于相似度阈值的余弦相似度仅为一个,从而基于该余弦相似度对应的自定义唤醒词得到待检测的语音数据的关键词检测结果,即存在;若为多个,则选取最大的余弦相似度所对应的自定义唤醒词即为待检测的语音数据的关键词检测结果。且当待检测的语音数据的输出向量与p个模板之间的余弦相似度均小于相似度阈值时,则表明待检测的语音数据中不存在自定唤醒词。本具体实施方式中,将相似度阈值设置为0.7。
以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除