语音检测方法、装置、设备和存储介质与流程

文档序号:29617684发布日期:2022-04-13 12:18阅读:123来源:国知局
语音检测方法、装置、设备和存储介质与流程

1.本技术涉及计算机处理技术领域,特别是涉及一种语音检测方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。


背景技术:

2.随着智能化时代的到来,人工智能技术被广泛地应用在各个领域,例如图像识别领域、语音识别领域。基于人工智能技术的语音识别所包括的其中一个技术分支是关键词检测(keyword spotting);关键词检测可被应用于语音唤醒系统中,无需用户手动操控设备,实现操控智能化,例如语音唤醒系统检测到用户发出与关键词对应的语音后,按照用户的语音指令直接操控车载设备或者家居设备等。
3.当需要对语音进行检测时,可以对语音进行特征提取,基于提取得到的特征得到语音检测结果,然而目前的语言检测方法,存在检测效率低以及语音检测准确度低的问题。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种语音检测方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
5.一种语音检测方法,所述方法包括:对待检测语音中的各个语音帧进行特征提取,得到所述语音帧对应的特征向量,并对各个语音帧对应的特征向量按照对应的语音帧顺序进行排序,得到特征向量序列;基于所述特征向量序列进行音素识别,得到各个所述语音帧对应的候选音素可能度;基于所述语音帧对应的候选音素可能度过滤音素空白的语音帧,以基于存在音素的语音帧对应的候选音素可能度,得到所述待检测语音对应的识别音素序列;将从所述识别音素序列中选取的目标检测词对应的音素序列,作为检测词音素序列,并基于所述检测词音素序列对应的语音帧序列在所述待检测语音的语音帧序列中的位置,确定所述待检测语音中所述目标检测词对应的提取语音帧序列;获取所述提取语音帧序列中各个提取语音帧对应的音素可能度分布;所述提取语音帧对应的音素可能度分布是根据所述提取语音帧对应的特征向量分别进行语音帧音素检测得到的;基于所述提取语音帧对应的音素可能度分布,得到所述待检测语音对应的语音检测结果。
6.一种语音检测装置,所述装置包括:特征向量处理模块,用于对待检测语音中的各个语音帧进行特征提取,得到所述语音帧对应的特征向量,并对各个语音帧对应的特征向量按照对应的语音帧顺序进行排序,得到特征向量序列;候选音素可能度获取模块,用于基于所述特征向量序列进行音素识别,得到各个所述语音帧对应的候选音素可能度;音素序列获取模块,用于基于所述语音帧对应的候选音素可能度过滤音素空白的语音帧,以基于存在音素的语音帧对应的候选音素可能度,得到所述待检测语音对应的识别音素序列;语音帧提取模块,用于将从所述识别音素序列中选取的目标检测词对应的音素序列,作为检测词音素序列,并基于所述检测词音素序列对应的语音帧序列在所述待检测语音的语音帧序列中的位置,确定所述待检测语音中所述目标检测词对应的提取语音帧序列;音素可能
度分布获取模块,用于获取所述提取语音帧序列中各个提取语音帧对应的音素可能度分布;所述提取语音帧对应的音素可能度分布是根据所述提取语音帧对应的特征向量分别进行语音帧音素检测得到的;语音检测结果获取模块,用于基于所述提取语音帧对应的音素可能度分布,得到所述待检测语音对应的语音检测结果。
7.在一些实施例中,所述语音帧提取模块,还用于确定所述检测词音素序列对应的语音帧序列在所述待检测语音的起始位置以及终止位置;将所述起始位置对应的前向位置作为第一提取位置,将所述终止位置对应的后向位置作为第二提取位置;将所述待检测语音中位于所述第一提取位置以及所述第二提取位置之间的语音帧序列作为所述目标检测词对应的提取语音帧序列。
8.在一些实施例中,所述语音帧提取模块,还用于将所述待检测语音中音素空白的语音帧的数量作为空白帧数量;基于所述空白帧数量,确定语音帧扩展数量;所述语音帧扩展数量与所述空白帧数量成正相关关系;将与所述起始位置的距离为所述语音帧扩展数量的前向位置作为第一提取位置,将与所述终止位置的距离为所述语音帧扩展数量的后向位置作为第二提取位置。
9.在一些实施例中,所述候选音素可能度包括音素空白对应的可能度;所述音素序列获取模块,还用于将音素空白对应的可能度大于可能度阈值的语音帧,作为音素空白的语音帧;过滤音素空白的语音帧,得到解码语音帧,获取基于解码语音帧对应的候选音素可能度形成的语音解码网络;基于所述语音解码网络进行解码,得到目标解码路径,将所述目标解码路径所经过的音素按照路径顺序进行排列,得到所述待检测语音对应的识别音素序列。
10.在一些实施例中,所述特征向量处理模块,还用于将所述待检测语音中各个语音帧输入到已训练的语音检测模型的特征提取子模型进行特征提取,得到所述语音帧对应的特征向量;所述已训练的语音检测模型包括特征提取子模型以及分别与特征提取子模型连接的语音序列识别子模型以及语音帧音素检测子模型;所述候选音素可能度获取模块,还用于将所述特征向量序列输入到所述语音序列识别子模型中进行音素识别,得到各个所述语音帧对应的候选音素可能度;所述音素可能度分布获取模块,还用于从所述特征向量序列中提取所述提取语音帧对应的特征向量,将所述提取语音帧对应的特征向量输入到所述语音帧音素检测子模型进行音素识别;将所述语音帧音素检测子模型输出的各类音素在各个提取语音帧中的可能度分布,作为各个提取语音帧对应的音素可能度分布。
11.在一些实施例中,所述装置还包括语音检测模型训练模块,用于获取训练语音;将所述训练语音输入到待训练的特征提取子模型中进行特征提取,得到各个训练语音帧对应的训练特征向量,各个训练语音帧对应的训练特征向量按照对应的语音帧顺序进行排序,得到训练向量序列;将所述训练向量序列输入到待训练的语音序列识别子模型进行音素识别,得到音素序列识别结果;基于所述音素序列识别结果与所述训练语音对应的标准识别结果的第一差异得到第一模型损失值;所述第一模型损失值与第一差异成正相关关系;将各个所述训练特征向量输入到待训练的所述语音帧音素检测子模型进行音素识别,得到所述语音帧音素检测子模型对应的语音帧音素检测结果;基于所述语音帧音素检测结果与所述训练语音对应的标准识别结果的第二差异得到第二模型损失值;所述第一模型损失值与第二差异成正相关关系;基于所述第一模型损失值以及所述第二模型损失值得到目标模型
损失值;基于所述目标模型损失值对待训练的特征提取子模型、待训练的语音帧音素检测子模型以及待训练的语音序列识别子模型进行参数调整,将参数调整后的特征提取子模型、参数调整后的语音帧音素检测子模型以及参数调整后的语音序列识别子模型组成所述已训练的语音检测模型。
12.在一些实施例中,所述候选音素可能度获取模块,还用于按照所述特征向量序列的顺序依次获取所述特征向量序列中的当前特征向量;获取所述当前特征向量对应的前一特征向量对应的音素表示向量;所述前一特征向量对应的音素表示向量是将所述前一特征向量输入到所述语音序列识别子模型中进行音素识别,得到的音素对应的表示向量;将所述前一特征向量对应的音素表示向量以及所述当前特征向量输入到所述语音序列识别子模型中进行音素识别,得到所述当前特征向量对应的当前语音帧对应的候选音素可能度。
13.在一些实施例中,所述装置还包括音素表示向量获取模块,用于将所述前一特征向量输入到所述语音序列识别子模型中进行音素识别,得到所述前一特征向量对应的候选音素可能度;所述前一特征向量对应的候选音素可能度包括候选音素集合中各个候选音素对应的可能度;从所述候选音素集合中选取对应的可能度最大的候选音素,作为目标音素;将所述目标音素对应的音素表示向量,作为所述前一特征向量对应的音素表示向量。
14.在一些实施例中,所述装置还包括音素识别持续模块,用于当所述特征向量序列中的特征向量未进行音素识别完毕,则返回按照所述特征向量序列的顺序依次获取所述特征向量序列中的当前特征向量的步骤,以对未进行音素识别的特征向量进行音素识别,直至所述特征向量序列中的特征向量音素识别完毕。
15.在一些实施例中,所述语音检测结果获取模块,还用于基于所述提取语音帧对应的音素可能度分布得到所述目标检测词在待检测语音中的检测词位置;获取所述待检测语音中位于所述检测词位置对应的后向位置的语音,作为指令检测语音;对所示指令检测语音进行语音指令检测,得到所述指令检测语音对应的目标语音指令,以基于所述目标语音指令进行语音控制。
16.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行上述方法。
17.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行上述方法。
18.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述方法。
19.上述语音检测方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,包括:对待检测语音中的各个语音帧进行特征提取,得到语音帧对应的特征向量,并对各个语音帧对应的特征向量按照对应的语音帧顺序进行排序,得到特征向量序列;基于特征向量序列进行音素识别,得到各个语音帧对应的候选音素可能度;基于语音帧对应的候选音素可能度过滤音素空白的语音帧,以基于存在音素的语音帧对应的候选音素可能度,得到待检测语音对应的识别音素序列;将从识别音素序列中选取的目标检测词对应的音素序列,作为检测词音素序列,并基于检测词音素序列对应的语音帧序列在待检测语音的语音帧序列中的位置,确定待检测语音中目标检测词对应的提取语音帧序列;获取提取语音帧序列中各个提取语音帧对应的音素可能度分布;提取语音帧对应的音素可能度分布是根据
提取语音帧对应的特征向量分别进行语音帧音素检测得到的;基于提取语音帧对应的音素可能度分布,得到待检测语音对应的语音检测结果。由于基于语音帧对应的候选音素可能度过滤音素空白的语音帧,基于音素存在的语音帧对应的候选音素可能度得到识别音素序列,因此提高了识别音素序列的获取效率,也提高从识别音素序列中获取与目标检测词对应的音素序列的效率;接着,基于检测词音素序列对应的语音帧序列在待检测语音的语音帧序列中的位置,确定目标检测词对应的提取语音帧序列,后续无需对全部语音帧进行音素检测,提高效率;并且,由于对提取语音帧序列进行逐帧音素检测,因此,根据逐帧音素检测得到的各提取语音帧的音素可能度分布得到的语音检测结果,可以准确地反映关键词在语音中的位置,提高准确性。
附图说明
20.图1(a)为一些实施例中语音检测方法的应用场景示意图;
21.图1(b)为一些实施例中语音检测方法的流程示意图;
22.图2为一些实施例中针对非逐帧解码搜索的语音解码网络示意图;
23.图3为一些实施例中针对逐帧解码搜索的语音解码网络示意图;
24.图4为一些实施例中语音检测方法的流程示意图;
25.图5为一些实施例中模型架构示意图;
26.图6为一些实施例中模型架构示意图;
27.图7为一些实施例中语音检测方法的流程示意图;
28.图8为一些实施例中关键词对应的音素状态转移示意图;
29.图9为一些实施例中各语音帧的状态转移示意图;
30.图10为一些实施例中模型前向推断和模型部署示意图;
31.图11为一些实施例中语音检测装置的结构框图;
32.图12为一些实施例中计算机设备的内部结构图。
具体实施方式
33.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
34.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一些实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本技术所描述的实施例可以与其它实施例相结合。
35.先介绍本技术提供的方案所涉及的术语:
36.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
37.人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
38.语音技术(speech technology)的关键技术有自动语音识别技术和语音合成技术以及声纹识别技术。让计算机能听、能看、能说、能感觉,是未来人机交互的发展方向,其中语音成为未来最被看好的人机交互方式之一。
39.关键词检测(keyword spotting,kws)属于语音识别技术中的一个分支,关键词检测任务主要包括:识别语音中是否具有关键词和确认关键词在语音中的准确位置;关键词在语音中的位置包括关键词在语音中的起始位置或结束位置。关键词可以是唤醒词,用户在发出唤醒词对应的语音后,语音识别系统被唤醒,语音识别系统开始检测用户发出唤醒词对应的语音后的语音,以确定用户发出的操作指令;示例性地,若唤醒词为“小明小明”,用户发出“小明小明”对应的语音后,语音识别系统被唤醒,并开始检测用户是否发出如“打开空调”等语音操作指令。关键词还可以是语音操作指令,用户可以直接说语音操作指令,而无需先说唤醒词后说语音操作指令。
40.自然语言处理(nature language processing,nlp)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系。自然语言处理技术通常包括文本处理、语义理解、机器翻译、机器人问答、知识图谱等技术。
41.机器学习(machine learning,ml)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括深度神经网络(deep neural network,dnn)、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。其中,深度神经网络包括前向序列记忆网络(feedforward sequential memory networks,fsmn)和卷积神经网络(convolutional neural network,cnn)。
42.深度学习过程中,可以利用交叉熵损失函数(cross entropy loss function,ce损失函数)进行模型训练。按照模型所需执行的任务(task)数量,可以将深度学习分为单任务学习和多任务学习(multi-task learning,mtl);单任务学习主要是一次只学习一个任务,多任务学习是把多个相关(related)的任务放在一起学习,同时学习多个任务。
43.语音识别模型训练包括声学模型训练,该声学模型训练可以是序列到序列的模型训练,无需预先对训练语音进行帧对齐后(也即不需要对每个训练语音帧进行音素标注)进行模型训练,只需要作为输入的训练语音帧序列和作为输出的训练音素序列即可进行模型训练。
44.隐马尔科夫模型(hidden markov model,hmm)属于马尔可夫链的一种,它的状态
不能直接观察到,但能通过观测向量序列观察到,每个观测向量都是通过某些概率密度分布表现为各种状态,每一个观测向量是由一个具有相应概率密度分布的状态序列产生。所以,隐马尔可夫模型是一个双重随机过程
‑‑‑‑
具有一定状态数的隐马尔可夫链和显示随机函数集。在隐马尔可夫模型中,状态是不直接可见的,但输出依赖于该状态下,是可见的。每个状态通过可能的输出记号有了可能的概率分布。因此,通过一个hmm产生标记序列提供了有关状态的一些序列的信息。注意,“隐藏”指的是,该模型经其传递的状态序列,而不是模型的参数。隐马尔可夫模型以它在时间上的模式识别所知,如语音、手写、手势识别、词类的标记、乐谱、局部放电和生物信息学应用。
45.本技术实施例提供的方案涉及基于人工智能的语音识别技术,可以应用于驾驶场景、智能家居场景和机器人控制场景等场景中。若车辆、智能家居设备和机器人等设备的算力较强,则可以直接由车辆、智能家居设备和机器人等设备执行语音检测方法;若车辆、智能家居设备和机器人的算力较弱,则可以由车辆、智能家居设备或机器人等将采集到的语音发送至服务器,以使服务器执行语音检测方法,服务器将执行语音检测方法后得到的结果反馈至车辆、智能家居设备或机器人等设备,如图1(a)所示。以下实施例的介绍中将执行语音检测方法的设备称为计算机设备,该计算机设备可以是车辆、智能家居设备、机器人和服务器等。
[0046]“序列到序列”模型关注的是一个输入序列到一个输出序列的结果,也即“序列到序列”模型关注的是模型自身输出的预测序列是否和真实序列是否相同。在语音识别中,针对难以确定对应音素的语音帧,该“序列到序列”模型会为该语音帧赋予音素空白的标签,而不会强制性地为该语音帧赋予某类音素的标签;基于“序列到序列”模型可以为难以确定对应音素的语音帧赋予音素空白的标签这一特性,可以利用“序列到序列”模型预测语音中是否存在目标检测词(即关键词)。如图1(b)所示,计算机设备在获取到用户发出的语音后,可以对语音进行分帧处理,得到n0至n
1000
个语音帧,并将该语音帧序列输入“序列到序列”模型中;利用“序列到序列”模型对该语音帧序列进行音素存在性预测,获取“序列到序列”模型输出的音素存在于各个语音帧的可能度;如果音素存在于语音帧的可能度小于预设值,则认为音素存在语音帧的可能度较低,并将该语音帧是音素空白的语音帧;如果音素存在于语音帧的可能度大于或等于预设值,则认为音素存在语音帧的可能度较高,并将该语音帧是音素非空的语音帧。
[0047]
在利用“序列到序列”模型对该语音帧序列的各语音帧进行音素存在性预测后,得到音素存在于各个语音帧的可能度,并确定音素空白的语音帧和音素非空的语音帧,如图1(b)示出音素空白的语音帧包括n0、n1、n2和n
1000
等,音素非空的语音帧包括n3、n4和n
999
等。
[0048]
接着,计算机设备可以过滤音素空白的语音帧,保留音素非空的语音帧,得到音素非空的语音帧序列,并基于各类音素在音素非空语音帧上的可能度分布进行解码搜索,例如各类音素在n3、n4、n
995
、n
996
、n
998
和n
999
等各个音素非空语音帧上的可能度分布进行解码搜索;由于这一阶段的解码搜索是针对音素非空语音帧的,不包括音素空白的语音帧,因此,这一阶段的解码搜索称为非逐帧解码搜索。
[0049]
计算机设备基于上述非逐帧解码搜索可以确定语音中是否存在目标检测词;例如“打开空调”这一目标检测词对应的音素序列为“d a k ai k ong t iao”,通过非逐帧解码搜索,确定该语音的音素非空语音帧序列中存在“d a k ai k ong t iao”这一音素序列,
则可以认为该语音存在“打开空调”这一目标检测词。
[0050]
在确定语音存在目标检测词后,可以确定存在上述音素序列的音素非空语音帧序列。由于上述非逐帧解码搜索只能确定音素非空语音帧对应的音素,不能确定音素空白语音帧对应的音素,只能确定上述目标检测词在语音中的大概位置(目标检测词在语音中的大概位置,可以理解为:目标检测词在语音中存在的大概时刻),无法确定与存在目标检测词的音素的音素非空语音帧邻近的多个音素空白语音帧是否存在目标检测词的音素,也即无法准确地确定上述目标检测词在语音中的位置。因此,计算机设备可以基于存在目标检测词的音素序列的音素非空语音帧序列,确定目标检测词在该语音中存在的大概时刻,并将与该大概时刻邻近的连续的多个时刻下的语音帧作为可能存在目标检测词的音素的语音帧。
[0051]
示例性地,若存在“d a k ai k ong t iao”这一音素序列的音素非空语音帧序列是n
100
到n
150
的音素非空语音帧,那么可以确定目标检测词在该语音中存在的大概时刻是n
100
和n
150
,因此,可以认为位于n
100
之前的连续多个语音帧可能存在目标检测词的音素,如n
80
至n
100
之间的每个语音帧可能存在目标检测词的音素;还可以认为位于n
150
之后的连续多个语音帧可能存在目标检测词的音素,如n
150
至n
180
之间的每个语音帧可能存在目标检测词的音素。因此,确定可能存在目标检测词的音素的语音帧序列是n
80
至n
180
之间的语音帧序列,如图1(b)所示,在n
80
至n
180
之间的语音帧序列中,有些语音帧是音素空白的语音帧,有些语音帧是音素非空的语音帧。
[0052]
计算机设备在确定可能存在目标检测词的音素的语音帧序列后,获取各类音素在该语音帧序列中的每个语音帧的可能度分布(可以称为每个语音帧的音素可能度分布),例如,针对n
100
,可以获取音素“a”、“o”、“e”和“d”等各类音素在n
100
存在的可能度,形成可能度分布;其中,音素“a”在n
100
存在的可能度表征n
100
对应的实际音素为“a”的可能性大小。
[0053]
在一些实施例中,可以利用预先构建的音素类别检测模型,确定各类音素在每个语音帧存在的可能度。训练该音素类别检测模型时所用标签可以包括各类音素的标签,不包括表征音素空白的标签,因此,可以利用该音素类别检测模型强制性地预测每个语音帧对应的音素,不会将某个语音帧预测为音素空白。需要说明的是,训练上述“序列到序列”模型时所用的标签包括表征音素空白的标签,针对难以预测对应音素的语音帧,该“序列到序列”模型会打上音素空白的标签,而不会强制性地为该语音帧赋予某类音素的标签,以降低模型损失值。
[0054]
计算机设备在得到可能存在目标检测词的音素的语音帧序列中各个语音帧的音素可能度分布,接着,基于各个语音帧的音素可能度分布进行解码搜索,确定可能存在目标检测词的音素的语音帧序列中各个语音帧对应的音素。需要说明的是,本阶段的解码搜索是针对连续的每个语音帧,因此,本阶段的解码搜索称为逐帧解码搜索。
[0055]
结合图2介绍上述逐帧解码搜索的过程:基于n
80
至n
180
之间的语音帧序列每个语音帧的音素可能度分布,以及相邻语音帧之间音素的转移可能度(该转移可能度可以由语言模型给出),可以构建图2所示的语音解码网络(也可以称为解码图),接着对该语音解码网络进行解码搜索,得到最大概率路径,将位于最大概率路径的音素作为语音帧对应的音素,例如若该最大概率路径的首个音素为“d”,则可以将该音素“d”作为与n
80
对应的音素;同样地,针对该最大概率路径的其他音素,可以进行类型的处理,进而确定n
80
与n
180
之间的每个
语音帧对应的音素,准确地确定目标检测词在语音中的位置,实现语音强制对齐。
[0056]
需要说明的是,非逐帧解码搜索的过程与逐帧解码搜索的过程类似,主要不同之处是用于解码搜索的语音解码网络不同,非逐帧解码搜索所用的语音解码网络是基于音素非空的语音帧(如n3、n4、n
995
、n
996
、n
998
和n
999
等)的音素可能度分布以及相邻语音帧之间音素的转移可能度构建的。
[0057]
另外,如果“序列到序列”模型输出的是每个语音帧为音素空白的可能度以及存在各类音素的可能度,且某个语音帧为音素空白的可能度低于预设值,那么可以认为该语音帧是音素非空的语音帧,可以将“序列到序列”模型输出的该语音帧存在各类音素的可能度作为该语音帧的音素可能度分布,并结合音素空白(图3中用
“‑”
表示)的可能度和相邻语音帧之间的状态转移可能度构建图3所示的语音解码网络。其中,相邻语音帧之间的状态转移包括:音素状态到音素状态、音素状态到音素空白状态、以及音素空白状态到音素空白状态;相邻语音帧之间的状态转移可能度可以由语言模型给出。
[0058]
在一些实施例中,如图4所示,提供了一种语音检测方法,以该方法应用于计算机设备为例进行说明,包括以下步骤:
[0059]
步骤s402,对待检测语音中的各个语音帧进行特征提取,得到语音帧对应的特征向量,并对各个语音帧对应的特征向量按照对应的语音帧顺序进行排序,得到特征向量序列。
[0060]
其中,可以将待检测是否存在目标检测词的语音作为待检测语音,该待检测语音可以是用户发出的,也可以是发音设备发出的。对待检测语音进行分帧处理,可以得到多个语音帧。语音帧可以用mfcc特征(mel frequency cepstrum coefficient,梅尔频率倒谱系数)、fbank特征(filterbank,滤波器组)或者能量特征中的至少一个进行表示。语音帧的特征向量可以是用于描述该语音帧的特征向量,可以是利用特征提取模型对mfcc特征、fbank特征或者能量特征中的至少一个提取得到的。
[0061]
计算机设备可以按照预设的帧长度,对待检测语音进行分帧处理,得到多个语音帧,该预设的帧长度可以是20毫秒。接着,计算机设备可以按照语音帧顺序进行排序对各语音帧的特征向量进行排序,得到特征向量序列。
[0062]
步骤s404,基于特征向量序列进行音素识别,得到各个语音帧对应的候选音素可能度。
[0063]
其中,音素(phone)是指根据语音的自然属性划分出来的最小语音单位,依据发音动作分析,一个字(word)的发音可以由一个或者多个音素组成;例如,对于汉字,每个汉字可以与中文音标中的音素具有对应关系。
[0064]
音素识别主要是检测各语音帧存在音素的可能度。语音帧对应的候选音素可能度是指候选音素在语音帧存在的可能性大小以及候选不存在于该语音帧的可能性大小,可能度可以用概率表示;候选音素可能度可以包括该语音帧为音素空白的可能度和各类音素存在于该语音帧的可能度。在某个语音帧的候选音素可能度中,若音素空白的可能度小于可能度阈值,则可以认为该语音帧是音素空白的语音帧,若音素空白的可能度大于或等于可能度阈值,则可以认为该语音帧是音素非空的语音帧(即存在音素的语音帧)。
[0065]
本步骤中,计算机设备得到语音帧序列对应的特征向量序列后,基于特征向量序列,进行音素识别,以检测各语音帧存在音素的可能度,得到各类音素存在于语音帧的可能
度以及语音帧为音素空白的可能度,并构成各语音帧的候选音素可能度。
[0066]
步骤s406,基于语音帧对应的候选音素可能度过滤音素空白的语音帧,以基于存在音素的语音帧对应的候选音素可能度,得到待检测语音对应的识别音素序列。
[0067]
其中,音素空白的语音帧是指音素空白的可能度大于或等于可能度阈值的语音,存在音素的语音帧(也即音素非空语音帧)是指音素空白的可能度小于可能度阈值的语音;例如图1(b)所示,在n0至n
1000
个语音帧中,音素空白的语音帧包括n0、n1、n2和n
1000
等,音素非空的语音帧包括n3、n4和n
999
等。识别音素序列包括音素非空语音帧的音素,例如n3、n4和n
999
等音素非空语音帧对应的音素。
[0068]
计算机设备可以过滤在n0至n
1000
个语音帧中的音素空白语音帧,保留音素非空的语音帧,得到音素非空的语音帧序列,并基于各类音素在音素非空语音帧上的可能度分布进行解码搜索,例如各类音素在n3、n4、n
995
、n
996
、n
998
和n
999
等各个音素非空语音帧上的可能度分布进行图3所示的解码搜索,得到音素非空语音帧对应的音素,并形成识别音素序列;由于这一阶段的解码搜索是针对音素非空语音帧的,不包括音素空白的语音帧,因此,这一阶段的解码搜索称为非逐帧解码搜索。
[0069]
步骤s408,将从识别音素序列中选取的目标检测词对应的音素序列,作为检测词音素序列,并基于检测词音素序列对应的语音帧序列在待检测语音的语音帧序列中的位置,确定待检测语音中目标检测词对应的提取语音帧序列。
[0070]
目标检测词是关键词,可以将语音操作指令作为目标检测词,如将“打开空调”这一语音操作指令作为目标检测词;还可以将唤醒词作为目标检测词,如将“小明小明”作为目标检测词。检测词音素序列是目标检测词对应的音素序列,例如若目标检测词为“打开空调”,那么检测词音素序列是“d a k ai k ong t iao”。
[0071]
提取语音帧序列是指从待检测语音中提取的连续多个语音帧,该连续多个语音帧包括检测词音素序列对应的音素非空语音帧序列,以及与检测词音素序列对应的音素非空语音帧序列邻近的音素空白语音帧。
[0072]
计算机设备得到音素非空语音帧对应的音素形成的识别音素序列后,若确定该识别音素序列中包括检测词音素序列“d a k ai k ong t iao”,那么可以确定检测词音素序列对应的语音帧序列是n
100
到n
150
之间的音素非空语音帧序列。
[0073]
接着,基于n
100
到n
150
之间的音素非空语音帧序列在待检测语音的n0至n
1000
的语音帧序列中的位置,可以确定位于n
100
之前的连续多个语音帧可能存在目标检测词的音素,或者位于n
150
之后的连续多个语音帧可能存在目标检测词的音素;因此,可以将位于n
100
之前的连续多个语音帧、n
100
到n
150
之间的每个语音帧以及位于n
150
之后的连续多个语音帧作为提取语音帧,得到提取语音帧序列。
[0074]
步骤s410,获取提取语音帧序列中各个提取语音帧对应的音素可能度分布。
[0075]
其中,提取语音帧对应的音素可能度分布是指各类音素在提取语音帧中存在的可能度分布,例如,若提取语音帧是n
100
,那么音素“a”、“o”、“e”和“d”等各类音素在n
100
存在的可能度为n
100
的可能度分布。提取语音帧对应的音素可能度分布根据提取语音帧对应的特征向量分别进行语音帧音素检测(也即音素类别检测)得到的。
[0076]
在一些实施例中,可以利用音素类别检测模型,确定各类音素在各提取语音帧中存在的可能度,得到各提取语音帧的音素可能度分布。训练该音素类别检测模型时所用标
签可以包括各类音素的标签,不包括表征音素空白的标签,因此,可以利用该音素类别检测模型强制性地预测每个语音帧对应的音素,不会将某个语音帧预测为音素空白。
[0077]
计算机设备根据提取语音帧对应的特征向量进行语音帧音素检测后,可以得到各个语音帧对应的音素可能度分布。
[0078]
步骤s412,基于提取语音帧对应的音素可能度分布,得到待检测语音对应的语音检测结果。
[0079]
计算机设备在得到各个提取语音帧序列中各个语音帧的音素可能度分布,接着,基于各个提取语音帧的音素可能度分布进行解码搜索,确定各个提取语音帧对应的音素。需要说明的是,本阶段的解码搜索是针对连续的每个语音帧,因此,本阶段的解码搜索称为逐帧解码搜索。
[0080]
结合图2介绍上述逐帧解码搜索的过程:若提取语音帧序列是n
80
至n
180
之间的语音帧序列,那么计算机设备可以基于n
80
至n
180
之间的语音帧序列中的每个语音帧的音素可能度分布,以及相邻语音帧之间音素的转移可能度(该转移可能度可以由语言模型给出),可以构建图2所示的语音解码网络(也可以称为解码图),接着对该语音解码网络进行解码搜索,得到最大概率路径,将位于最大概率路径的音素作为语音帧对应的音素,例如若该最大概率路径的首个音素为“d”,则可以将该音素“d”作为与n
80
对应的音素;同样地,针对该最大概率路径的其他音素,可以进行类型的处理,进而确定n
80
与n
180
之间的每个语音帧对应的音素,准确地确定目标检测词在语音中的位置,实现语音强制对齐。
[0081]
上述语音检测方法中,由于基于语音帧对应的候选音素可能度过滤音素空白的语音帧,基于音素存在的语音帧对应的候选音素可能度得到识别音素序列,无需对音素空白的语音帧进行后续处理,提高识别音素序列的获取效率,也提高从识别音素序列中获取与目标检测词对应的音素序列的效率;接着,基于检测词音素序列对应的语音帧序列在待检测语音的语音帧序列中的位置,确定目标检测词对应的提取语音帧序列,后续无需对全部语音帧进行音素检测,提高效率;并且,由于对提取语音帧序列进行逐帧音素检测,因此,根据逐帧音素检测得到的各提取语音帧的音素可能度分布得到的语音检测结果,可以准确地反映关键词在语音中的位置,提高准确性。
[0082]
在一些实施例中,上述步骤s408可以包括如下步骤:确定检测词音素序列对应的语音帧序列在待检测语音的起始位置以及终止位置;将起始位置对应的前向位置作为第一提取位置,将终止位置对应的后向位置作为第二提取位置;将待检测语音中位于第一提取位置以及第二提取位置之间的语音帧序列作为目标检测词对应的提取语音帧序列。
[0083]
其中,起始位置可以理解为检测词音素序列对应的语音帧序列中的首个语音帧在待检测语音中对应的帧时刻,终止位置可以理解为检测词音素序列对应的语音帧序列中的末个语音帧在待检测语音中对应的帧时刻。
[0084]
第一提取位置是起始位置的前向位置,也即待检测语音中早于检测词音素序列对应的语音帧序列中的首个语音帧的帧时刻;第二提取位置是终止位置的后向位置,也即待检测语音中晚于检测词音素序列对应的语音帧序列中的末个语音帧的帧时刻。
[0085]
示例性地,若与检测词音素序列对应的语音帧序列是n
100
到n
150
之间的音素非空语音帧序列,其中,n
100
为与检测词音素序列对应的语音帧序列中的首个语音帧,n
150
为与检测词音素序列对应的语音帧序列中的末个语音帧;可以将早于n
100
的帧时刻,如第80个帧时
刻,作为第一提取位置;还可以将晚于n
150
的帧时刻,如第180个帧时刻,作为第二提取位置,并将连n
80
至n
100
之间的每个语音帧作为提取语音帧,得到提取语音帧序列。
[0086]
上述方式中,基于检测词音素序列对应的语音帧序列在待检测语音的起始位置以及终止位置,确定对应的提取位置,在兼顾音素检测效率的同时,保证所得到提取语音帧序列的准确性。
[0087]
在一些实施例中,上述第一提取位置还可以是待检测语音中早于且邻近于检测词音素序列对应的语音帧序列中的首个语音帧的音素非空语音帧的帧时刻;第一提取位置对应的帧时刻与检测词音素序列对应的语音帧序列中的首个语音帧之间的帧时刻之间的音素非空语音帧数量小于或等于预设值。
[0088]
示例性地,在待检测语音中,进行针对音素非空语音帧的非逐帧解码搜索后,确定与检测词音素序列对应的语音帧序列是n
1100
到n
1150
之间的音素非空语音帧序列,其中,n
1100
为与检测词音素序列对应的语音帧序列中的首个语音帧。
[0089]
若预设值为1,且待检测语音的音素非空语音帧序列中,n
1100
的前一音素非空语音帧是n
1079
,n
1079
至n
1100
之间的语音帧均为音素空白语音帧,n
1079
对应的第1079个帧时刻与n
1100
对应的第1100个帧时刻之间的音素非空语音帧数量为0,小于预设值,那么可以认为n
1079
对应的第1079个帧时刻是早于且邻近于n
1100
的帧时刻,并将第1079个帧时刻作为第一提取位置。
[0090]
若预设值为1,且待检测语音的音素非空语音帧序列中,n
1100
的前三个音素非空语音帧是n
1068
、n
1070
和n
1079
,n
1068
至n
1070
之间的语音帧、n
1070
至n
1079
之间的语音帧、以及n
1079
至n
1100
之间的语音帧均为音素空白语音帧;n
1068
对应的第1068个帧时刻与n
1100
对应的第1100个帧时刻之间的音素非空语音帧是n
1070
和n
1079
,对应的音素非空语音数量是2,大于预设值,此时,可以不将n
1068
对应的第1068个帧时刻作为邻近于n
1100
的帧时刻。n
1070
对应的第1070个帧时刻与n
1100
对应的第1100个帧时刻之间的音素非空语音帧是n
1079
,对应的音素非空语音数量是1,刚好等于预设值,此时,可以将n
1070
对应的第1070个帧时刻作为邻近于n
1100
的帧时刻。n
1079
对应的第1079个帧时刻与n
1100
对应的第1100个帧时刻之间没有音素非空语音帧,对应的音素非空语音数量是0,小于预设值,此时,也可以将n
1079
对应的第1079个帧时刻作为邻近于n
1100
的帧时刻。
[0091]
在一些实施例中,如果待检测语音中早于且邻近于检测词音素序列对应的语音帧序列中的首个语音帧的音素非空语音帧的帧时刻为多个,那么可以任选一个帧时刻并作为第一提取位置。例如,待检测语音中早于且邻近于检测词音素序列对应的语音帧序列中的首个语音帧的音素非空语音帧的帧时刻为n
1070
和n
1079
,此时可以任选一个帧时刻作为第一提取位置。
[0092]
上述方式中,将待检测语音中早于且邻近于检测词音素序列对应的语音帧序列中的首个语音帧的音素非空语音帧的帧时刻作为第一提取位置,且第一提取位置对应的帧时刻与检测词音素序列对应的语音帧序列中的首个语音帧之间的帧时刻之间的音素非空语音帧数量小于或等于预设值,可以避免将距离首个语音帧较远的音素非空语音帧对应的帧时刻作为第一提取位置,避免选择数量过多的提取语音帧,降低逐帧解码搜索的复杂度。
[0093]
在一些实施例中,上述第二提取位置还可以是待检测语音中晚于且邻近于检测词音素序列对应的语音帧序列中的末个语音帧的音素非空语音帧的帧时刻;第二提取位置对
应的帧时刻与检测词音素序列对应的语音帧序列中的末个语音帧之间的帧时刻之间的音素非空语音帧数量小于或等于预设值。
[0094]
示例性地,在待检测语音中,进行针对音素非空语音帧的非逐帧解码搜索后,确定与检测词音素序列对应的语音帧序列是n
1100
到n
1150
之间的音素非空语音帧序列,其中,n
1500
为与检测词音素序列对应的语音帧序列中的末个语音帧。
[0095]
若预设值为1,且待检测语音的音素非空语音帧序列中,n
1500
的后一音素非空语音帧是n
1550
,n
1500
至n
1550
之间的语音帧均为音素空白语音帧,n
1500
对应的第1500个帧时刻与n
1550
对应的第1550个帧时刻之间的音素非空语音帧数量为0,小于预设值,那么可以认为n
1550
对应的第1550个帧时刻是晚于且邻近于n
1550
的帧时刻,并将第1550个帧时刻作为第二提取位置。
[0096]
若预设值为1,且待检测语音的音素非空语音帧序列中,n
1500
的后三个音素非空语音帧是n
1550
、n
1567
和n
1579
,n
1500
至n
1550
之间的语音帧、n
1550
至n
1567
之间的语音帧、以及n
1567
至n
1579
之间的语音帧均为音素空白语音帧;n
1500
对应的第1500个帧时刻与n
1550
对应的第1550个帧时刻之间没有音素非空语音帧,对应的音素非空语音数量是0,小于预设值,此时,可以将n
1550
对应的第1550个帧时刻作为邻近于n
1500
的帧时刻。n
1500
对应的第1500个帧时刻与n
1567
对应的第1567个帧时刻之间的音素非空语音帧是n
1550
,对应的音素非空语音数量是1,刚好等于预设值,此时,可以将n
1567
对应的第1567个帧时刻作为邻近于n
1500
的帧时刻。n
1500
对应的第1500个帧时刻与n
1579
对应的第1579个帧时刻之间的音素非空语音帧是n
1550
和n
1567
,对应的音素非空语音数量是2,大于预设值,此时,可以不将n
1579
对应的第1579个帧时刻作为邻近于n
1500
的帧时刻。
[0097]
在一些实施例中,如果待检测语音中晚于且邻近于检测词音素序列对应的语音帧序列中的末个语音帧的音素非空语音帧的帧时刻为多个,那么可以任选一个帧时刻并作为第二提取位置。例如,待检测语音中晚于且邻近于检测词音素序列对应的语音帧序列中的末个语音帧的音素非空语音帧的帧时刻为n
1550
和n
1567
,此时可以任选一个帧时刻作为第二提取位置。
[0098]
上述方式中,将待检测语音中晚于且邻近于检测词音素序列对应的语音帧序列中的末个语音帧的音素非空语音帧的帧时刻,且第二提取位置对应的帧时刻与检测词音素序列对应的语音帧序列中的末个语音帧之间的帧时刻之间的音素非空语音帧数量小于或等于预设值,可以避免将距离末个语音帧较远的音素非空语音帧对应的帧时刻作为第二提取位置,避免选择数量过多的提取语音帧,降低逐帧解码搜索的复杂度。
[0099]
在一些实施例中,上述将起始位置对应的前向位置作为第一提取位置,将终止位置对应的后向位置作为第二提取位置的步骤,具体可以包括:将待检测语音中音素空白的语音帧的数量作为空白帧数量;基于空白帧数量,确定语音帧扩展数量;语音帧扩展数量与空白帧数量成正相关关系;将与起始位置的距离为语音帧扩展数量的前向位置作为第一提取位置,将与终止位置的距离为语音帧扩展数量的后向位置作为第二提取位置。
[0100]
其中,空白帧数量是指位于首个语音帧对应的帧时刻和末个语音帧对应的帧时刻之间的音素空白的语音帧数量,其中首个语音帧是与检测词音素序列对应的语音帧序列中的首个语音帧,末个语音帧是与检测词音素序列对应的语音帧序列中的末个语音帧。例如,与检测词音素序列对应的语音帧序列是n
1100
到n
1150
之间的音素非空语音帧序列,其中,n
1100
为与检测词音素序列对应的语音帧序列中的首个语音帧,n
1500
为与检测词音素序列对应的语音帧序列中的末个语音帧;对应地,n
1100
对应的第1100个帧时刻到n
1150
对应的第1500个帧时刻之间的音素空白语音帧数量作为空白帧数量。
[0101]
语音帧扩展数量可以是第一提取位置对应的帧时刻与上述首个语音帧对应的帧时刻之间语音帧数量;由于第一提取位置对应的帧时刻早于首个语音帧对应的帧时刻,第一提取位置对应的语音帧早于首个语音帧,提取语音帧相当于在首个语音帧的基础上进行语音帧前向扩展得到的,因此,该语音帧数量可以称为语音帧扩展数量。
[0102]
语音帧扩展数量也可以是第二提取位置对应的帧时刻与上述末个语音帧对应的帧时刻之间语音帧数量;由于第二提取位置对应的帧时刻晚于末个语音帧对应的帧时刻,第二提取位置对应的语音帧晚于末个语音帧,提取语音帧相当于在末个语音帧的基础上进行语音帧后向扩展得到的,因此,该语音帧数量可以称为语音帧扩展数量。
[0103]
该语音帧扩展数量与空白帧数量成正相关关系,空白帧数量越大,语音帧扩展数量越大。例如,若空白帧数量分别为5和10,根据空白帧数量与语音帧扩展数量之间的正相关关系,那么空白帧数量为5对应的语音帧数量小于空白帧数量为10对应的语音帧数量。
[0104]
示例性地,若语音帧扩展数量为10,且与检测词音素序列对应的语音帧序列是n
100
到n
150
之间的音素非空语音帧序列,其中,n
100
为与检测词音素序列对应的语音帧序列中的首个语音帧,n
150
为与检测词音素序列对应的语音帧序列中的末个语音帧;可以将与起始位置的距离为语音帧扩展数量的前向位置作为第一提取位置,也即将n
100
之前的第10个语音帧n
90
对应的位置作为与起始位置的距离为语音帧扩展数量的前向位置,并将n
90
对应的位置作为第一提取位置;还可以将与终止位置的距离为语音帧扩展数量的后向位置作为第二提取位置,也即将n
150
之后的第10个语音帧n
160
对应的位置作为与终止位置的距离为语音帧扩展数量的后向位置,并将n
160
对应的位置作为第二提取位置。
[0105]
上述方式中,空白帧数量越多,“序列到序列”模型对较多语音帧无法判断,因此,语音帧扩展数量越多,为较多的音素空白语音帧强制性地赋予音素类别的标签,提高语音强制对齐的准确性。
[0106]
在一些实施例中,候选音素可能度包括音素空白对应的可能度;上述步骤s406包括:将音素空白对应的可能度大于可能度阈值的语音帧,作为音素空白的语音帧;过滤音素空白的语音帧,得到解码语音帧,获取基于解码语音帧对应的候选音素可能度形成的语音解码网络;基于语音解码网络进行解码,得到目标解码路径,将目标解码路径所经过的音素按照路径顺序进行排列,得到待检测语音对应的识别音素序列。
[0107]
其中,解码语音帧是音素非空语音帧,由于在非逐帧解码搜索阶段,仅对音素非空语音帧进行解码搜索,而不对音素空白语音帧进行解密搜索,因此,可以将音素非空语音帧称为解码语音帧。
[0108]
解码语音帧对应的候选音素可能度可以是“序列到序列”模型输出的,若是“序列到序列”模型输出的,该候选音素可能度包括各类音素存在于解码语音帧的可能度和解码语音帧为音素空白语音帧的可能度。
[0109]
基于解码语音帧对应的候选音素可能度,可以形成如图3所示的语音解码网络,该语音解码网络中连接不同解码语音帧的状态之间的有向边对应的概率可以由语言模型给出。目标解码路径是语音解码网络中概率最大的路径。
[0110]
计算机设备基于解码语音帧对应的候选音素可能度形成图3所示的语音解码网络后,可以对该语音解码网络进行解码搜索,将最大概率路径作为目标解码路径,将目标解码路径经过的音素按照路径顺序进行排列,得到待检测语音对应的识别音素序列。
[0111]
上述方式中,根据过滤音素空白语音帧得到的解码语音帧的候选音素可能度构建语音解码网络,降低解码复杂度,提高目标检测词的识别效率。
[0112]
在一些实施例中,上述对待检测语音中的各个语音帧进行特征提取,得到语音帧对应的特征向量的步骤,具体可以包括:将待检测语音中各个语音帧输入到已训练的语音检测模型的特征提取子模型进行特征提取,得到语音帧对应的特征向量。上述基于特征向量序列进行音素识别,得到各个语音帧对应的候选音素可能度的步骤,具体可以包括:将特征向量序列输入到语音序列识别子模型中进行音素识别,得到各个语音帧对应的候选音素可能度。上述获取提取语音帧序列中各个提取语音帧对应的音素可能度分布的步骤,具体可以包括:从特征向量序列中提取提取语音帧对应的特征向量,将提取语音帧对应的特征向量输入到语音帧音素检测子模型进行音素识别;将语音帧音素检测子模型输出的各类音素在各个提取语音帧中的可能度分布,作为各个提取语音帧对应的音素可能度分布。
[0113]
其中,如图5所示,已训练的语音检测模型包括特征提取子模型以及分别与特征提取子模型连接的语音序列识别子模型以及语音帧音素检测子模型。
[0114]
特征提取子模型用于对语音帧进行特征提取,得到语音帧的特征向量。
[0115]
语音序列识别子模型是“序列到序列”模型,语音帧音素检测子模型是音素类别检测模型,关于这两个模型训练介绍如下:训练上述“序列到序列”模型时所用的标签包括表征音素空白的标签,针对难以预测对应音素的语音帧,该“序列到序列”模型会打上音素空白的标签,而不会强制性地为该语音帧赋予某类音素的标签,以降低模型损失值;训练该音素类别检测模型时所用标签可以包括各类音素的标签,不包括表征音素空白的标签,因此,可以利用该音素类别检测模型强制性地预测每个语音帧对应的音素,不会将某个语音帧预测为音素空白的语音帧。关于“序列到序列”模型和音素类别检测模型这两个模型的其他内容,可以参照上述的介绍,这里不赘述。
[0116]
计算机设备将待检测语音中各个语音帧输入到已训练的语音检测模型的特征提取子模型进行特征提取,得到语音帧对应的特征向量;并且计算机设备还可以将特征向量序列输入到语音序列识别子模型中进行音素识别,得到各个语音帧对应的候选音素可能度。以及,计算机设备可以从特征向量序列中提取提取语音帧对应的特征向量,将提取语音帧对应的特征向量输入到语音帧音素检测子模型进行音素识别;将语音帧音素检测子模型输出的各类音素在各个提取语音帧中的可能度分布,作为各个提取语音帧对应的音素可能度分布。
[0117]
上述方式中,由同一特征提取子模型对语音帧进行特征提取,得到语音帧的特征向量,并分别由“序列到序列”模型和音素类别检测模型对该语音帧的特征向量进行音素处理,提高处理效率。
[0118]
在一些实施例中,得到已训练的语音检测模型的步骤,具体可以包括:获取训练语音;将训练语音输入到待训练的特征提取子模型中进行特征提取,得到各个训练语音帧对应的训练特征向量,各个训练语音帧对应的训练特征向量按照对应的语音帧顺序进行排序,得到训练向量序列;将训练向量序列输入到待训练的语音序列识别子模型进行音素识
别,得到音素序列识别结果;基于音素序列识别结果与训练语音对应的标准识别结果的第一差异得到第一模型损失值;第一模型损失值与第一差异成正相关关系;将各个训练特征向量输入到待训练的语音帧音素检测子模型进行音素识别,得到语音帧音素检测子模型对应的语音帧音素检测结果;基于语音帧音素检测结果与训练语音对应的标准识别结果的第二差异得到第二模型损失值;第一模型损失值与第二差异成正相关关系;基于第一模型损失值以及第二模型损失值得到目标模型损失值;基于目标模型损失值对待训练的特征提取子模型、待训练的语音帧音素检测子模型以及待训练的语音序列识别子模型进行参数调整,将参数调整后的特征提取子模型、参数调整后的语音帧音素检测子模型以及参数调整后的语音序列识别子模型组成已训练的语音检测模型。
[0119]
其中,在训练语音序列识别子模型时,所用的输入可以是语音帧序列对应的训练向量序列,所用的输出可以是语音帧序列对应的训练音素序列,训练向量序列和训练音素序列在时间上无需一一对应,也即无需为语音帧序列的每个语音帧赋予对应的音素标签。
[0120]
待训练的语音序列识别子模型进行音素识别得到的音素序列识别结果是训练语音存在的音素序列;与音素序列识别结果进行比较的训练语音的标准识别结果是训练音素序列,第一差异表征语音序列识别子模型输出的音素序列和训练音素的差异程度。
[0121]
在训练语音帧音素检测子模型时,训练向量序列和训练音素序列在时间上需一一对应,也即需对语音帧序列的每个语音帧赋予对应的音素标签;该语音帧音素检测子模型的损失函数可以是ce函数。
[0122]
待训练的语音帧音素检测子模型进行音素识别得到的语音帧音素检测结果是为每个训练语音帧赋予的预测音素标签;与语音帧音素检测结果进行比较的训练语音的标准识别结果是每个训练语音帧的真实音素标签,第二差异表征语音帧音素检测子模型输出的语音帧音素检测结果和训练语音帧的真实音素标签的差异程度。
[0123]
目标模型损失值可以是第一模型损失值与第二模型损失值的和值;目标模型损失值也可以是第一模型损失值与赋予权重后的第二模型损失值之间的和值,示例性地,若语音序列识别子模型是transducer(转移机),语音帧检测子模型是以ce函数作为损失函数的模型,那么该目标模型损失值可以为l=l
transducer
+αl
ce
,α表示赋给第二模型损失值的权重。
[0124]
计算机设备将训练语音输入到待训练的特征提取子模型中进行特征提取,得到各个训练语音帧对应的训练特征向量,并按照对应的语音帧顺序对各个训练语音帧对应的训练特征向量进行排序,得到训练向量序列;将训练向量序列输入到待训练的语音序列识别子模型进行音素识别,得到音素序列识别结果;基于音素序列识别结果与训练语音对应的标准识别结果的第一差异得到第一模型损失值;第一模型损失值与第一差异成正相关关系;将各个训练特征向量输入到待训练的语音帧音素检测子模型进行音素识别,得到语音帧音素检测子模型对应的语音帧音素检测结果;基于语音帧音素检测结果与训练语音对应的标准识别结果的第二差异得到第二模型损失值;第一模型损失值与第二差异成正相关关系;基于第一模型损失值以及第二模型损失值得到目标模型损失值;基于目标模型损失值对待训练的特征提取子模型、待训练的语音帧音素检测子模型以及待训练的语音序列识别子模型进行参数调整,将参数调整后的特征提取子模型、参数调整后的语音帧音素检测子模型以及参数调整后的语音序列识别子模型组成已训练的语音检测模型。
[0125]
上述方式中,利用训练向量序列分别构建语音序列识别子模型和语音帧检测子模
型,并根据对应的预测结果与标准识别结果间的差异确定模型损失值,根据第一模型损失值与第二模型损失值确定的目标模型损失值,调整语音序列识别子模型和语音帧检测子模型的参数,提高模型预测的准确性。
[0126]
在一些实施例中,上述将特征向量序列输入到语音序列识别子模型中进行音素识别,得到各个语音帧对应的候选音素可能度的步骤,具体可以包括:按照特征向量序列的顺序依次获取特征向量序列中的当前特征向量;获取当前特征向量对应的前一特征向量对应的音素表示向量;将前一特征向量对应的音素表示向量以及当前特征向量输入到语音序列识别子模型中进行音素识别,得到当前特征向量对应的当前语音帧对应的候选音素可能度。
[0127]
其中,前一特征向量对应的音素表示向量是将前一特征向量输入到语音序列识别子模型中进行音素识别,得到的音素对应的表示向量。
[0128]
特征提取子模型可以是基于encoder(编码器)构建的,语音帧音素检测子模型可以是基于linear(线性层)构建的,语音序列识别子模型可以是基于predictor(预测器)和joint(联合层)构建的,得到图6所示的模型。其中,encoder可以是递归神经网络,例如lstm(long short-term memory,长短期记忆网络),接受t时刻的音频特征输入,输出声学隐层表示,encoder也可以是基于fsmn的网络。predictor可以是递归神经网络,例如lstm,接受上一步模型非空输出标签输出文本隐层表示,predictor也可以是cnn网络(convolutional neural networks,卷积神经网络),提高计算效率。joint可以是全连接神经网络,如线性层+激活单元,将声学表示和文本表示经过线性变换之后求和,输出隐单元表示,最后经过softmax,转换成概率分布。
[0129]
计算机设备按照特征向量序列的顺序依次获取特征向量序列中的当前特征向量,接着,获取当前特征向量对应的前一特征向量对应的音素表示向量;将前一特征向量对应的音素表示向量以及当前特征向量输入到语音序列识别子模型中进行音素识别,得到当前特征向量对应的当前语音帧对应的候选音素可能度。
[0130]
上述方式中,利用前一特征向量对应的音素表示向量和当前特征向量进行音素识别,可以提高当前特征向量对应的当前语音帧对应的候选音素可能度的预测准确性。
[0131]
在一些实施例中,得到前一特征向量对应的音素表示向量的步骤包括:将前一特征向量输入到语音序列识别子模型中进行音素识别,得到前一特征向量对应的候选音素可能度;从候选音素集合中选取对应的可能度最大的候选音素,作为目标音素;将目标音素对应的音素表示向量,作为前一特征向量对应的音素表示向量。
[0132]
其中,前一特征向量对应的候选音素可能度包括候选音素集合中各个候选音素对应的可能度,目标音素对应的音素表示向量包括累计的多个特征向量的音素,如图6所示的
[0133]
计算机设备在将前一特征向量输入到语音序列识别子模型中进行音素识别后,将语音序列识别子模型输出的候选音素可能度作为前一特征向量的候选音素可能度,并从候选音素集合中选取对应的可能度最大的候选音素作为目标音素,将目标音素对应的音素表示向量作为前一特征向量对应的音素表示向量。
[0134]
上述方式中,将候选音素集合中可能度最大的候选音素作为目标音素,并得到前
一特征向量对应的音素表示向量,提高对当前特征向量的预测准确性。
[0135]
在一些实施例中,在将前一特征向量对应的音素表示向量以及当前特征向量输入到语音序列识别子模型中进行音素识别,得到当前特征向量对应的当前语音帧对应的候选音素可能度之后,计算机设备还可以执行如下步骤:当特征向量序列中的特征向量未进行音素识别完毕,则返回按照特征向量序列的顺序依次获取特征向量序列中的当前特征向量的步骤,以对未进行音素识别的特征向量进行音素识别,直至特征向量序列中的特征向量音素识别完毕。
[0136]
如果特征向量序列中还存在一些特征向量没有输入到语音序列识别子模型中进行音素识别,那么该特征向量序列中的特征向量未进行音素识别完毕,此时可以将未进行音素识别的特征向量作为当前特征向量,并按照上述对当前特征向量的处理方式进行处理,直至特征向量序列中的特征向量都进行音素识别。
[0137]
上述方式中,若特征向量序列中的特征向量未进行音素识别完毕,则将未进行音素识别的特征向量作为当前特征向量并进行音素识别,保证特征向量序列中的特征向量都被识别完毕,避免遗漏,提高语音强制对齐的准确性。
[0138]
在一些实施例中,上述基于提取语音帧对应的音素可能度分布,得到待检测语音对应的语音检测结果的步骤,具体可以包括:基于提取语音帧对应的音素可能度分布得到目标检测词在待检测语音中的检测词位置;获取待检测语音中位于检测词位置对应的后向位置的语音,作为指令检测语音;对所示指令检测语音进行语音指令检测,得到指令检测语音对应的目标语音指令,以基于目标语音指令进行语音控制。
[0139]
目标检测词可以是唤醒词,计算机设备可以获取用户发出唤醒词对应的语音后并进行语音指令检测,确定用户发出的语音指令。目标语音指令可以是语音操控指令,如“打开空调”和“发送消息”等。
[0140]
检测词位置为目标检测词在语音中的位置,可以体现为目标检测词的音素序列和语音帧序列在时间上的对应关系。指令检测语音是可能存在目标语音指令的待检测语音。
[0141]
计算机设备通过逐帧解码搜索的方式,确定目标检测词在语音中的位置后,将位于检测词位置后的后向位置的语音作为指令检测语音,确定指令检测语音中国是否包括目标语音指令;若计算机设备确定指令检测语音中包括目标语音指令,则按照目标语音指令进行语音控制,如打开空调等。
[0142]
上述方式中,将目标检测词在待检测语音中的位置对应的后向位置的语音作为指令检测语音,避免对其他无效语音进行检测,降低设备能耗。
[0143]
本技术还提供一种语音检测方法,主要包括如下步骤:
[0144]
步骤s1,将待检测语音中各个语音帧输入到已训练的语音检测模型的特征提取子模型进行特征提取,得到语音帧对应的特征向量;
[0145]
步骤s2,对各个语音帧对应的特征向量按照对应的语音帧顺序进行排序,得到特征向量序列
[0146]
步骤s3,将特征向量序列输入到语音序列识别子模型中进行音素识别,得到各个语音帧对应的候选音素可能度;
[0147]
步骤s4,将音素空白对应的可能度大于可能度阈值的语音帧,作为音素空白的语音帧;
[0148]
步骤s5,过滤音素空白的语音帧,得到解码语音帧,获取基于解码语音帧对应的候选音素可能度形成的语音解码网络;
[0149]
步骤s6,基于语音解码网络进行解码,得到目标解码路径,将目标解码路径所经过的音素按照路径顺序进行排列,得到待检测语音对应的识别音素序列;
[0150]
步骤s7,将从识别音素序列中选取的目标检测词对应的音素序列,作为检测词音素序列;
[0151]
步骤s8,确定检测词音素序列对应的语音帧序列在待检测语音的起始位置以及终止位置;
[0152]
步骤s9,将待检测语音中音素空白的语音帧的数量作为空白帧数量;
[0153]
步骤s10,基于空白帧数量,确定语音帧扩展数量;语音帧扩展数量与空白帧数量成正相关关系;
[0154]
步骤s11,将与起始位置的距离为语音帧扩展数量的前向位置作为第一提取位置,将与终止位置的距离为语音帧扩展数量的后向位置作为第二提取位置;
[0155]
步骤s12,将待检测语音中位于第一提取位置以及第二提取位置之间的语音帧序列作为目标检测词对应的提取语音帧序列;
[0156]
步骤s13,从特征向量序列中提取提取语音帧对应的特征向量,将提取语音帧对应的特征向量输入到语音帧音素检测子模型进行音素识别;
[0157]
步骤s14,将语音帧音素检测子模型输出的各类音素在各个提取语音帧中的可能度分布,作为各个提取语音帧对应的音素可能度分布;
[0158]
步骤s15,基于提取语音帧对应的音素可能度分布得到目标检测词在待检测语音中的检测词位置;
[0159]
步骤s16,获取待检测语音中位于检测词位置对应的后向位置的语音,作为指令检测语音;
[0160]
步骤s17,对所示指令检测语音进行语音指令检测,得到指令检测语音对应的目标语音指令,以基于目标语音指令进行语音控制。
[0161]
本实施例中,由于基于语音帧对应的候选音素可能度过滤音素空白的语音帧,基于音素存在的语音帧对应的候选音素可能度得到识别音素序列,无需对音素空白的语音帧进行后续处理,提高识别音素序列的获取效率,也提高从识别音素序列中获取与目标检测词对应的音素序列的效率;接着,基于检测词音素序列对应的语音帧序列在待检测语音的语音帧序列中的位置,确定目标检测词对应的提取语音帧序列,后续无需对全部语音帧进行音素检测,提高效率;并且,由于对提取语音帧序列进行逐帧音素检测,因此,根据逐帧音素检测得到的各提取语音帧的音素可能度分布得到的语音检测结果,可以准确地反映关键词在语音中的位置,提高准确性。
[0162]
为了更好地理解上述方法,以下详细阐述一个本技术语音检测方法的应用实例。本应用实例的语音序列识别子模型是transducer模型,属于基于transducer模型的关键词(即目标检测词)检测系统。本应用实例中,关键词检测系统的模型训练是采用多任务学习(mtl)策略,即同时最小化transducer模型的损失函数的损失值(transducer loss)和ce损失函数的损失值,在保证关键词检测系统的准确性和实时性的情况下,兼顾准确率和效率。
[0163]
本应用实例主要包括:
[0164]
(1)采用mtl策略,同时优化transducer loss和ce loss,实现了“序列到序列”建模和逐帧对应建模;
[0165]
(2)结合线型搜索图和逐帧音素后验概率,高效完成语音-文本的对齐,提取关键词位置。
[0166]
本应用实例提供的方案具有如下特点:
[0167]
(1)采用较大颗粒度的建模单元——音素,声学模型的输出具有实际的发音意义;
[0168]
(2)由于transducer的输出中具有“空输出”的概念,在解码时,输出为空的语音帧直接跳过解码,提升了解码效率;
[0169]
(3)训练过程简单,强制对齐为可选过程,transducer的训练无需语音和文本的时间上的对应关系。
[0170]
本应用实例可以应用在车载离线语音自定义唤醒系统。自定义唤醒在车载语音助手中具有重要的地位,同时也对关键词检测的准确性有较高的要求。通过自定义唤醒,可以快速的实现语音助手中的一些快捷任务和操控指令,比如信息的发送与取消、车载设备的操控。本应用实例整个流程如图7所示,包括如下步骤:
[0171]
步骤s702,车载语音唤醒系统实时采集车内的语音(即音频);
[0172]
步骤s704,车载语音唤醒系统对语音进行分帧处理,得到多个语音帧并提取各个语音帧的特征;
[0173]
步骤s706,车载语音唤醒系统利用transducer对各语音帧进行声学计算,得到transducer输出的声学分数,该声学分数包括语音帧为音素空白的概率和各类音素存在于该语音帧的概率。
[0174]
步骤s708,车载语音唤醒系统基于音素非空的语音帧的声学分数构建解码图(相当于语音解码网络),进行非逐帧解码搜索。
[0175]
步骤s710,车载语音唤醒系统基于非逐帧解码搜索结果确定语音中是否存在关键词,以进行唤醒判断;若语音中存在关键词,则进行唤醒并进入步骤s712;若语音中不存在关键词,则不进行唤醒并返回步骤s702进行语音采集。
[0176]
步骤s712,车载语音唤醒系统确定语音中存在关键词后,利用ce损失函数构建的模型预测连续多个语音帧的声学分数,并基于连续多个语音帧的声学分数构建解码图,进行逐帧解码搜索。
[0177]
其中,关于transducer模型,给定输入序列:x=(x1,x2,...,x
t
)∈x
*
和输出序列:y=(y1,y2,...,yu)∈y
*

