一种增量式语音命令词识别方法与流程

文档序号:19949155发布日期:2020-02-18 10:04阅读:201来源:国知局
技术简介:
本发明针对传统语音识别依赖云端、资源消耗大且不支持动态扩展指令的问题,提出一种基于深度学习的增量式语音命令词识别方法。通过构建包含旧指令与新指令的混合模型,结合样本池存储策略及分类-蒸馏联合损失函数,实现本地化、低存储的增量训练,使模型在保留原有识别能力的同时动态扩展新指令,适用于边缘设备部署。
关键词:增量式语音识别,深度学习

本发明涉及基于深度神经网络和增量学习进行增量式语音识别的处理方法,更具体地,涉及一种基于深度学习的增量式语音命令词识别的方法。



背景技术:

近年来,深度学习迅猛发展,并被应用于图像识别和语音识别领域,取得了超越人类的水平。

在许多场景中,迫切需要给机器下达命令,让机器遵循指令完成特定任务。由于完整的语音识别技术由科技巨头所掌握,而且需要联网环境才能进行语音识别,即使能够在本地运行,也需要耗费大量的计算资源。此外,在这些场景中,也不需要完整的语音识别能力,只需要让机器能够“听懂”某些特定的命令。

在上述应用场景中,随着时间的推移,可能想要扩充指令,让机器既能识别原有指令,又能识别新添加的指令,这时候就需要一种增量式的语音命令词识别方法。



技术实现要素:

发明目的:为了满足在某些场景中需要给机器下达指令的需求,同时支持增加新的指令,且无需联网或者向科技公司购买语音识别服务就能在本地进行语音命令词识别。

为了解决上述技术问题,本发明公开了一种增量式语音命令词识别方法,该方法可以用在各种需要由人向机器下达命令,让机器执行指定动作并增添新的指令的场景中,包括如下步骤:

步骤1,判断本次构建的语音命令词识别模型是否需要基于现有语音命令词识别模型进行增量式构建,如果需要,转步骤2;如果不需要,转步骤3;所述本次构建的语音命令词识别模型是新模型,现有语音命令词识别模型是旧模型;

步骤2,定义包含旧模型的命令词和新添加的命令词的命令词集合其中,当1≤i≤n1时,cmdi表示源自于旧模型的命令词,数量为n1;当n1≤i≤n2时,cmdi表示新添加的命令词,数量为n2;

步骤3,定义只包含新添加的命令词的命令词集合其中,cmdi,表示第i条命令,1≤i≤n2,n2表示命令条数,定义n1=0表示命令词集合中没有旧模型的命令;

步骤4,构建输入为语音数据,输出为预测类别的深度神经网络模型,形式化为y=fθ(x),其中x表示输入的语音数据,y表示模型预测的类别,f表示语音命令词识别模型,θ表示模型的参数,所述深度神经网络模型即为本次构建的语音命令词识别模型;

步骤5,获取训练数据,训练语音命令词识别模型,得到训练好的语音命令词识别模型;

步骤6,从训练数据中选取一部分数据进入样本池。

步骤1包括:通过人工方式进行判断,当需要向现有命令词识别模型中添加新的命令时,采用增量式方法构建新的语音命令词模型。这里增量的含义为,构建的新模型保留旧模型对现有命令词的识别能力,同时能够对新添加的命令词进行识别。

步骤2中的命令词集合包含两部分:

第一部分是前n1个命令词,这是源自于旧模型的命令词;

第二部分是后n2个命令词,这是新添加的命令词。

步骤3中定义的命令词的集合只包含新添加的n2个命令词。

步骤4中,所述构建输入为语音数据,输出为预测类别的深度神经网络模型,具体包含以下步骤:

首先对输入语音数据提取梅尔倒谱系数mfcc(mel-scalefrequencycepstralcoefficients,mfcc),采用一层神经网络提取所述梅尔倒谱系数mfcc,记为mfcc层;

接着是两层卷积神经网络cnn(convolutionalneuralnetworks,cnn);

接下来是两层循环神经网络lstm(long-shorttermmemory,lstm);

再接着是注意力机制(attention)层,注意力机制表示为ouput=dot(input,score(input)),这里的input表示输入,output表示输出,dot表示点积,score表示对input计算的注意力分数;

