一种语音识别方法、电子设备和存储介质
技术领域
本发明实施例涉及计算机技术领域,特别涉及一种语音识别方法、电子设备和存储介质。
背景技术
随着社会发展与科技的进步,越来越多的智能设备出现在人们的生活当中。随着语音识别技术的发展,语音交互正在逐渐改变着人们的生活习惯。智能设备可以支持各种各样的功能,想要快速交互,开启这些功能或服务就需要用到命令词语音识别技术。
然而,发明人发现相关技术中至少存在如下问题:目前通常采用声学模型与语言模型结合方式进行命令词识别,但是,这种命令词的识别方式准确率存在瓶颈。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施方式的目的在于提供一种语音识别方法、电子设备和存储介质,使得可以准确、快速地识别语音中的命令词。
为解决上述技术问题,本发明的实施方式提供了一种语音识别方法,包括:根据语音帧的声学特征,确定语音帧对应的各个音素的概率;将语音帧对应的各个音素的概率输入路径树模型;其中,路径树模型根据语音帧对应的各个音素的概率、预存的路径树和预设的路径搜索规则,确定语音帧构成的命令词;其中,路径树基于命令词生成,路径树的节点保存有节点对应的字的信息,字的信息指示字的构成信息;根据路径树模型的输出,确定命令词。
本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的语音识别方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的语音识别方法。
本发明实施方式相对于现有技术而言,将语音帧对应的各个音素的概率输入路径树模型,根据路径树模型的输出,确定命令词;路径树模型根据语音帧对应的各个音素的概率、预存的路径树和预设的路径搜索规则,确定语音帧构成的命令词,由于路径树可以存储大量的命令词,使得可以增加路径树模型的可识别的命令词的数量,提高该路径树模型确定命令词的准确性;路径树模型采用预设的路径搜索规则,而无需经过大量的训练,减小了路径树模型构建的复杂度,同时可以提高该路径树模型的适用范围;此外,本实施方式中路径树模型是根据输入的语音帧对应的各个音素的概率,确定语音帧构成的命令词,而每个字是基于音素构成,通过对各个音素的概率的确定,从而确定出命令词中每个字,进而可以提高确定的每个字的准确度,提高由字构成的命令词的准确性。
另外,预设的路径搜索规则包括:根据语音帧对应的各个音素的概率,以及激活节点对应的字的信息,确定语音帧属于路径树的激活节点的概率;路径树的节点包括激活节点和未激活节点;根据语音帧属于路径树的激活节点的概率,以及路径树的各个节点的位置信息,确定语音帧构成的命令词。由于无需训练,通过确定语音帧属于路径树的激活节点的概率,和路径树的各个节点的位置信息,确定语音帧构成的命令词,搜索规则简单。
另外,根据语音帧属于路径树的激活节点的概率,以及路径树的各个节点的位置信息,确定语音帧构成的命令词,包括:从路径树的激活节点列表中未被提取过的激活节点中,提取一个激活节点,针对提取的激活节点,进行以下操作:若确定语音帧属于激活节点的概率小于第一阈值,且,激活节点是叶子节点,则从激活节点回溯至根节点,确定语音帧构成的命令词;若确定语音帧属于激活节点的概率大于或等于第一阈值,或者,语音帧属于激活节点的概率小于第一阈值,且,激活节点不是叶子节点,根据语音帧属于激活节点的子节点的概率,确定是否激活该激活节点的子节点;判断激活节点列表中是否存在未被提取的激活节点,若确定存在,返回从路径树的激活节点列表中未被提取过的激活节点中,提取一个激活节点的步骤,直至不存在未被提取的激活节点,或者,成功确定语音帧构成的命令词;若确定不存在,更新激活节点列表,对下一语音帧进行操作。根据语音帧属于激活节点的概率,在路径树中搜寻该语音帧构成的命令词,可以提高确定的每个激活节点的准确性,进而提高命令词的准确性。
另外,根据语音帧属于激活节点的子节点的概率,确定是否激活该激活节点的子节点,具体包括:针对激活节点的每个子节点,判断语音帧属于激活节点的子节点的概率是否大于或等于第二阈值;若确定是,激活该激活节点的子节点。通过将语音帧属于激活节点的子节点的概率和第二阈值进行比较,在确定大于第二阈值时激活该激活节点的子节点,避免错误激活该激活节点的子节点的问题,减少不必要的搜索步骤,提高确定的速度。
另外,在根据语音帧属于激活节点的子节点的概率,确定是否激活该激活节点的子节点之前,语音识别方法还包括:根据语音帧对应的各个音素的概率,以及预先存储的激活节点对应的字的信息,确定激活节点的跳转信息,激活节点的跳转信息指示语音帧对应的激活节点对应的字的音素;确定激活节点的跳转信息指示语音帧对应的激活节点对应的字的音素为激活节点对应的字的结束音素。若不是在结束音素后激活该激活节点的子节点,那么该语音帧就不属于该激活节点的子节点的概率很大,导致搜索资源的浪费,因而在跳转信息指示语音帧对应的激活节点对应的字的音素为激活节点对应的字的结束音素时,激活该激活节点的子节点,可以有效提高搜索正确子节点的效率。
另外,在确定语音帧属于激活节点的概率大于或等于第一阈值之后,语音识别方法还包括:将激活节点的第一统计值加一;第一统计值指示属于激活节点的语音帧的数量;在根据语音帧属于激活节点的子节点的概率,确定是否激活该激活节点的子节点之前,语音识别方法还包括:确定第一统计值大于或等于第三阈值;第一统计值指示属于激活节点的语音帧的数量。通过将第一统计值与第三阈值进行比较后,确定是否激活该激活节点的子节点,通过该判断,可以在语音帧不属于激活节点的子节点的情况下,不再进行后续操作,减少无用的搜索,进一步提高搜索效率。
另外,在确定激活节点的跳转信息之后,还包括:确定语音帧丢失的音素的个数;在从激活节点回溯至根节点,确定语音帧构成的命令词之前,语音识别方法还包括:确定语音丢失的音素的总个数小于第四阈值。丢失的音素的总个数小于第四阈值,表明该搜索正确率较高,若丢失的音素的总个数大于第四阈值,则表明当前搜索存在错误,通过与第四阈值进行比较,进一步提高确定的命令词的概率。
另外,在确定语音帧属于激活节点的概率小于第一阈值之后,语音识别方法还包括:关闭激活节点。由于叶子节点下无其他的节点,表明到该叶子节点时已完成路径的搜索,关闭激活节点,可以减少后续再次进行路径搜索的难度和冗余。
另外,在确定所述激活节点的跳转信息之后,还包括:根据激活节点的跳转信息,判断激活节点对应的字的音素是否跳转错误;若确定是,将第二统计值加一;第二统计值指示不属于激活节点的语音帧的数量;在确定语音帧属于激活节点的概率小于第一阈值之后,还包括:将第二统计值加一;在关闭激活节点之前,语音识别方法还包括:确定第二统计值大于第五阈值。通过第五阈值,防止错误关闭激活节点。
另外,字的构成信息包括字包含的各个音素;根据语音帧对应的各个音素的概率,以及激活节点对应的字的信息,确定语音帧属于所述路径树的激活节点的概率,具体包括:根据激活节点对应的字的信息,确定激活节点对应的字包含的各个音素的概率;根据包含的各个音素的概率,计算语音帧属于激活节点的概率。基于各个音素的概率,确定语音帧属于激活节点的概率,由于音素组成字,采用更小单位的音素确定语音帧属于激活节点的概率,提高了确定的每个字的准确性,从而提高确定命令词的准确性。
另外,字的构成信息还包括字包含的各个音素的易混淆音素;在根据包含的各个音素的概率,计算语音帧属于激活节点的概率之前,语音识别方法还包括:确定包含的各个音素的易混淆音素的概率;根据包含的各个音素的概率,计算语音帧属于激活节点的概率,具体包括:根据包含的各个音素的概率,以及包含的各个音素的易混淆音素的概率,计算语音帧属于激活节点的概率。增加各个音素的易混淆音素的概率,可以提高在强噪声、发音不准情况下,确定的命令词的准确性。
另外,根据包含的各个音素的概率,以及包含的各个音素的易混淆音素的概率,计算语音帧属于激活节点的概率,具体包括:针对激活节点对应的字的每个音素,分别进行以下操作:将音素的易混淆音素的概率和音素的易混淆音素的权重的积,加上音素的概率,得到音素的纠正概率;将激活节点对应的字的各个音素的纠正概率的和,作为语音帧属于激活节点的概率。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明提供的第一实施方式中的语音识别方法的具体流程图;
图2是根据本发明提供的第一实施方式中的语音识别方法中一种的路径树的示意图;
图3是根据本发明提供的第一实施方式中的语音识别方法中一种预设的路径搜索规则的子步骤的示意图;
图4是根据本发明提供的第一实施方式中的语音识别方法中一种确定语音帧构成的命令词的实现的示意图;
图5是根据本发明提供的第二实施方式中的语音识别方法中一种确定语音帧构成的命令词的实现的示意图;
图6是根据本发明提供的第三实施方式中的电子设备的具体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
发明人发现相关语音识别技术中,若出现强噪声或者发音不准确的情况下,往往不能得到准确的命令词,且目前的语音识别技术的准确度不高,影响用户与设备之间的语音交互功能。
本发明的第一实施方式涉及一种语音识别方法。该语音识别的方法,可以应用于电子设备,如:机器人、音箱、智能家居、服务器等。该语音识别方法的具体流程如图1所示。
步骤101:根据语音帧的声学特征,确定语音帧对应的各个音素的概率。
具体的说,可以通过声音采集装置采集实时音频信号,声音采集装置可以是麦克风。将采集的音频信号进行分帧、加窗等操作后,提取该音频信号的声学特征,声学特征可以是FBANK声学特征,如:40维FBANK声学特征;也可以是MFCC声学特征,如:12维MFCC声学特征。将语音帧的声学特征输入声学模型中,可以得到该语音帧对应的各个音素的概率。
该声学模型输入的是语音帧的声学特征,输出的是该语音帧对应的各个音素的概率,该声学模型可以采用深度神经网络作为模型架构,训练数据为一个语言体系中的所有的音素,例如,汉语体系中的中所有拼音的音素,即拼音中的声母音素和韵母音素。本示例中对该声学模型具体的训练过程不再赘述。
值得一提的是,由于该声学模型的输入为语音帧的声学特征,将每个音素的概率作为输出;由于不是对固定的命令词进行的声学模型训练,使得若在更换命令词的情况下,无需重新采集训练的命令词语音数据,可以有效的降低因更换命令词带来的开发成本。
步骤102:将语音帧对应的各个音素的概率输入路径树模型。
路径树模型根据语音帧对应的各个音素的概率、预存的路径树和预设的路径搜索规则,确定语音帧构成的命令词;其中,路径树基于命令词生成,路径树的节点保存有节点对应的字的信息,字的信息指示字的构成信息。
具体的说,路径树基于命令词生成,由于语音帧均包含有静音,静音状态可跳转到任意音素,因而可以将路径树的根节点设置为静音建模单元,按照命令词包含的字的顺序逐层构建,例如,命令词有“打开蓝牙”、“关闭台灯”、“查询城市”以及“查询天气”,根节点为静音建模单元,按照命令词包含的字的顺序逐层构建,得到如图2所示的路径树,可以理解的是,根节点一直处于激活,且可以向其子节点跳转的状态。
值得一提的是,在构建路径树的过程中,对于具有相同前缀的命令词,将该前缀信息保存在同一个父节点中,可以有效降低解码过程中的内存占用率以及搜索的复杂度。
其中,每个节点保存有对应的字的信息,该字的信息可以包括:字的构成信息。该字的信息还可以包括:字的标识信息、字的构成信息、解码状态和以及激活信息等。
在一个例子中,预设的路径搜索规则包括如图3所示的路径搜索子步骤:
子步骤S1:根据语音帧对应的各个音素的概率,以及激活节点对应的字的信息,确定语音帧属于路径树的激活节点的概率,路径树的节点包括激活节点和未激活节点。
在一个例子中,字的构成信息包括字包含的各个音素;根据激活节点对应的字的信息,确定激活节点对应的字包含的各个音素的概率;根据包含的各个音素的概率,计算语音帧属于激活节点的概率。
具体的说,路径树的各个节点的状态信息可以存储在激活节点列表中,在确定了语音帧对应的各个音素的概率后,可以提取该激活节点列表中的一个激活节点,获取该激活节点对应的字的信息,该字的信息包括字的标识信息,通过字的标识信息,可以查询到该字包含的各个音素,根据语音帧对应的各个音素的概率,即可确定到该激活节点的字中每个音素的概率,将该激活节点的字中每个音素的概率之和,作为该语音帧属于该激活节点的概率。下面以一个具体的例子说明:
将语音帧的声学特征输入声学模型,得到该得到的语音帧对应的各个音素的概率,例如,语音帧中的内容为“你”该语音帧的音素为“n”和“i”;声学模型输出的是汉字32个音素的概率所组成的向量,其中,音素n和音素i的概率高,其余的因素的概率低或为0。假设激活节点的字为“我”,根据该激活节点的ID信息,查找该激活节点中的音素分别为“w”和“o”;从该语音帧对应的各个音素的概率中确定“w”和“o”的概率值分别为“0.01”和“0.05”将两者之和作为该语音帧属于该激活节点的概率P1,即为P1=0.01+0.05。
在实际应用中,采集的音频数据中存在强噪声的概率很大,同时也存在发音不标准的问题,为了提高确定语音帧属于路径树的激活系节点的概率,本实施方式中提供另一种确定该语音帧属于路径树的激活节点的概率。
在另一个例子中,该字的构成信息还包括:字包含的各个音素的易混淆音素。确定包含的各个音素的易混淆音素的概率,根据包含的各个音素的概率,计算语音帧属于激活节点的概率的具体过程为:根据包含的各个音素的概率,以及包含的各个音素的易混淆音素的概率,计算语音帧属于激活节点的概率。
具体的说,可以预先存储每个音素的易混淆音,例如,在汉语***中,音素“n”的易混淆音是“l”。在确定了语音帧对应的各个音素的概率后,可以提取该激活节点列表中的一个激活节点,获取该激活节点对应的字的信息,该字的信息包括字的标识信息,通过字的标识信息,可以查询到该字包含的各个音素,以及查询得到各个音素的易混淆音素;根据语音帧对应的各个音素的概率,即可确定到该激活节点的字中每个音素的概率和该字的每个音素各自对应的易混淆音素的概率。
根据包含的各个音素的概率,以及包含的各个音素的易混淆音素的概率,计算语音帧属于激活节点的概率,具体过程可以为:针对激活节点对应的字的每个音素,分别进行以下操作:将音素的易混淆音素的概率和音素的易混淆音素的权重的积,加上音素的概率,得到音素的纠正概率;将激活节点对应的字的各个音素的纠正概率的和,作为语音帧属于激活节点的概率。
具体的说,易混淆音素的权重可以根据实际应用语言的需要预先设置,例如,若命令此应用于支持汉语的智能音箱中,“n”的易混淆音“l”的权重可以设置在0~1的范围内,本示例中的权重的范围仅为举例说明,并不对本发明的技术方案构成限定。将该激活节点对应的字的各个音素的纠正概率的和,作为语音帧属于激活节点的概率,例如:语音帧中的内容为“你”该语音帧的音素为“n”和“i”;声学模型输出的是汉字32个音素的概率所组成的向量,其中,音素n和音素i的概率高,其余的因素的概率低或为0。假设激活节点的字为“福”,根据该激活节点的标识信息,查找该激活节点中的音素分别为“f”和“u”;从该语音帧对应的各个音素的概率中确定“f”以及“u”的概率值分别为“0.01”和“0.05”;“f”的易混淆音素“h”的概率为0.02;“u”的易混淆音素“o”的概率0.012;那么每个音素的纠正概率分别为:f的纠正概率P1=0.01+0.02*权重1;u的纠正概率P2=0.05+0.012*权重2;该语音帧属于该激活节点的概率P0=P1+P2。
子步骤S2:根据语音帧属于路径树的激活节点的概率,以及路径树的各个节点的位置信息,确定语音帧构成的命令词。
具体的说,确定语音帧构成的命令词的过程可以包括如图4所示的子步骤:
子步骤S21:从路径树的激活节点列表中未被提取过的激活节点中,提取一个激活节点。
具体的说,为了减少搜索的难度,可以按照激活节点列表中的排列顺序,从该激活节点列表中选取未被提取过的激活节点,例如,激活节点列表中第一个激活节点排列最前,则可提取该激活节点。
针对提取的激活节点,进行如下处理:
子步骤S22:判断是否语音帧属于激活节点的概率小于第一阈值,且,激活节点是叶子节点,若确定是,则执行步骤S23,若确定语音帧属于激活节点的概率大于或等于第一阈值,或者,语音帧属于激活节点的概率小于第一阈值且激活节点不是叶子节点,则执行步骤S24。
具体的说,可以预先设置第一阈值,例如,第一阈值设置在0.5~0.9的范围内;若语音帧属于激活节点的概率小于第一阈值,表明该语音帧不属于该激活节点;而由于路径树是按照命令词包含字的顺序逐层构建,故若激活节点是叶子节点,表明当前已经是搜索到命令词的结尾,无需再进行后续的搜索,可以回溯至根节点,确定命令词。
例如,如图2所示的路径树,若当前的激活节点是“牙”字,语音帧当前为静音;由于确定该语音帧属于激活节点的概率小于第一阈值,且该激活节点“牙”是叶子节点,故可确定执行步骤S23,从激活节点回溯至根节点,确定语音帧构成的命令词,即可确定出命令此为“打开蓝牙”。
若语音帧属于激活节点的概率大于或等于第一阈值;则表明该语音帧属于该激活节点,还可以进行后续的查找。若语音帧属于激活节点的概率小于第一阈值,且该激活节点不是叶子节点,则表明该语音帧不属于该激活节点,同时由于该激活节点不是叶子节点,则可以更换激活节点继续进行搜索。
例如,如图2所示的路径树,若当前的激活节点是“蓝”字;语音帧属于激活节点的概率大于第一阈值,即表明该语音帧属于该激活节点“蓝”;则确定执行子步骤S24。若确语音帧属于激活节点的概率小于第一阈值;则表明该语音帧不属于该激活节点“蓝”字;且该激活节点不是叶子节点,也执行步骤S24。
子步骤S23:从激活节点回溯至根节点,确定语音帧构成的命令词。
子步骤S24:根据语音帧属于激活节点的子节点的概率,确定是否激活该激活节点的子节点。
在一个例子中,针对该激活节点的每个子节点,判断语音帧属于激活节点的子节点的概率是否大于或等于第二阈值;若确定是,激活该激活节点的子节点。
具体的说,由于子步骤S22中的激活节点不是叶子节点,可以激活该激活节点的子节点进行后续搜索。可以提取该激活节点中任一子节点,确定该语音帧属于该子节点的概率,确定的方式与子步骤S1中的类似,此处将不再赘述。第二阈值可以预先设置,该第二阈值的值可以与第一阈值的值相同,也可以不同。该确定的该语音帧属于该子节点的概率与第二阈值进行比较,若该语音帧属于该子节点的概率大于第二阈值,表明该语音帧属于该子节点;则激活该子节点;若该语音帧属于该子节点的概率小于该第二阈值,表明该语音帧不属于该激活节点的子节点,则不激活该子节点,直接执行子步骤S25。
子步骤S25:判断激活节点列表中是否存在未被提取的激活节点,若确定存在,返回子步骤S21,即返回从路径树的激活节点列表中未被提取过的激活节点中,提取一个激活节点的步骤;直至不存在未被提取的激活节点,或者,成功确定语音帧构成的命令词;若确定不存在,则执行步骤S26。
例如,若激活列表中还有一个未被提取的激活节点,那么返回步骤S21,直至不存在未被提取的激活节点;或者直至已经确定语音帧构成的命令词。
步骤S26:更新激活节点列表,对下一语音帧进行操作。
具体的说,若不存在未被提取的激活节点,表明已提取了所有激活的节点,那么可以更新该激活节点列表,对下一语音帧进行操作;更新可以是将除根节点外的所有节点设置为未被激活的状态。
步骤103:根据路径树模型的输出,确定命令词。
具体地说,将路径树模型的输出作为确定的命令词。本实施例中,提供了一种限定命令词的语音识别方法,即针对限定的命令词进行语音识别的方法。本实施例中,使用路径树形式存储命令词,在低资源占用、保证命令词识别准确率的前提下,可以支持更多的命令词的识别。
本发明实施方式相对于现有技术而言,将语音帧对应的各个音素的概率输入路径树模型,根据路径树模型的输出,确定命令词;路径树模型根据语音帧对应的各个音素的概率、预存的路径树和预设的路径搜索规则,确定语音帧构成的命令词,由于路径树可以存储大量的命令词,使得可以增加路径树模型的可识别的命令词的数量,提高该路径树模型确定命令词的准确性;路径树模型采用预设的路径搜索规则,而无需经过大量的训练,减小了路径树模型构建的复杂度,同时可以提高该路径树模型的适用范围;此外,本实施方式中路径树模型是根据输入的语音帧对应的各个音素的概率,确定语音帧构成的命令词,而每个字是基于音素构成,通过对各个音素的概率的确定,从而确定出命令词中每个字,进而可以提高确定的每个字的准确度,提高由字构成的命令词的准确性。
本发明的第二实施方式涉及一种语音识别方法。本实施方式在第一实施方式中子步骤S2根据语音帧属于路径树的激活节点的概率,以及路径树的各个节点的位置信息,确定语音帧构成的命令词的进一步改进,具体改进之处为:在本发明第二实施方式中,在激活该激活节点前确定该经激活节点的跳转信息指示语音帧对应的激活节点对应的字的音素为激活节点对应的字的结束音素。该确定语音帧构成的命令词的具体实现示意图如图5所示。
子步骤S21:从路径树的激活节点列表中未被提取过的激活节点中,提取一个激活节点。
该子步骤S21与第一实施方式中的子步骤S21大致相同,此处将不再赘述。
针对提取的激活节点,进行如下处理:
子步骤S22:判断是否语音帧属于激活节点的概率小于第一阈值,且,激活节点是叶子节点,若确定是,则执行步骤S23,若确定语音帧属于激活节点的概率大于或等于第一阈值,或者,语音帧属于激活节点的概率小于第一阈值且激活节点不是叶子节点,则执行步骤S24。
在一个例子中,若确定语音帧属于激活节点的概率小于第一阈值,且,激活节点是叶子节点之后,还可以关闭该激活节点。
具体的说,若确定语音帧属于该激活节点的概率小于第一阈值,表明该语音帧不属于该激活节点的字,且该激活节点是叶子节点,表明该叶子节点之前的激活节点均是语音帧构成的字,可以确定一个命令词的搜索已经完成,因而可以在执行步骤S23之前,关闭该激活节点。
值得一提的是,由于叶子节点下无其他的节点,表明到该叶子节点时已完成路径的搜索,关闭激活节点,可以减少后续再次进行路径搜索的难度和冗余。
该子步骤S22与第一实施方式中的子步骤S22大致相同,此处将不再赘述。
子步骤S23:从激活节点回溯至根节点,确定语音帧构成的命令词。
在一个例子中,为了进一步提高确定的语音帧构成的命令词,还可以确定语音帧丢失的音素的个数;若确定语音丢失的音素的总个数小于第四阈值之后,执行子步骤S23。
具体的说,第四阈值可以根据需要进行设置,例如,第四阈值设置为3个;当丢失的音素的总个数小于第四阈值,表明该丢失的音素个数不会影响确定的命令词的准确性;此时,可以直接执行步骤S23,确定语音帧构成的命令词。若丢失的音素的总个数大于第四阈值,那么当前搜索可能存在错误,从激活节点回溯至根节点得到的命令词不准确,因此可以不执行子步骤S23,也可以返回提取激活节点的步骤,即执行本实施方式中的步骤S21;还可进行报警等其他操作。
子步骤S24:根据语音帧对应的各个音素的概率,以及预先存储的激活节点对应的字的信息,确定激活节点的跳转信息,激活节点的跳转信息指示语音帧对应的激活节点对应的字的音素。
根据激活节点的跳转信息,判断激活节点对应的字的音素是否跳转错误,若确定是,则将第二统计值加一;第二统计值指示不属于激活节点的语音帧的数量。若确定语音帧属于激活节点的概率小于第一阈值后,将第二统计值加一。当出现以上两种情况,都将第二统计值加一,该第二统计值用于统计不属于激活节点的语音帧的数量。因而在关闭激活节点之前,确定第二统计值大于第五阈值。
具体的说,由于第二统计值是在跳转错误,以及语音帧属于该激活节点的概率小于第一阈值后,即对第二统计值加一。第五阈值可以被设置为N,N为大于1,可以在该语音帧属于激活节点的概率小于第一阈值,且第二统计值大于第五阈值时关闭激活节点,即可以理解为该语音帧已经连续N次属于激活节点的概率小于第一阈值,例如,该第五阈值可以为3;当第二统计值大于第五阈值后,表明已经连续3次出现语音帧属于该激活节点的概率小于第一阈值的情况;或者表明已经连续3次出现语音帧属于该激活节点的概率小于第一阈值或跳转错误的情况,或者是连续3次跳转错误的情况。那么可以关闭该激活节点,从而减少后续对该语音帧进行搜索的复杂度。
子步骤S25:确定激活节点的跳转信息指示语音帧对应的激活节点对应的字的音素为激活节点对应的字的结束音素。
具体的说,由于一个字的语音包括多个音素,结束音素即为该字最后一个音素,若是在该字的中间音素确定后,就跳转下至该激活节点的子节点,那么该激活节点的任一子节点都不属于该语音帧,并会重新返回步骤S21,即重新提取激活节点,进行搜索,这会降低确定语音帧构成的命令词的速度,若确定激活节点的跳转信息指示语音帧对应的激活节点对应的字的音素为激活节点对应的字的结束音素,表明已经完整识别了该语音帧对应的字,此时进行跳转可以减少冗余。例如,若语音帧为“lian”,包含了三个音素,若激活节点的跳转信息为“i”;那么可以确定该语音帧对应的激活节点对应的字的音素不是结束音素,此时可以不必进行跳转至该激活节点“恋”的子节点。
需要说明的是,本领域技术人员可以理解,实际应用中,在判断是否激活该激活节点的子节点之前,还可以执行其他相关的判断步骤,例如,在确定语音帧属于激活节点的概率大于或等于第一阈值之后,将激活节点的第一统计值加一;第一统计值指示属于激活节点的语音帧的数量。在根据语音帧属于激活节点的子节点的概率,确定是否激活所述激活节点的子节点之前,判断第一统计值是否大于或等于第三阈值,若确定第一统计值大于或等于第三阈值;则可以执行子步骤S26,若第一统计值小于第三阈值,则不执行子步骤S26,执行子步骤S27。又如,电子设备在根据语音帧属于激活节点的子节点的概率,确定是否激活所述激活节点的子节点之前,根据激活节点的跳转信息,判断该语音帧是否对应该激活节点对应的字的结束音素,并判断第一统计值是否大于或等于第三阈值,在确定该语音帧对应该激活节点对应的字的结束音素,且,第一统计值大于或等于第三阈值之后,执行子步骤S26,若该语音帧不是对应于该激活节点对应的字的结束音素,或者,第一统计值小于第三阈值,则执行子步骤S27。
具体的说,第三阈值可以根据实际需要进行设置,例如,该第三阈值可以是10。第一统计值大于或等于第三阈值,且确定激活节点的跳转信息指示语音帧对应的激活节点对应的字的音素为激活节点对应的字的结束音素,则执行子步骤S26。
子步骤S26:根据语音帧属于激活节点的子节点的概率,确定是否激活该激活节点的子节点。
该步骤与第一实施方式中的子步骤S24大致相同,此处将不再进行赘述。
子步骤S27:判断激活节点列表中是否存在未被提取的激活节点,若确定存在,返回子步骤S21,即返回从路径树的激活节点列表中未被提取过的激活节点中,提取一个激活节点的步骤;直至不存在未被提取的激活节点,或者,成功确定语音帧构成的命令词;若确定不存在,则执行步骤S28。
该步骤与第一实施方式中的子步骤S25大致相同,此处将不再进行赘述。
子步骤S28:更新激活节点列表,对下一语音帧进行操作。
该步骤与第一实施方式中的子步骤S26大致相同,此处将不再进行赘述。
下面以一个例子介绍该语音识别方法确定命令词的过程。
步骤2001:实时采集麦克风的语音。
步骤2002:对采集的语音进行分帧、加窗,提取声学特征。
步骤2003:根据语音帧的声学特征,确定语音帧对应的各个音素的概率。
步骤2004:从激活节点列表中未被提取过的激活节点中,提取一个激活节点。
步骤2005:根据语音帧对应的各个音素的概率,以及激活节点对应的字的信息,确定语音帧属于该激活节点的概率;以及确定该激活节点的跳转信息。
步骤2006:判断语音帧属于该激活节点的概率是否大于或等于第一阈值。若确定是,执行步骤2007,否则,执行步骤2012。
步骤2007:将第一统计值加1。
步骤2008:判断该激活节点是否满足以下约束条件:第一统计值大于或等于第三阈值,且,该激活节点的跳转信息指示该语音帧对应该激活节点对应的字的结束音素。
若确定满足约束条件,执行步骤2009,若确定不满足约束条件,执行步骤2010。
步骤2009:依次提取该激活节点的子节点,针对该激活节点的子节点,判断该语音帧属于该激活节点的子节点的概率是否大于或等于第二阈值。若确定是,则激活该激活节点的子节点,并提取下一子节点,直至遍历完所有子节点。若确定不是,提取下一子节点,直至遍历完所有子节点。
步骤2010:判断该激活节点列表中是否存在未被提取的激活节点,若确定是,执行步骤2004,否则,执行步骤2011。
步骤2011:更新该激活节点列表。之后,结束当前语音帧的判断,并对下一语音帧进行判断,即执行步骤2001。
步骤2012:判断第二统计值是否大于或等于第五阈值。若确定不是,执行步骤2013,否则,执行步骤2014。
步骤2013:将第二统计值加1。之后执行步骤2008。
步骤2014:关闭该激活节点。
步骤2015:判断该激活节点是否为叶子节点。若确定是,执行步骤2016,否则,执行步骤2008。
步骤2016:判断该语音丢失的音素的总个数是否小于第四阈值。若确定是,执行步骤2017,若确定不是,执行步骤2018。
步骤2017:从该激活节点回溯至根节点,确定语音帧构成的命令词。
步骤2018:确定命令词识别失败。之后可重新执行步骤2001,也可进行报警等其他操作。
本实施方式提供的语音识别方法,通过将第一统计值与第三阈值进行比较后,确定是否激活该激活节点的子节点,通过该判断,针对语音帧不属于子节点的情况,不再进行后续操作,减少无用的搜索,进一步提高搜索效率。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第三实施方式涉及一种电子设备,该电子设备30的具体结构如图6所示,包括:至少一个处理器301;以及,与至少一个处理器301通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够执行第一实施方式或第二实施方式中的语音识别方法。
该电子设备30包括:一个或多个处理器301以及存储器302,图6中以一个处理器301为例。处理器301、存储器302可以通过总线或者其他方式连接,图6中以通过总线连接为例。存储器302作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施方式中语音识别方法就存储于存储器302中。处理器301通过运行存储在存储器302中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述语音识别方法。
存储器302可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器302可选包括相对于处理器301远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器302中,当被一个或者多个处理器301执行时,执行上述任意方法实施方式中的语音识别方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
本发明的第四实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。