[0178]
x
*
和y
*
分别输入序列和输出序列的集合,x
t
∈x和yu∈y均为实数向量,x和y分别表示输入和输出空间。例如,在本应用实例中,transducer模型的建模单元为音素,输入序列x为特征向量序列(如fbank特征,mfcc特征),x
t
表示t时刻的特征向量;输出序列y则为音素序列,yu表示第u步的音素。
[0179]
transducer模型训练的最终目标是最大化下述的目标函数:
[0180][0181]
即给定输入和输出之后,最大化所有可能的路径概率之和。transducer模型训练的损失函数为:l
transducer
=-p(y|x)。
[0182]
如上所述,自定义唤醒任务一方面是检测语音中是否存在唤醒词,另一方面,也需要准确的获取唤醒词在语音中出现和结束的位置。由于transducer模型,存在输出延时的问题,导致网络输出的音素的时间戳和语音的实际位置无法对应,而且延时具有随机性,因此,transducer模型的输出用来进行强制对齐和语音提取时,会产生较大的误差。为了达到准确提取关键词位置的目的,本应用实例中采用图6所示的模型结构,在encoder输出之后,设置一个线性层,用于预测当前帧产生某一个音素的后验概率。
[0183]
本应用实例的模型可以看作是基于多任务学习构建得到的,即同时学习逐帧的音素预测和序列级别的音素预测。线性层部分对应的子模型,使用帧级的ce损失函数l
ce
讲行训练。最终,模型通过两个损失函数的插值进行训练:l=l
transducer
+αl
ce

