本发明涉及语音识别技术领域,特别是涉及一种语音识别方法及装置。
背景技术:
移动终端,是指可以在移动中使用的计算机设备,广义地讲包括手机、笔记本、平板电脑、pos机、车载电脑等。随着集成电路技术的飞速发展,移动终端已经拥有了强大的处理能力,移动终端正在从简单的通话工具变为一个综合信息处理平台,这也给移动终端增加了更加宽广的发展空间。但是,移动终端的使用,通常需要用户集中一定的注意力。如今的移动终端设备都配备有触摸屏,用户需要触摸所述触摸屏,以执行相应的操作。但是,用户无法触碰到移动终端设备时,操作移动终端便会变得极其不方便。例如,当用户驾驶车辆或者手中提有物品的时候。
语音识别方法和总听系统(alwayslisteningsystem)的使用,使得可以对移动终端进行非手动激活和操作。当所述总听系统检测到声音信号时,语音识别系统便会激活,并对检测到的声音信号进行识别,之后,移动终端便会根据所识别出的声音信号执行相应的操作,例如,当用户输入“拨打xx的手机”的语音时,移动终端便可以对用户输入的“拨打xx的手机”的语音信息进行识别,并在正确识别后,从移动终端中获取xx的手机号码的信息,并拨打。
但是,现有技术中语音识别方法,一般采用预设数学模型对输入的声音数据进行语音识别,存在着语音识别速度慢且准确率低的问题。
技术实现要素:
本发明实施例解决的问题是提高语音识别的速度和准确率。
为解决上述问题,本发明实施例提供了一种语音识别方法,所述语音识别方法包括:
将获取的待识别的声音数据划分为多个重叠的声音帧,并对每个声音帧进行快速傅立叶变换运算,得到对应的频谱;
对所述多个重叠的声音帧的频谱进行遍历,将遍历到的当前声音帧的频谱划分为无重叠的多个子带;
根据当前声音帧的多个子带的频谱能量,计算得到当前声音帧的能量均方根;
当确定当前声音帧的能量均方根大于预设的阈值时,确定当前声音帧中包括语音信息。
可选地,所述将遍历到的当前声音帧的频谱划分为无重叠的多个子带,包括:按照预设的子带宽度将遍历到的当前声音帧的频谱划分成为无重叠的多个子带。
可选地,采用如下的公式分别计算得到当前声音帧的能量均方根:
可选地,采用如下的公式计算得到所述预设的阈值:
threshold=k1·emin+k2·emax,其中,threshold表示所述预设的阈值,k1和k2为预设的系数,emin表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值,emax表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值。
可选地,预设的系数k1和k2满足如下的公式:
k1=1-λ;
k2=λ,其中,λ为预设的比例因子。
可选地,所述预设的比例因子λ的取值范围为[0.950,0.999]。
可选地,所述预设的比例因子满足如下的公式:
可选地,所述从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值满足如下的公式:
emin(j)=emin(j-1)·δj,且
δ(j)=δ(j-1)·1.0001;
其中,emin(j)表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值,emin(j-1)表示从待识别的声音数据的前一声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值。
可选地,所述方法还包括:当确定当前声音帧中包括语音信息时,对当前声音帧进行语音识别。
本发明实施例还提供了一种语音识别装置,所述装置包括:
获取单元,适于将获取的待识别的声音数据划分为多个重叠的声音帧;
频域转换单元,适于对每个声音帧进行快速傅立叶变换运算,得到对应的频谱;
子带划分单元,适于对所述多个重叠的声音帧的频谱进行遍历,将遍历到的当前声音帧的频谱划分为无重叠的多个子带;
计算单元,适于根据当前声音帧的多个子带的频谱能量,计算得到当前声音帧的能量均方根;
判断单元,适于判断当前声音帧的能量均方根是否大于预设的阈值;
语音识别单元,适于当确定当前声音帧的能量均方根大于预设的阈值时,确定当前声音帧中包括语音信息。
可选地,所述子带划分单元适于按照预设的子带宽度将遍历到的当前声音帧的频谱划分成为无重叠的多个子带。
可选地,所述计算单元适于采用如下的公式分别计算得到当前声音帧的能量均方根:
可选地,所述装置还包括:阈值计算单元,适于采用如下的公式计算得 到所述预设的阈值:
threshold=k1·emin+k2·emax,其中,threshold表示所述预设的阈值,k1和k2为预设的系数,emin表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值,emax表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值。
可选地,预设的系数k1和k2满足如下的公式:
k1=1-λ;
k2=λ,其中,λ为预设的比例因子。
可选地,所述预设的比例因子λ的取值范围为[0.950,0.999]。
可选地,所述预设的比例因子满足如下的公式:
可选地,所述从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值满足如下的公式:
emin(j)=emin(j-1)·δj,且
δ(j)=δ(j-1)·1.0001;
其中,emin(j)表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值,emin(j-1)表示从待识别的声音数据的前一声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值。
可选地,所述语音识别单元还适于当确定当前声音帧中包括语音信息时,对当前声音帧进行语音识别。
与现有技术相比,本发明的技术方案具有以下的优点:
上述的方案,通过将当前声音帧的能量均方根与对应的阈值进行比较,来确定当前声音帧中是否包括语音信息,由于声音帧的能量均方根的计算较为简单,因此,可以节省语音识别的计算资源和时间,并可以提高语音识别的准确率。
进一步地,与各个声音帧的能量均方根进行比较的阈值,为根据从声音 帧所属的声音数据中提取的部分声音数据对应的声音帧的能量均方根的最大值和最小值计算得到,由于声音帧的能量均方根的最大值和最小值分别与语音和噪声功率相关,可以对声音帧的语音和噪音进行准确的识别,因此,可以进一步提高语音识别的准确性。
进一步地,在不同的声音数据进行语音识别时,所采用的能量均方根的最小值采用递增的方式得到,可以避免低能量异常的发生,因此,可以进一步提高语音识别的准确性。
附图说明
图1是本发明实施例中的一种语音识别方法的流程图;
图2是本发明实施例中的另一种语音识别方法的流程图;
图3是本发明实施例中的语音识别装置的结构示意图。
具体实施方式
为解决现有技术中存在的上述问题,本发明实施例采用的技术方案通过将当前声音帧的能量均方根与对应的阈值进行比较,来确定当前声音帧中是否包括语音信息,可以节省语音识别的计算资源和时间,并可以提高语音识别的准确率。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1示出了本发明实施例中的一种语音识别方法的流程图。如图1所示的语音识别方法,可以包括如下步骤:
步骤s101:将获取的待识别的声音数据划分为多个重叠的声音帧,并对每个声音帧进行快速傅立叶变换运算,得到对应的频谱。
在具体实施中,待识别的声音数据划分得到的多个重叠的声音帧中,相邻两个声音帧的重叠范围可以根据实际的需要进行设置。
步骤s102:对所述多个声音帧的频谱进行遍历,将遍历到的当前声音帧的频谱划分为无重叠的多个子带。
在具体实施中,各个声音帧的频谱划分得到的无重叠的多个子带的数目可以根据实际的需要进行设置,如12或13,本发明在此不做限制。
步骤s103:根据当前声音帧的多个子带的频谱能量,计算得到当前声音帧的能量均方根。
在具体实施中,当前声音帧的能量均方根可以对当前声音帧的能量水平进行衡量。
步骤s104:当确定当前声音帧的能量均方根大于预设的阈值时,确定当前声音帧中包括语音信息。
在具体实施中,预设的阈值可以根据实际的需要进行设置,本发明在此不做限制。
下面将结合图2对本发明实施例中的语音识别方法做进一步详细的介绍。
图2示出了本发明实施例中的另一种语音识别方法的流程图。如图2所示的语音识别方法,可以包括:
步骤s201:将获取的声音数据进行重叠分帧,得到对应的多个声音帧。
在具体实施中,首先可以对所采集的声音信号进行模数转换,得到对应的声音数据。接着,可以将对应的声音数据进行重叠分帧,得到多个声音帧。对采集的声音数据进行分帧,实质是对声音数据进行短时分析。短时分析是把声音信号分成具有固定周期的时间短段,每个时间短段是相对固定的持续声音片段。其中,相邻的两个声音帧之间部分重叠,重叠范围可以根据实际情况进行选择。
步骤s202:对所得到的多个声音帧进行加窗处理。
在具体实施中,可以选择汉明窗、汉宁窗、矩形窗等语音信号处理常用的窗函数,帧长选择为10~40ms,典型值为20ms。其中,对语音信号进行分帧处理破坏了声音信号的自然度,通过使用声音帧进行加窗和回移处理等,可以解决这个问题。
步骤s203:将经过加窗处理后的声音帧的声音信号进行快速傅立叶变换运算,得到各个声音帧对应的频谱。
在具体实施中,声音数据理论上来说是随时间变化的,是一个非稳态的过程,不可以直接进行频域的转换。但是,由于对声音数据进行分帧处理(短时分析),每帧的声音数据可以认为是相对稳定的,因而可以对其应用频域转换。
在具体实施中,可以采用短时傅立叶变换(short-timefouriertransform/short-termfouriertransform,stft)对每帧的声音数据进行频域转换,以得到各个声音帧对应的频谱信息。其中,所得到的频谱中包括对应的声音信号的频率和能量的关系。
步骤s204:对划分得到的多个声音帧的频谱进行遍历,将遍历到的当前声音帧的频谱划分为多个无重叠的子带。
在具体实施中,可以按照预设的宽度将各个声音帧划分成为重叠的多个子带。其中,当最后一个子带的宽度小于预设的宽度时,可以将最后一个子带划归为倒数第二个子带,与倒数第二个预设宽度的子带一起作为最后一个子带。
步骤s205:根据各个子带的频谱能量,计算得到当前声音帧的能量均方根。
在具体实施中,当对遍历到的声音帧划分为多个无重叠的子带之后,可以基于当前声音中的各个子带的频谱能量,计算得到当前声音帧的能量均方根(rootmeansquareenergy,rmse),即:
ej表示第j个声音帧(当前声音帧)的能量均方根,xi表示第j个声音帧中第i个子带的频谱能量,n为各个声音帧划分得到的子带的数目。
本申请的发明人通过研究发现,语音信号的谱估计呈现出独特的波峰和波谷。其中,波峰与语音活动关联,而波谷可以用于得到噪音的谱估计。因此,采用各个声音帧的能量均方根进行语音识别较为适宜。
步骤s206:判断当前声音帧的能量均方根是否大于预设的阈值;当判断结果为是时,可以执行步骤s207,反之,则对当前声音帧相邻的下一声音帧 从步骤s204开始执行。
在具体实施中,在当前声音帧的能量均方根大于预设的阈值时,表明当前声音帧中包括语音信息,反之,则表明当前声音帧中不包括语音信息。
在本发明一实施例中,当确定当前声音帧的能量均方根小于预设的阈值时,并不是立即停止对当前所采集的声音数据的语音识别,而是在确定连续多个(如5个)声音帧的能量均方根均小于预设的阈值时,可以确定用户停止了与移动终端的交互,此时,可以停止对当前所采集的声音数据进行语音识别,以节约资源。
在具体实施中,在获取到当前待识别的声音数据之后,可以将当前待识别的声音数据的部分数据进行缓存,并计算缓存的部分声音数据对应的能量均方根的最大值和最小值进行存储。例如,当所采集的声音数据为3s,可以将前2s的声音数据进行缓存,并对前两秒的声音数据进行分帧、加窗、频域转换、子带划分、能量均方根的计算等处理,最终得到前2s的声音数据对应的能量均方根的最大值emax和最小值emin,并采用如下的公式计算得到对应的阈值:
threshold=k1·emin+k2·emax(2)
其中,threshold表示所述预设的阈值,k1和k2为预设的系数。
这里需要指出的是,预设的系数k1和k2可以根据实际的需要进行设置,本发明在此不做限制。
在本发明一实施例中,为了防止低能量异常情形的发生,在对所采集的不同的声音数据片段,在采用公式(2)计算得到对应的阈值时所采用的能量均方根的最小值emin采用递增的方式得到,即:
emin(j)=emin(j-1)·δj(3)
δ(j)=δ(j-1)·1.0001(4)
其中,emin(j)表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值,emin(j-1)表示从待识别的声音数据的前一声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的 最小值。
在本发明另一实施例中,可以对上述的公式(2)中的预设的系数k1和k2采用同一个比例因子λ表示,即可以将公式(2)进行变换得到:
threshold=(1-λ)·emin+λ·emax(5)
其中,本申请的发明人发现,当λ的取值范围为[0.950,0.999]时,本发明实施例中的语音识别方法具有较为可靠的语音识别性能。但是,λ的取值与噪音类型相关,需要根据先验信息进行确定。
因此,为了使得比例因子λ可以独立于背景噪声,在本发明另一实施例中,可以将所述预设的比例因子设置为:
那么,相应地,上述的公式(2)可以变换为:
通过上述的公式(7)可以清楚地看出,阈值threshold不仅与当前待识别的声音数据对应的能量均方根的最大值emax和最小值emin相关,还与对应的能量均方根的最小值emin与最大值emax的比率相关。
步骤s207:对当前声音帧进行识别。
在具体实施中,当确定当前声音帧中包括语音信息时,可以对当前帧进行语音识别,以识别出具体的语音内容。
在具体实施中,执行完步骤s207之后,可以接着对当前声音帧的下一声音帧从步骤s204开始执行,直至遍历完成所获取的当前声音数据中的每个声音帧。
在具体实施中,当将上述的语音识别方法应用于移动终端中的总听系统中时,在识别出所获取的声音数据中完整的语音信息时,移动终端可以根据所识别出的语音内容执行相应的操作。例如,当识别出用户输入的语音为“拨打xx的手机”时,移动终端便可以对用户输入的“拨打xx的手机”的语音信息进行识别,并在正确识别后,从自身中获取xx的手机号码的信息,并自动拨 打。
下面将对本发明实施例中的语音识别方法对应的装置做进一步详细的介绍。
图3示出了本发明实施例还提供了一种语音识别装置的结构示意图。如图3所示的语音识别装置300,可以包括获取单元301、频域转换单元302、子带划分单元303、计算单元304、判断单元305和语音识别单元306,其中:
所述获取单元301,适于将获取的待识别的声音数据划分为多个重叠的声音帧。
所述频域转换单元302,适于对每个声音帧进行快速傅立叶变换运算,得到对应的频谱。
所述子带划分单元303,适于对所述多个重叠的声音帧的频谱进行遍历,将遍历到的当前声音帧的频谱划分为无重叠的多个子带。
在具体实施中,所述子带划分单元303适于按照预设的子带宽度将遍历到的当前声音帧的频谱划分成为无重叠的多个子带。
所述计算单元304,适于根据当前声音帧的多个子带的频谱能量,计算得到当前声音帧的能量均方根。
在具体实施中,所述计算单元304适于采用如下的公式分别计算得到当前声音帧的能量均方根:
所述判断单元305,适于判断当前声音帧的能量均方根是否大于预设的阈值。
所述语音识别单元306,适于当确定当前声音帧的能量均方根大于预设的阈值时,确定当前声音帧中包括语音信息。
在具体实施中,所述语音识别单元306还适于当确定当前声音帧中包括 语音信息时,对当前声音帧进行语音识别。
在具体实施中,如图3所示的语音识别装置还可以包括:阈值计算单元307,其中:
所述阈值计算单元307,适于采用如下的公式计算得到所述预设的阈值:
threshold=k1·emin+k2·emax,其中,threshold表示所述预设的阈值,k1和k2为预设的系数,emin表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值,emax表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值。
在本发明一实施例中,预设的系数k1和k2满足如下的公式:
k1=1-λ;
k2=λ,其中,λ为预设的比例因子。
在具体实施中,所述预设的比例因子λ的取值范围为[0.950,0.999]。
在本发明一实施例中,所述预设的比例因子满足如下的公式:
在本发明一实施例中,所述从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值满足如下的公式:
emin(j)=emin(j-1)·δj,且
δ(j)=δ(j-1)·1.0001;
其中,emin(j)表示从待识别的声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值,emin(j-1)表示从待识别的声音数据的前一声音数据中所提取的部分声音数据对应的多个声音帧中的能量均方根的最小值。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。
以上对本发明实施例的方法及系统做了详细的介绍,本发明并不限于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。