模型的最后部分是三个全连接层,最后一层的激活函数为softmax;softmax是一个函数,其计算方式为这里zi,1≤i≤n1+n2表示该函数的输入,表示命令词的类别数,σ(zi)表示输入数据的类别属于第i类的概率,概率最大的项对应的类别为模型的输出类别

步骤5包括:

步骤5-1,获取训练数据:如果本次构建的语音命令词识别模型不需要基于现有语音命令词识别模型进行增量式构建,则将新添加的命令词的数据作为训练数据;新添加的命令词的数据可以借助人工手段等方式获取;

如果本次构建的语音命令词识别模型需要基于现有语音命令词识别模型进行增量式构建,现有命令词的数据从旧模型的样本池中获取,所述样本池为一个能够最多容纳k条数据的容器,它保存着旧模型的部分训练数据;

如果是基于现有语音命令词识别模型进行增量式构建,还需要预加载旧模型的权重到新模型中,记输入数据为d={(xi,yi)},xi,yi分别表示第i条语音数据和它的真实类别,模型训练时的损失函数loss计算方式如下:

其中,gy(xi)表示在模型训练时对于输入xi,最后一层进入激活函数之前的值的第y项,这里qy(xi)是在模型训练之前计算的,表示对于输入xi,最后一层进入激活函数之前的值的第y项;是一个表示函数,定义为:

步骤5-2,将训练数据拆分为训练集、验证集和测试集;

步骤5-4,训练模型,得到训练好的语音命令词识别模型:在训练集上训练数据,当模型在验证集上的损失函数值loss不再下降后停止训练,在测试集上选择准确率最高的模型作为最终的训练好的语音命令词识别模型;准确率acc计算公式为acc=correct/total,其中correct表示模型预测正确的数据条数,total表示测试数据的总条数。

步骤6包括:

步骤6-1,计算训练数据中每种命令词数据被保存进入样本池的数量:

首先计算样本池能够保存的每种命令词数据的最大数量nmax,其计算方式为nmax=k/(n1+n2);

然后计算训练数据中每种命令词数据被保存进入样本池的数量为nsave(i)=min(nmax,ntrain(i)),1≤i≤n1+n2,其中ntrain(i)表示训练数据中第i种命令词的实际数量;

步骤6-2,从训练数据中选取部分数据进入样本池,每种命令词数据的选取方式为随机选取,具体方法为,对于训练数据中的第i类数据,其数量为ntrain(i),从这ntrain(i)条数据中随机选取nsave(i)条数据放入样本池。

有益效果:本发明的显著优点是无需联网、无需向科技公司购买完整语音识别服务就能够满足给机器下达指令的需求。支持动态添加新的指令并保留对原有指令的识别能力,同时只需要保存原有命令词的部分数据,节省存储空间。最终的模型可以部署在廉价的硬件上,并能高效运行。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。

图1为本发明语音命令词识别方法流程图。

图2为本发明中用于识别命令词的神经网络模型结构示意图。

具体实施方式

图1是本发明语音命令词识别方法的流程图。

为使解释更加清楚,在某些地方会以用语音命令控制小车移动这一应用为例进行说明。

如图1所示,该方法包含以下步骤:

步骤1,判断本次构建的语音命令词识别模型(新模型)是否需要基于现有语音命令词识别模型(旧模型)进行增量式构建,如果需要,转步骤2;如果不需要,转步骤3。

构建语音命令词识别模型时,如果是需要在现有模型基础上增加新的命令词,则应该采用增量式构造方法。

步骤2,定义包含旧模型的命令词和新添加的命令词的命令词集合这里cmdi,1≤i≤n1表示源自于旧模型的命令词,数量为n1,cmdi,n1≤i≤n2表示新添加的命令词,数量为n2。

步骤3,定义只包含新添加的命令词的命令词集合这里cmdi,1≤i≤n2表示第i条命令,n2表示命令条数,定义n1=0表示命令词集合中没有旧模型的命令。

步骤4,构建输入为语音数据,输出为预测类别的深度神经网络模型,形式化为y=fθ(x),其中x表示输入的语音数据,y表示模型预测的类别,f表示语音命令词识别模型,θ表示模型的参数。图2为该深度神经网络的模型结构示意图,其具体构建方式如下:

