具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
为了提高语音处理效率,本申请实施例提供了一种语音处理方法、电子设备及存储介质,下面分别进行详细介绍。
参见图1,图1为本申请实施例提供的一种语音处理方法的流程示意图,该方法可以应用于语音交互设备,如手机、平台电脑、电子计算机、车载电脑等电子设备。上述语音处理方法可以包括如下步骤S101-S105:
S101,持续采集语音数据,并获得对持续采集的语音数据进行语音识别得到的文本数据。
其中,上述语音数据可以是用户的语音的数据,也可以是电子设备所发出的语音的数据等。
具体的,可以利用语音采集设备持续采集语音数据,然后对采集到的语音数据进行语音识别,得到文本数据。其中,上述语音采集设备可以是麦克风、拾音器等。
本申请的一个实施例中,在采集语音数据时,可以驱动语音采集设备采集语音。
在采集语音数据时,可以按照预设的语音采集参数进行语音数据的采集。
其中,上述语音采集参数可以包括采样率、位宽、通道数等。上述采样率表示:单位时间内采集语音数据的次数,例如,可以是16000Hz、20000Hz、30000Hz等。位宽表示所采集的语音数据的比特位数,例如,可以是8bit、16bit等。通道数表示采集语音数据时的通道数量,可以理解为采集语音数据时使用的语音采集设备的数量,例如,可以是单通道、双通道、四通道等。
本申请的一个实施例中,在对语音数据进行语音识别时,可以利用统计模型实现语音识别,上述模型可以是基于GMM-HMM(Gaussian Mixed Model-Hidden Markov Model,高斯混合模型-隐马尔科夫模型)的统计模型;
也可以利用神经网络模型实现语音识别,上述模型可以是基于DNN-HMM(DeepNeural Networks-Hidden Markov Model,深度神经网络模型-隐马尔科夫模型)的网络模型。
本申请的一个实施例中,可以持续采集语音数据;也可以是在接收到语音采集指令后开始持续采集语音数据,例如,可以是在检测到用户选中语音采集按钮之后开始持续采集语音数据,或者在检测到唤醒语音片段之后开始持续采集语音数据,上述唤醒语音片段可以是“hey,siri”、“小艺小艺”等。
相对应地,可以在接收到语音停止指令后,停止持续采集语音数据,例如,可以是在检测到用户选中语音停止按钮之后停止持续采集语音数据,或者在检测到停止语音片段之后停止持续采集语音数据,上述停止语音片段可以是“结束”、“over”等。
S102,对持续采集的语音数据进行静音检测。
具体的,可以持续对所采集的语音数据进行VAD(Voice Activity Detection,语音活动检测)静音检测,得到所采集的语音数据的持续静音的静音时长。
本申请的一个实施例中,可以检测持续采集的语音数据中的低波幅数据,记录所检测的低波幅数据的持续时长。
其中,低波幅数据为:信号的波幅低于预设波幅阈值的语音数据。上述预设波幅阈值可以是根据经验或者实验设定的数值,该预设波幅阈值的取值与应用场景相关,当应用场景中噪音较大时,预设波幅阈值的取值较高,当应用场景中噪音较小时,预设波幅阈值的取值较低。
具体的,可以获得所采集的语音数据的信号的波幅,参见图2,图2为本申请实施例提供的一种语音数据的信号的幅度示意图,在讲话的情况下,采集到的语音数据的信号幅度较高,在停止讲话的情况下,采集到的语音数据的信号幅度较低。当语音数据的信号的波幅低于预设波幅阈值时,可以理解为当前处于静音状态,因此可以检测采集的语音数据中信号的波幅低于预设波幅阈值的低波幅数据,确定上述低波幅数据持续的时长,作为静音时长。
除此之外,本申请的一个实施例中,也可以基于所采集的语音数据的信号的强度、能量等进行静音检测。例如,当所采集的语音数据的信号的能量低于预设的能量阈值时,认为处于静音状态。
S103,在静音时长达到预设的语音停顿时长后,对已获得的文本数据进行自然语言处理,得到处理结果。
其中,上述预设的语音停顿时长为:用于判断疑似语音结束的时长。预设的语音停顿时长的取值可以是50毫秒、100毫秒、200毫秒等。
具体的,当静音检测得到的静音时长达到上述预设的语音停顿时长后,认为可能已经结束了讲话,因此可以对已经获得的文本数据进行自然语言处理。
其中,自然语言处理包括意图识别、词槽提取以及后续的业务处理,上述意图识别指的是基于文本数据识别所采集的语音数据期望的服务请求,词槽提取指的是上述服务请求的关键字,业务处理指的是基于上述关键字,获得用于响应该请求的处理结果。
例如,假设对采集的语音数据进行语音识别得到的文本数据为“今天上海的天气”,则通过意图识别可以得出:上述语音数据期望的服务请求为查询天气,词槽提取可以得到时间关键字“今天”和地点关键字“上海”,而业务处理可以查询今天上海的天气,将查询结果作为用于响应上述语音数据的处理结果。除此之外,上述业务处理还可以将处理结果封装成用户可接受的格式,便于后续向用户反馈该处理结果。
S104,在静音时长达到预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,确定处理结果无效。
其中,预设的语音结束时长大于预设的语音停顿时长。上述预设的语音结束时长为:用于判断语音结束的时长。预设的语音结束时长的取值可以是650毫秒、700毫秒、800毫秒等。
具体的,在静音时长达到上述预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,则说明用户在停顿之后重新开始讲话,这种情况下,说明S101中所获得的文本数据并不完整,从而S103中基于该不完整的文本数据得到的自认语言处理的处理结果也不准确,需要继续进行语音识别,因此可以确定上述不准确的处理结果无效,后续不再基于该处理结果进行响应。并且可以基于S101继续对采集语音数据,并获得所采集的、持续的语音数据对应的文本数据。当再一次检测到静音时长达到预设的语音停顿时长后,可以重新对所采集的持续的语音数据对应的文本数据进行自然语言处理,本次自然语言处理所基于的文本数据中的内容包含上一次的文本数据中的内容。
本申请的一个实施例中,在静音时长达到预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,则可以重置静音时长,以使得静音时长归零,便于后续重新检测静音持续的时长。
S105,在静音时长达到预设的语音结束时长后,将处理结果确定为针对持续采集的语音数据的响应结果。
具体的,在静音时长达到语音结束后,可以认为用户已经结束讲话,则之前所采集的语音数据中包含用户完整的讲话内容,并且由于之前已经基于所采集语音对应的文本数据进行自然语言处理得到了处理结果,因此可以直接将上述处理结果作为所采集的语音数据的响应结果进行响应。
参见图3,图3为本申请实施例提供的另一种语音数据的信号的幅度示意图,如图3所示,在检测到语音数据的信号的幅度小于预设波幅阈值时,可以认为处于静音状态,确定静音状态持续的静音时长,当静音时长未达到预设的语音结束时长的情况下,可以认为持续的语音中出现了停顿,但并未结束,只有当静音时长达到上述预设的语音结束时长的情况下,才认为语音结束。
上述实施例提供的语音处理方案中,持续采集语音数据,并获得对持续采集的语音数据进行语音识别得到的文本数据;对持续采集的语音数据进行静音检测;在静音时长达到预设的语音停顿时长后,对已获得的文本数据进行自然语言处理,得到处理结果;在静音时长达到预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,确定处理结果无效,其中,预设的语音结束时长大于预设的语音停顿时长;在静音时长达到预设的语音结束时长后,将处理结果确定为针对持续采集的语音数据的响应结果。这样可以在静音时长达到预设的语音停顿时长之后,即可对已采集的语音数据对应的文本数据进行自然语言处理,等待静音时长达到预设的语音结束时长的过程中,可以获得上述自然语言处理结果,在静音时长达到预设的语音结束时长后,认为语音结束,这种情况下由于已经得到了处理结果,因此可以直接基于上述处理结果对语音数据进行响应,节省自然语言处理耗时。由此可见,应用上述实施例提供的方案,可以提高语音处理效率。
本申请的一个实施例中,对于上述步骤S104,在确定处理结果无效时,可以是:若检测到静音结束,且下一文本数据不同于参考文本数据,确定处理结果无效。
其中,下一文本数据为:在下一次检测到静音时长达到预设的语音停顿时长时,所获得的对持续采集的语音数据进行语音识别得到的文本数据,参考文本数据为:获得处理结果时所基于的文本数据。
上述情况下,在静音时长达到预设的语音停顿时长后,若下一文本数据与参考文本数据不一致,对已获得的文本数据进行自然语言处理,得到处理结果。
具体的,在静音时长达到预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,则可以暂时不确定当前所获得的处理结果进行无效,而是继续采集语音数据并进行静音检测,当下一次检测到在静音时长达到预设的语音停顿时长后,获得对持续采集的语音数据进行语音识别得到的下一文本数据,判断该下一文本数据与获得当前的处理结果时所基于的参考文本数据是否一致;
若不一致,则后续可以基于该下一文本数据进行自然语言处理,获得新的处理结果,而不再需要当前的处理结果,因此可以确定当前的处理结果无效;
若一致,则说明之后所采集的语音数据可能是噪音数据,基于下一文本数据得到的自然语言处理结果与基于参考文本数据得到的自然语言处理结果相同,因此无需再次对下一文本数据进行自然语言处理,而是可以直接利用当前的处理结果,因此可以不确定当前的处理结果无效。
上述方案中,在静音时长达到预设的语音停顿时长、且未达到预设的语音结束时长的情况下,可以对当前的文本数据与之后基于持续的语音数据得到的文本数据进行比对,在比对一致的情况下,可以直接利用当前的文本数据对应的自然语言处理结果,无需重复进行自然语言处理,从而可以节省计算资源。
本申请的一个实施例中,在对文本数据进行自然语言处理时,可以检测已获得的文本数据是否完整;在已获得的文本数据完整的情况下,对已获得的文本数据进行自然语言处理,得到处理结果。
具体的,在对所采集的语音数据对应的文本数据进行自然语言处理之前,可以先检测上述文本数据是否完整,若完整,则说明基于所采集的语音数据得到的文本数据能够反映用户的意图,并且基于该文本数据能够提取得到完整的词槽,因此可以继续对该文本数据进行自然语言处理,利用上述意图和词槽得到自然语言处理的处理结果。
本申请的一个实施例中,在上述文本数据不完整的情况下,可以丢弃该文本数据,不对该文本数据进行自然语言处理。
除此之外,还可以生成提示信息,以提示用户文本数据不完整,重新开始讲话。
参见图4,图4为本申请实施例提供的一种文本数据检测方法的流程示意图,在检测已获得的文本数据是否完整时,可以包括如下步骤S401-S403:
S401,针对文本数据中的每一字符,获得该字符的出现概率。
其中,每一字符的出现概率为:该字符出现在参考字符之后、且出现在当前位置的概率,上述参考字符为:该字符之前预设数量个字符。上述预设数量可以是1、2、3、5等。
本申请的一个实施例中,上述参考字符可以是:文本数据中该字符之前相邻的预设数量个字符。
每一字符Xn的出现概率可以表示为P(Xn丨Xn-m……Xn-2,Xn-1),其中,m表示预设数量,Xn-m……Xn-2,Xn-1表示:位于Xn之前、且与Xn相邻的预设数量个字符。
具体的,一个完整的语句中,各个字符前后之间是存在关联关系的,基于上述关联关系,可以计算各个字符出现的概率,每一字符的出现概率越大,表示该字符的出现越合理。
S402,根据文本数据中各个字符的出现概率,获得文本数据的出现概率。
本申请的一个实施例中,可以计算文本数据中各个字符的出现概率的乘积,作为文本数据的出现概率。文本数据的出现概率越大,表明该文本数据越合理,进而说明该文本数据完整的可能性越高。
其中,文本数据的出现概率P(x1,x2,x3,...,xn)可以表示为:
P(x1,x2,x3,...,xn)=P(x1)*P(x2)*P(x3)...*P(xn)
=P(x1)*P(x2|x1)*P(x3|x1,x2)...*P(xn|xn-m...xn-2,xn-1)
其中,P(x1)表示文本数据中首个字符x1的出现概率,可以理解为字符x1出现的次数占所有字符出现总次数的比值,相应地,P(x2)表示字符x2的出现概率,P(x3)表示字符x3的出现概率,P(xn)表示字符xn的出现概率;
P(x2|x1)表示:字符x2出现在参考字符x1之后、且出现在当前位置的概率,即x1的出现概率;
P(x3|x1,x2)表示:字符x3出现在参考字符x1,x2之后、且出现在当前位置的概率,即x3的出现概率。
m表示预设数量,假设m的取值为2,则文本数据的出现概率P(x1,x2,x3,...,xn)可以表示为:
P(x1,x2,x3,...,xn)=P(x1)*P(x2)*P(x3)...*P(xn)
=P(x1)*P(x2|x1)*P(x3|x1,x2)...*P(xn|xn-2,Xn-1)
上述P(xn|xn-2,Xn-1)表示:字符xn出现在参考字符xn-2,Xn-1之后、且出现在当前位置的概率,即xn的出现概率。
本申请的一个实施例中,在获得文本数据的出现概率时,也可以确定文本数据中各个字符的出现概率的算数平均值、最大值、中位值等,作为文本数据的出现概率,本申请实施例并不对此进行限定。
S403,在文本数据的出现概率达到预设的概率阈值的情况下,确定文本数据完整。
具体的,在文本数据的出现概率达到上述概率阈值的情况下,认为该文本数据的合理性较高,进而可以确定该文本数据完整。
本申请的一个实施例中,在获得字符的出现概率时,针对文本数据中的每一字符,可以确定预设的文本语料中第一连续字符出现的第一次数,并确定文本语料中第二连续字符出现的第二次数;根据第一次数、第二次数,计算该字符的出现概率。
其中,上述文本语料可以是公开的文本,如小说、期刊、论文等。
第二连续字符包括:文本数据中该字符之前预设数量个字符,第一连续字符包括:第二连续字符以及该字符。本申请的一个实施例中,上述第二连续字符可以是:文本数据中该字符之前相邻的预设数量个字符。例如,假设文本数据为“请问到故宫怎么走”,预设数量为3,针对上述文本数据中的字符“怎”,第二连续字符为“怎”之前相邻的3个字符“到故宫”,第一连续字符为“到故宫怎”。
具体的,针对每一字符,可以获得文本语料中该字符、以及该字符之前预设数量个连续的第一连续字符出现的次数,作为第一次数,并获得该字符之前预设数量个连续的第二连续字符出现的次数,作为第二次数,然后计算第一次数除以第二次数得到的商值,作为该字符的出现概率。
本申请的一个实施例中,可以预先获得文本语料中任意预设数量个字符连续出现的次数,并预先获得任意预设数量+1个字符连续出现的次数。这样在获得第一次数和第二次数时,可以从上述预先获得的次数中,分别查找第一连续字符、第二连续字符出现的第一次数、第二次数。
假设文本语料中所有字符出现的总次数为N,其中字符xi出现了ni次,则该字符出现的概率为:ni/N。假设字符xj出现了nj次,则该字符出现的概率为nj/N。假设字符xj出现在字符xi后面的次数为nz次,则在xi出现的情况下,xj在xi之后出现、且出现在当前位置的概率P(xj|xi)为nz/ni。
假设上述预设数量为1,文本语料中存在“我”“亲”“爱”“的”“祖”“国”“母”“亲”等字符,上述各个字符出现的次数如下表1所示:
表1
字符 |
我 |
亲 |
爱 |
的 |
祖 |
国 |
母 |
出现次数 |
2533 |
927 |
2417 |
746 |
158 |
1093 |
341 |
如上述表1所示,字符“我”出现了2533次、字符“亲”出现了927次,以此类推,字符“母”出现了341次。
进一步地,可以统计上述每一字符与其他任一字符一起出现的次数,得到如下表2所示的2个字符一起出现的次数:
表2
其中,上表2中每一项的数值表示:在前一字符出现之后当前字符出现的次数。
如上述表2所示,字符“我”出现在字符“亲”之前的次数为827次,也就是“我亲”出现了827次;再比如,字符“亲”出现在字符“爱”之前的次数为608次,也就是“亲爱”出现了608次。
在得到上述表2所示的两个字符一起出现的次数后,可以计算每一字符在前一字符出现的情况下、在前一字符之后且出现在当前位置的概率,即出现概率。
其中,可以利用如下公式计算字符wi的出现概率P(wi|wi-1):
P(wi|wi-1)=C(wiwi-1)/C(wi-1)
其中,wi-1表示字符wi的前一字符,C(wiwi-1)表示连续字符wiwi-1出现的次数,C(wi-1)表示字符wi-1出现的次数。
以上述表2中字符“爱”为例,连续字符“亲爱”出现了608次,即第一次数为608次,字符“亲”单独出现了927次,即第二次数为927次,则字符“爱”出现在字符“亲”出现之后且出现在当前位置的概率的出现概率P(爱|亲)为:
P(爱|亲)=608/927=0.66
以上述表2中字符“国”为例,连续字符“祖国”出现了82次,即第一次数为82次,字符“亲”单独出现了158次,即第二次数为158次,则字符“国”在字符“祖”出现之后相邻出现的概率的出现概率P(国|祖)为:
P(国|祖)=82/158=0.52。
基于上述表2所示的次数,可以得到如下表3所示的各个字符对应的出现概率:
表3
其中,上表3中每一项的数值表示:在前一字符出现之后当前字符出现的出现概率。
本申请的一个实施例中,针对文本数据中的开头字符和结尾字符,还可以根据文本语料,分别获得上述开头字符作为开头的概率、以及结尾字符作为结尾的概率。
例如,假设文本数据为“我亲爱的祖国母亲”,其中加上开头标识符“<s>”和结尾标识符“</s>”后,上述文本数据可以表示为“<s>我亲爱的祖国母亲</s>”。
假设文本语料中下列字符作为开头或结尾的概率分别为:
字符“我”作为开头的概率:P(我|<s>)=0.25
字符“亲”作为结尾的概率:P(</s>|亲)=0.058
字符“亲”作为开头的概率:P(亲|<s>)=0.058
字符“国”作为结尾的概率:P(</s>|国)=0.01
字符“国”作为开头的概率:P(国|</s>)=0.01
字符“祖”作为结尾的概率:P(</s>|祖)=0.01
字符“祖”作为开头的概率:P(祖|</s>)=0.01
则文本数据“<s>我亲爱的祖国母亲</s>”的出现概率可以表示为:
P(<s>,我,亲,爱,的,祖,国,母,亲,</s>)
=P(我|<s>)*P(亲|我)*P(爱|亲)*P(的|爱)*P(祖|的)*P(国|祖)*P(母|国)*P(亲|母)*P(</s>|亲)
=C(<s>我)/C(<s>)*C(我亲)/C(我)*C(亲爱)/C(亲)*C(爱的)/C(爱)*C(的祖)/C(的)*C(祖国)/C(祖)*C(国母)/C(国)*C(母亲)/C(母)*C(母</s>)/C(亲)
=0.25*0.33*0.66*0.28*0.021*0.52*0.091*0.293
=4.439e-6
假设文本数据为“亲爱的祖国”,其该文本数据的出现概率为:
P(<s>,亲,爱,的,祖,国,</s>)
=P(亲|<s>)*P(爱|亲)*P(的|爱)*P(祖|的)*P(国|祖)*P(</s>|国)
=C(<s>亲)/C(<s>)*C(亲爱)/C(亲)*C(爱的)/C(爱)*C(的祖)/C(的)*C(祖国)/C(祖)*C(国</s>)/C(国)
=0.058*0.66*0.28*0.021*0.52*0.01
=1.17e-6
相应地,假设文本数据为不通顺的“亲爱的国祖”,其该不通顺的文本数据的出现概率为:
P(<s>,亲,爱,的,国,祖,</s>)
=P(亲|<s>)*P(爱|亲)*P(的|爱)*P(国|的)*P(祖|国)*P(</s>|祖)
=C(<s>亲)/C(<s>)*C(亲爱)/C(亲)*C(爱的)/C(爱)*C(的国)/C(的)*C(国祖)/C(国)*C(祖</s>)/C(祖)
=0.058*0.66*0.28*0.0027*0.00092*0.01
=2.662e-10
可见,比较通顺的文本数据“亲爱的祖国”的出现概率1.17e-6、不通顺的文本数据“亲爱的国祖”的出现概率2.662e-10,可以说明合理通顺的文本的出现概率大于不合理通顺的文本的出现概率,而合理通顺的文本通常为完整的文本,因此可以计算文本数据的出现概率,在上述概率较大的情况下,确定该文本数据完整。
本申请的一个实施例中,可以利用语言模型计算文本数据的出现概率,上述语言模型可以是隐马尔科夫模型(Hidden Markov Model)。
上述隐马尔科夫模型是一种基于字符前后概率关系的语言模型,隐马尔科夫模型假设文本中每一字符出现的概率,与该字符前面的预设数量m个字符相关,即第n个字符xn出现的概率与前面m个字符xn-m,...,xn-2,xn-1有关。文本数据的出现概率可以使用联合概率链来计算,每一字符受前m个字符的影响,也就是说每一个字符的概率为条件概率,文本数据的出现概率为各个字符的出现概率的乘积。
上述预设阈值m的取值可以为2,这种情况下,上述语言模型为3-gram(3阶语言模型),每一字符的出现概率只与该字符之前的2个字符有关。
本申请的一个实施例中,可以利用文本语料,对3阶隐马尔科夫模型进行统计训练,生成3-gram语言模型,用3-gram语言模型对文本数据进行联合概率计算,得到该文本数据的出现概率。
上述出现概率可以反映该文本数据的完整程度,当文本数据的出现概率达到预设的概率阈值的情况下,可以认为该文本数据完整。否则可以认为该文本数据不完整,无须对该文本数据进行自然语言处理,从而可以节省计算资源。
其中,上述概率阈值可以根据经验或者实验获得,可以设置较小的概率阈值,从而提高进行自然语言处理的文本数据的覆盖率。
本申请的一个实施例中,在判断文本数据是否完整时,可以确定文本数据的目标字符数量;从字符数量与概率阈值的预设对应关系中,确定目标字符数量对应的概率阈值;在文本数据的出现概率达到所确定的概率阈值的情况下,确定文本数据完整。
具体的,可以预先设定字符数量和概率阈值之间的预设对应关系,这样在判断文本数据是否完整时,可以获得该文本数据的字符数量,然后从上述预设对应关系中查找该字符数量对应的概率阈值,作为用于判断该文本数据是否完整的概率阈值,然后对计算得到的该文本数据的出现概率与上述所确定的概率阈值进行对比,当文本数据的出现概率达到所确定的概率阈值时,可以确定文本数据完整。
本申请的一个实施例中,预设对应关系中,字符数量可以与概率阈值负相关,即字符数量越多,概率阈值越小;字符数量越少,概率阈值越大。
除此之外,也可以根据实验或者经验设定上述预设对应关系。参见下表4,下表4为本申请实施例提供的一种预设对应关系的示意表:
表4
如上表4所示,在文本数据的字符数量为7的情况下,用于判断该文本数据是否完整的概率阈值可以为3.00e-10。
参见图5,图5为本申请实施例提供的另一种语音处理方法的流程示意图。如图5所示,该方法包括如下步骤S501-S509:
S501,持续采集语音数据,并获得对持续采集的语音数据进行语音识别得到的文本数据。
S502,对持续采集的语音数据进行静音检测。
S503,判断静音时长是否达到预设的语音停顿时长,若为是,执行S504。
S504,检测已获得的文本数据是否完整,若为是,执行S505,否则执行S509。
S505,对已获得的文本数据进行自然语言处理,得到处理结果。
S506,判断静音时长是否达到预设的语音结束时长,若为是,执行S507,否则执行S508。
S507,将处理结果确定为针对持续采集的语音数据的响应结果。
S508,确定处理结果无效。
S509,丢弃文本数据。
本申请的一个实施例中,可以利用ASR(Automatic Speech Recognition,语音识别)模块驱动语音采集设备持续采集语音数据,并对所采集的语音数据进行语音识别,得到文本数据,除此之外,上述ASR模块还可以对语音数据进行静音检测。
另外,可以利用NLP(Natural Language Processing,自然语言处理)模块对ASR模块识别到的文本数据进行自然语言处理。
参见图6,图6为本申请实施例提供的一种自然语言处理的信令交互示意图。如图6所示:
用户可以发出语音;
ASR模块可以持续语音数据,然后对语音数据进行语音识别,得到文本数据;
ASR模块还可以持续进行静音检测,当检测到静音时长达到预设的语音停顿时长之后,即可将已采集的语音数据对应的文本数据发送至NLP模块;
NLP模块接收到上述文本数据后,可以对该文本数据进行自然语言处理,得到处理结果;
在上述过程中,ASR模块继续进行静音检测,若检测到静音时长达到预设的语音结束时长,即可通知NLP模块语音结束;
在确定语音结束后,可以利用NLP自然语言处理得到的处理结果进行响应。
参见图7,图7为本申请实施例提供的另一种自然语言处理的信令交互示意图。如图7所示:
用户可以发出语音;
ASR模块可以持续语音数据,然后对语音数据进行语音识别,得到文本数据A;
ASR模块还可以持续进行静音检测,当检测到静音时长达到预设的语音停顿时长之后,即可将已采集的语音数据对应的文本数据A发送至NLP模块;
NLP模块接收到上述文本数据A后,可以对该文本数据A进行自然语言处理,得到处理结果A;
在上述过程中,ASR模块继续进行静音检测,若在静音时长未达到预设的语音结束时长的情况下,检测到静音结束,则可以继续对采集的语音数据进行语音识别;
当再一次检测到静音时长达到预设的语音停顿时长后,将所采集的持续的语音数据对应的文本数据B发送至NLP模块,该文本数据B中的内容包含上一次发送至NLP模块的文本数据A中的内容;
NLP模块可以判断文本数据B与文本数据A是否一致,在不一致的情况下,丢弃之前自然语言处理得到的处理结果A,重新对新接收到的文本数据B进行自然语言处理,得到处理结果B;
在上述过程中,ASR模块继续进行静音检测,若检测到静音时长达到预设的语音结束时长,即可通知NLP模块语音结束;
在确定语音结束后,可以利用NLP自然语言处理得到的处理结果B进行响应。
上述实施例提供的语音处理方案中,持续采集语音数据,并获得对持续采集的语音数据进行语音识别得到的文本数据;对持续采集的语音数据进行静音检测;在静音时长达到预设的语音停顿时长后,对已获得的文本数据进行自然语言处理,得到处理结果;在静音时长达到预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,确定处理结果无效,其中,预设的语音结束时长大于预设的语音停顿时长;在静音时长达到预设的语音结束时长后,将处理结果确定为针对持续采集的语音数据的响应结果。参见图8,图8为本申请实施例提供的一种语音处理时间节点的示意图。如图8所示,在静音时长达到语音停顿时长之后,即可对已采集的语音数据对应的文本数据进行自然语言处理,等待静音时长达到语音结束时长的过程中,可以获得上述自然语言处理结果,在静音时长达到语音结束时长后,认为语音结束,这种情况下由于已经得到了处理结果,因此可以直接基于上述处理结果对语音数据进行响应,节省自然语言处理耗时。由此可见,应用上述实施例提供的方案,可以提高语音处理效率。
参见图9,图9为本申请实施例提供的一种语音处理装置的结构示意图,所述装置包括:
语音采集模块901,用于持续采集语音数据,并获得对持续采集的语音数据进行语音识别得到的文本数据;
静音检测模块902,用于对持续采集的语音数据进行静音检测;
语言处理模块903,用于在静音时长达到预设的预设的语音停顿时长后,对已获得的文本数据进行自然语言处理,得到处理结果;
语音停顿处理模块904,用于在所述静音时长达到所述预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,确定所述处理结果无效,其中,所述预设的语音结束时长大于所述预设的语音停顿时长;
语音结束处理模块905,用于在所述静音时长达到所述预设的语音结束时长后,将所述处理结果确定为针对持续采集的语音数据的响应结果。
本申请的一个实施例中,所述语音停顿处理模块904,具体用于:在所述静音时长达到所述预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,且下一文本数据不同于参考文本数据,确定所述处理结果无效,其中,所述下一文本数据为:在下一次检测到所述静音时长达到所述预设的语音停顿时长时,所获得的对持续采集的语音数据进行语音识别得到的文本数据,所述参考文本数据为:获得所述处理结果时所基于的文本数据;
所述语言处理模块903,具体用于:在静音时长达到预设的语音停顿时长后,若所述下一文本数据与所述参考文本数据不一致,对已获得的文本数据进行自然语言处理,得到处理结果。
本申请的一个实施例中,所述语言处理模块903,包括:
完整检测单元,用于在静音时长达到预设的预设的语音停顿时长后,检测已获得的文本数据是否完整;
语言处理单元,用于在已获得的文本数据完整的情况下,对已获得的文本数据进行自然语言处理,得到处理结果。
本申请的一个实施例中,所述完整检测单元,包括:
第一概率获得子单元,用于针对所述文本数据中的每一字符,获得该字符的出现概率,其中,每一字符的出现概率为:该字符出现在参考字符之后、且出现在当前位置的概率,所述参考字符为:该字符之前预设数量个字符;
第二概率获得子单元,用于根据所述文本数据中各个字符的出现概率,获得所述文本数据的出现概率;
完整检测子单元,用于在所述文本数据的出现概率达到预设的概率阈值的情况下,确定所述文本数据完整。
本申请的一个实施例中,所述第一概率获得子单元,具体用于:针对所述文本数据中的每一字符,确定预设的文本语料中第一连续字符出现的第一次数,并确定所述文本语料中第二连续字符出现的第二次数;根据所述第一次数、第二次数,计算该字符的出现概率,其中,所述第二连续字符包括:所述文本数据中该字符之前所述预设数量个字符,所述第一连续字符包括:所述第二连续字符以及该字符。
本申请的一个实施例中,所述完整检测子单元,具体用于:确定所述文本数据的目标字符数量;从字符数量与概率阈值的预设对应关系中,确定所述目标字符数量对应的概率阈值;在所述文本数据的出现概率达到所确定的概率阈值的情况下,确定所述文本数据完整。
本申请的一个实施例中,所述第二概率获得子单元,具体用于:计算所述文本数据中各个字符的出现概率的乘积,作为所述文本数据的出现概率。
本申请的一个实施例中,所述静音检测902,具体用于:检测持续采集的语音数据中的低波幅数据,记录所检测的低波幅数据的持续时长,其中,所述低波幅数据为:信号的波幅低于预设波幅阈值的语音数据。
上述实施例提供的语音处理方案中,持续采集语音数据,并获得对持续采集的语音数据进行语音识别得到的文本数据;对持续采集的语音数据进行静音检测;在静音时长达到预设的语音停顿时长后,对已获得的文本数据进行自然语言处理,得到处理结果;在静音时长达到预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,确定处理结果无效,其中,预设的语音结束时长大于预设的语音停顿时长;在静音时长达到预设的语音结束时长后,将处理结果确定为针对持续采集的语音数据的响应结果。这样可以在静音时长达到预设的语音停顿时长之后,即可对已采集的语音数据对应的文本数据进行自然语言处理,等待静音时长达到预设的语音结束时长的过程中,可以获得上述自然语言处理结果,在静音时长达到预设的语音结束时长后,认为语音结束,这种情况下由于已经得到了处理结果,因此可以直接基于上述处理结果对语音数据进行响应,节省自然语言处理耗时。由此可见,应用上述实施例提供的方案,可以提高语音处理效率。
本申请实施例还提供了一种电子设备,如图10所示,包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001,通信接口1002,存储器1003通过通信总线1004完成相互间的通信,存储器1003,用于存放计算机程序;处理器1001,用于执行存储器1003上所存放的程序时,实现语音处理方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一语音处理方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一语音处理方法。
上述实施例提供的语音处理方案中,持续采集语音数据,并获得对持续采集的语音数据进行语音识别得到的文本数据;对持续采集的语音数据进行静音检测;在静音时长达到预设的语音停顿时长后,对已获得的文本数据进行自然语言处理,得到处理结果;在静音时长达到预设的语音停顿时长、且未达到预设的语音结束时长的情况下,若检测到静音结束,确定处理结果无效,其中,预设的语音结束时长大于预设的语音停顿时长;在静音时长达到预设的语音结束时长后,将处理结果确定为针对持续采集的语音数据的响应结果。这样可以在静音时长达到预设的语音停顿时长之后,即可对已采集的语音数据对应的文本数据进行自然语言处理,等待静音时长达到预设的语音结束时长的过程中,可以获得上述自然语言处理结果,在静音时长达到预设的语音结束时长后,认为语音结束,这种情况下由于已经得到了处理结果,因此可以直接基于上述处理结果对语音数据进行响应,节省自然语言处理耗时。由此可见,应用上述实施例提供的方案,可以提高语音处理效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。