[0184]
整体来说,本应用实例的解码和强制对齐主要包括三个部分:唤醒注册、唤醒判定和唤醒对齐,以下详细介绍各个部分。其中,唤醒词为关键词。
[0185]
一、唤醒注册:
[0186]
维特比解码搜索通常采用wfst和声学概率作为输入,将逐帧的声学概率在wfst(weighted finite state transducer,加权有限状态自动机)上进行维特比搜索以及beam cutoff,可以快速的查找声学和语言学概率最优的路径,此路径称之为best-lattice(最优路径)。
[0187]
本应用实例中,免唤醒引擎采用注册的方式以达到快速切换唤醒词的目的,将免唤醒所需的root-wfst分为garbage(如图8所示的ga)以及keywords两个部分;其中,garbage部分用于吸收非唤醒词的语音帧,而keywords部分则用于吸收唤醒词所在的语音帧。在进行wfst训练之时,难以确定唤醒词到底会有哪些,所以会在root-wfst留下$keywords的槽位,用于注册唤醒词时,将唤醒词所代表的keywords-wfst接入到整个root-wfst中,如图8所示。
[0188]
另外,注册唤醒词时,为了区分唤醒词和非唤醒词,将输出词表中大于等于keyword_start的部分称为唤醒词的输出,小于keyword_start的部分称之为gargage输出。
[0189]
二、唤醒判定:
[0190]
transducer的输出为语音帧存在各类音素的概率和语音帧为音素空白的概率,本应用实例将音素非空的语音帧的概率分布输入给维特比搜索解码,可以得到声学分和语言分最优的结果序列,即best-lattice。lattice序列中,每个位置的元素由ilabel(输入符),olabel(输出符)和weight(权重)三个部分组成,其中ilabel代表对应的音素,olabel代表解码的结果,weight代表组成该序列的整体代价。
[0191]
通过最优lattice,判断其中是否出现olabel》=keyword_start的部分,如果出现,将该部分取出,即可得到唤醒词的结果。
[0192]
在实际过程中,还需要对改唤醒结果进行置信度的判断,即检查唤醒词部分的声学概率与最优声学概率的比值是否符合设定的阈值。
[0193]
三、唤醒对齐:
[0194]
在语音唤醒中,需要唤醒词准确的对齐信息从而对语音进行切割,但是由于transducer的输出存在较大的不确定延时,不能够满足对齐的需求。因此,本应用实例采用帧级ce函数输出,能够较大概率输出最优声学序列,而且由于ce的输出是帧对齐的,在理想情况下,帧级ce输出的对齐信息将被控制在帧时长的范围内。
[0195]
为了兼顾准确率以及对齐的准确性,在被唤醒时,通过获取唤醒的best-lattice,构建一个加入了sil(“sil”表示静音)和自旋的alignment-wfst,并将ce模型对连续多个语音帧的音素概率分布序列和alignment-wfst输入到维特比解码中,也可以得到一个唤醒lattice,通过第二部分提及的唤醒词抽取方式,即可获得准确的唤醒词对齐信息。
[0196]
alignment-wfst是以best-lattice为基础建立wfst。如图9所示,best-lattice被分为garbage(ga)和keywords两个部分,garbage又会根据发音关系,组成若干的ga group,keywords也会成为一个group,group之间使用自旋的sil进行连接,ga内部也会进行自旋操作,以便吸收相同的发音。keywords内部也会被分为多个group,group之间用自旋的sil进行连接,group内部也会进行自旋操作以便吸收相同发音。图9中的虚线自旋是指group中的元素进行自旋。
[0197]
模型训练完成之后,采用libtorch进行模型的量化和部署。libtorch的安卓版本,采用qnnpack库(quantized neural networks package,神经网络加速库)进行int8的矩阵计算,大大加速的矩阵运算速度。模型采用pytorch进行训练,然后对模型进行训练后量化,即把模型参数量化为int8,并采用int8的矩阵乘法来加速计算。将量化后的模型导出,用于c++环境的前向推断,如图10所示。
[0198]
本应用实例提供的语音唤醒系统相较于传统的语音唤醒系统而言,在准确率和cpu(central processing unit,中央处理器)占用率上都具有优势:
[0199]
(1)准确率上,在比较嘈杂的环境中,本应用实例所提出的方案大幅超过了现有的模型;
[0200]
(2)cpu占用方面,本应用实例采用的量化和部署方式,也降低了cpu的利用率。
[0201]
其中,表1示出了基于dnn-hmm的语音唤醒系统和本应用实例提供的基于改进后的transducer模型的语音唤醒系统的唤醒率(%)比对结果:
[0202]
model测试集1测试集2测试集3dnn-hmm91.0884.4482.52transducer96.4996.3395
[0203]
表1
[0204]
表2示出了基于dnn-hmm的语音唤醒系统和本应用实例提供的基于改进后的transducer模型的语音唤醒系统的cpu占用率对比结果:
[0205]
modelcpu占用(峰值)dnn-hmm21.31%transducer19.94%
[0206]
表2
[0207]
应该理解的是,虽然图1(b)至图10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1(b)至图10中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0208]
在一些实施例中,如图11所示,提供了一种语音检测装置,包括:
[0209]
特征向量处理模块1102,用于对待检测语音中的各个语音帧进行特征提取,得到所述语音帧对应的特征向量,并对各个语音帧对应的特征向量按照对应的语音帧顺序进行排序,得到特征向量序列;
[0210]
候选音素可能度获取模块1104,用于基于所述特征向量序列进行音素识别,得到各个所述语音帧对应的候选音素可能度;
[0211]
音素序列获取模块1106,用于基于所述语音帧对应的候选音素可能度过滤音素空白的语音帧,以基于存在音素的语音帧对应的候选音素可能度,得到所述待检测语音对应的识别音素序列;
[0212]
语音帧提取模块1108,用于将从所述识别音素序列中选取的目标检测词对应的音素序列,作为检测词音素序列,并基于所述检测词音素序列对应的语音帧序列在所述待检测语音的语音帧序列中的位置,确定所述待检测语音中所述目标检测词对应的提取语音帧序列;
[0213]
音素可能度分布获取模块1110,用于获取所述提取语音帧序列中各个提取语音帧对应的音素可能度分布;所述提取语音帧对应的音素可能度分布是根据所述提取语音帧对应的特征向量分别进行语音帧音素检测得到的;
[0214]
语音检测结果获取模块1112,用于基于所述提取语音帧对应的音素可能度分布,得到所述待检测语音对应的语音检测结果。
[0215]
在一些实施例中,所述语音帧提取模块1108,还用于确定所述检测词音素序列对应的语音帧序列在所述待检测语音的起始位置以及终止位置;将所述起始位置对应的前向位置作为第一提取位置,将所述终止位置对应的后向位置作为第二提取位置;将所述待检测语音中位于所述第一提取位置以及所述第二提取位置之间的语音帧序列作为所述目标检测词对应的提取语音帧序列。
[0216]
在一些实施例中,所述语音帧提取模块1108,还用于将所述待检测语音中音素空白的语音帧的数量作为空白帧数量;基于所述空白帧数量,确定语音帧扩展数量;所述语音帧扩展数量与所述空白帧数量成正相关关系;将与所述起始位置的距离为所述语音帧扩展数量的前向位置作为第一提取位置,将与所述终止位置的距离为所述语音帧扩展数量的后向位置作为第二提取位置。
[0217]
在一些实施例中,所述候选音素可能度包括音素空白对应的可能度;所述音素序列获取模块1106,还用于将音素空白对应的可能度大于可能度阈值的语音帧,作为音素空白的语音帧;过滤音素空白的语音帧,得到解码语音帧,获取基于解码语音帧对应的候选音素可能度形成的语音解码网络;基于所述语音解码网络进行解码,得到目标解码路径,将所述目标解码路径所经过的音素按照路径顺序进行排列,得到所述待检测语音对应的识别音素序列。
[0218]
在一些实施例中,所述特征向量处理模块1102,还用于将所述待检测语音中各个语音帧输入到已训练的语音检测模型的特征提取子模型进行特征提取,得到所述语音帧对应的特征向量;所述已训练的语音检测模型包括特征提取子模型以及分别与特征提取子模型连接的语音序列识别子模型以及语音帧音素检测子模型;所述候选音素可能度获取模块,还用于将所述特征向量序列输入到所述语音序列识别子模型中进行音素识别,得到各
个所述语音帧对应的候选音素可能度;所述音素可能度分布获取模块,还用于从所述特征向量序列中提取所述提取语音帧对应的特征向量,将所述提取语音帧对应的特征向量输入到所述语音帧音素检测子模型进行音素识别;将所述语音帧音素检测子模型输出的各类音素在各个提取语音帧中的可能度分布,作为各个提取语音帧对应的音素可能度分布。
[0219]
在一些实施例中,所述装置还包括语音检测模型训练模块,用于获取训练语音;将所述训练语音输入到待训练的特征提取子模型中进行特征提取,得到各个训练语音帧对应的训练特征向量,各个训练语音帧对应的训练特征向量按照对应的语音帧顺序进行排序,得到训练向量序列;将所述训练向量序列输入到待训练的语音序列识别子模型进行音素识别,得到音素序列识别结果;基于所述音素序列识别结果与所述训练语音对应的标准识别结果的第一差异得到第一模型损失值;所述第一模型损失值与第一差异成正相关关系;将各个所述训练特征向量输入到待训练的所述语音帧音素检测子模型进行音素识别,得到所述语音帧音素检测子模型对应的语音帧音素检测结果;基于所述语音帧音素检测结果与所述训练语音对应的标准识别结果的第二差异得到第二模型损失值;所述第一模型损失值与第二差异成正相关关系;基于所述第一模型损失值以及所述第二模型损失值得到目标模型损失值;基于所述目标模型损失值对待训练的特征提取子模型、待训练的语音帧音素检测子模型以及待训练的语音序列识别子模型进行参数调整,将参数调整后的特征提取子模型、参数调整后的语音帧音素检测子模型以及参数调整后的语音序列识别子模型组成所述已训练的语音检测模型。
[0220]
在一些实施例中,所述候选音素可能度获取模块1104,还用于按照所述特征向量序列的顺序依次获取所述特征向量序列中的当前特征向量;获取所述当前特征向量对应的前一特征向量对应的音素表示向量;所述前一特征向量对应的音素表示向量是将所述前一特征向量输入到所述语音序列识别子模型中进行音素识别,得到的音素对应的表示向量;将所述前一特征向量对应的音素表示向量以及所述当前特征向量输入到所述语音序列识别子模型中进行音素识别,得到所述当前特征向量对应的当前语音帧对应的候选音素可能度。
[0221]
在一些实施例中,所述装置还包括音素表示向量获取模块,用于将所述前一特征向量输入到所述语音序列识别子模型中进行音素识别,得到所述前一特征向量对应的候选音素可能度;所述前一特征向量对应的候选音素可能度包括候选音素集合中各个候选音素对应的可能度;从所述候选音素集合中选取对应的可能度最大的候选音素,作为目标音素;将所述目标音素对应的音素表示向量,作为所述前一特征向量对应的音素表示向量。
[0222]
在一些实施例中,所述装置还包括音素识别持续模块,用于当所述特征向量序列中的特征向量未进行音素识别完毕,则返回按照所述特征向量序列的顺序依次获取所述特征向量序列中的当前特征向量的步骤,以对未进行音素识别的特征向量进行音素识别,直至所述特征向量序列中的特征向量音素识别完毕。
[0223]
在一些实施例中,所述语音检测结果获取模块1112,还用于基于所述提取语音帧对应的音素可能度分布得到所述目标检测词在待检测语音中的检测词位置;获取所述待检测语音中位于所述检测词位置对应的后向位置的语音,作为指令检测语音;对所示指令检测语音进行语音指令检测,得到所述指令检测语音对应的目标语音指令,以基于所述目标语音指令进行语音控制。
[0224]
关于语音检测装置的具体限定可以参见上文中对于语音检测方法的限定,在此不再赘述。上述语音检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0225]
在一些实施例中,提供了一种计算机设备,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储语音检测数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种语音检测方法。
[0226]
本领域技术人员可以理解,图12中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0227]
在一些实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述各个方法实施例中的步骤。
[0228]
在一些实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
[0229]
在一些实施例中,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
[0230]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
[0231]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0232]
以上的实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1