首先对输入语音数据提取梅尔倒谱系数(mel-scalefrequencycepstralcoefficients,mfcc),本发明采用一层神经网络提取该mfcc特征,记为mfcc层。采用mfcc特征式因为人耳对低频语音信号敏感,对高频语音信号不敏感,而mfcc特征能够很好模拟人耳这一特性。

接着是两层卷积神经网络(convolutionalneuralnetworks,cnn)。卷积神经网络能够很好克服语音信号的多变性,捕获输入中更加有用的信息。

接下来是两层循环神经网络(long-shorttermmemory,lstm)。由于语音信号是一个时间序列,循环神经网络能够捕获语音信号中上下文的依赖关系。

再接着是注意力机制(attention)层。注意力机制表示为ouput=dot(input,score(input)),这里的input表示输入,output表示输出,dot表示点积,score表示对input计算的注意力分数。注意力机制类似于人的注意力,让神经网络更加关注于输入中有利于区分不同类别的部分。

模型的最后部分是三个全连接层,最后一层的激活函数为softmax;softmax是一个函数,其计算方式为这里zi,1≤i≤n1+n2表示该函数的输入,表示命令词的类别数,σ(zi)表示输入数据的类别属于第i类的概率,概率最大的项对应的类别为模型的输出类别。该输出类别即为语音命令词模型实际用于预测时的预测类别。

步骤5,获取训练数据,训练语音命令词识别模型,得到语音命令词识别模型。该过程包括:

步骤5-1,获取训练数据。新添加的命令词的数据可以借助人工手段等方式获取。如果是训练增量式命令词识别模型,现有命令词的数据从旧模型的样本池中获取。这里样本池的定义为一个可以最多容纳k条数据的容器,它保存着旧模型的部分训练数据;

步骤5-2,如果是基于旧模型增量式的训练新模型,则需要预加载旧模型的权重到新模型中。记输入数据为d={(xi,yi)},(xi,yi)表示第i条语音数据和它的真实类别,模型训练时的损失函数计算方式如下:

这里gy(xi)表示在模型训练时对于输入xi,最后一层进入激活函数之前的值的第y项,这里qy(xi)是在模型训练之前计算的,表示对于输入xi,最后一层进入激活函数之前的值的第y项。是一个表示函数,定义为

该损失函数的设计思想如下。损失函数包含两部分,其中被称为分类损失,表示模型预测类别和输入数据真实类别之间的误差;另一部分是它被称为蒸馏损失,表示新模型的预测类别和旧模型的预测类别之间的误差。通过把着两种损失结合起来,既能很好保留旧模型的预测能力,也能让输出类别更加贴近真实类别。

步骤5-3,将训练数据拆分为训练集、验证集和测试集。在具体实施方式中,常用的训练数据拆分比例为训练集:验证集:测试集=8:1:1;

步骤5-4,训练模型,得到语音命令词识别模型;在训练集上训练数据,当模型在验证集上的损失函数值loss不再下降后停止训练,在测试集上选择准确率最高的模型作为最终的语音命令词识别模型。这里准确率acc计算公式为acc=correct/total,其中correct表示模型预测正确的数据条数,total表示测试数据的总条数。

步骤6,从训练数据中选取一部分数据进入样本池,包括:

步骤6-1,计算训练数据中每种命令被保存进入样本池的数量;首先计算样本池能够保存的每种命令词数据的最大数量。其计算方式为nmax=k/(n1+n2)。然后计算训练数据中每种数据被保存进入样本池的数量为nsave(i)=min(nmax,ntrain(i)),1≤i≤n1+n2,这里ntrain(i)表示训练数据中第i种命令词的实际数量;

步骤6-2,从训练数据中选取部分数据进入样本池。每种命令词数据的选取方式为随机选取。具体实施方式为,对于训练数据中的第i类数据,其数量为ntrain(i),从这ntrain(i)条数据中随机选取nsave(i)条数据放入样本池。

以上为本发明的实施过程。

本发明提供了一种增量式语音命令词识别方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

当前第1页1 2 3 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!