语音识别方法、装置、计算机设备及存储介质与流程

文档序号:15836916发布日期:2018-11-07 07:58阅读:174来源:国知局
语音识别方法、装置、计算机设备及存储介质与流程

本发明涉及语音处理技术领域,尤其涉及一种语音识别方法、装置、计算机设备及存储介质。

背景技术

近年来语音识别技术发展迅速,其应用领域不断扩大,各种各样的语音识别系统产品出现在市场上,通过使用语音识别转换工具将语音识别,转化为文字输出后,广泛应用于在模型训练、媒体检索、字幕生成、语音鉴别等方面。

但是,实际的用户类型却是多种多样的,许多人的发音与标准发音相差甚远。所以目前在使用语音识别转换工具将语音识别转换成文字时,由于一些用户的发音问题或者文字的多音字问题等原因,语音识别转换工具不能准确地识别这部分语音数据,并且没有具备一定的纠错能力,导致通过语音识别转换工具转换生成的文字与正确的文本内容存在不一致的情况,实际应用效果差。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种可以提高语音识别准确率的语音识别方法、装置、计算机设备及存储介质。

一种语音识别方法,包括:

获取用户根据原文文本输入的语音数据,并使用静音检测算法将所述语音数据切分为语音段;

对每个所述语音段进行识别转换处理,得到转换语句和每个所述转换语句的转换序号,并为每个所述转换语句创建对应的变量存储空间;

对所述原文文本进行预处理,得到标准语句和每个所述标准语句的标准序号;

根据所述标准语句确定切分长度,并按照所述切分长度对每个所述转换语句进行字符串切分,得到待匹配字符串;

针对每个所述待匹配字符串,使用该待匹配字符串与所述标准语句进行匹配,并将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中;

对所述变量存储空间中的标准序号进行分析处理,得到转换错误的语音段和该语音段对应的标准语句;

将所述转换错误的语音段及其对应的标准语句存储到语音库作为数据集,并基于所述数据集对语音识别模型进行训练,以通过训练后的语音识别模型对检测到多音字或同类型口音的语音数据进行纠错。

一种语音识别装置,包括:

语音切分模块,用于获取用户根据原文文本输入的语音数据,并使用静音检测算法将所述语音数据切分为语音段;

语音识别模块,用于对每个所述语音段进行识别转换处理,得到转换语句和每个所述转换语句的转换序号,并为每个所述转换语句创建对应的变量存储空间;

文本处理模块,用于对所述原文文本进行预处理,得到标准语句和每个所述标准语句的标准序号;

语句分割模块,用于根据所述标准语句确定切分长度,并按照所述切分长度对每个所述转换语句进行字符串切分,得到待匹配字符串;

文本匹配模块,用于针对每个所述待匹配字符串,使用该待匹配字符串与所述标准语句进行匹配,并将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中;

分析处理模块,用于对所述变量存储空间中的标准序号进行分析处理,得到转换错误的语音段和该语音段对应的标准语句;

纠错处理模块,用于将所述转换错误的语音段及其对应的标准语句存储到语音库作为数据集,并基于所述数据集对语音识别模型进行训练,以通过训练后的语音识别模型对检测到多音字或同类型口音的语音数据进行纠错。

一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述语音识别方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述语音识别方法的步骤。

上述语音识别方法、装置、计算机设备及存储介质,通过使用静音检测算法将语音数据切分为语音段,在对每个语音段进行识别转换处理,以及对原文文本进行预处理之后,将转换语句切分得到待匹配字符串用于与标准语句进行匹配,能够识别出语音转换的文本中转换错误、缺失或者冗余的词语,并将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中,最后对变量存储空间中的标准序号进行分析处理,得到转换错误的语音段及其对应的标准语句存储到语音库,将该语音库用于进行机器模型学习,加强语音识别模型的自适应性,可以适应更多的环境和口音,具备调整纠错的能力,从而提高语音识别模型对语音识别的准确率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例中语音识别方法的一应用环境示意图;

图2是本发明一实施例中语音识别方法的一流程图;

图3是图2中步骤s2的一具体流程图;

图4是图2中步骤s3的一具体流程图;

图5是图2中步骤s5的一具体流程图;

图6是图2中步骤s6的一具体流程图;

图7是本发明一实施例中语音识别装置的一原理框图;

图8是本发明一实施例中计算机设备的一示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请提供的语音识别方法,可应用在如图1的应用环境中,该应用环境包括服务端和客户端,其中,服务端和客户端之间通过网络进行连接,用户通过客户端进行语音输入,服务端对用户输入的语音进行识别,并根据识别结果对语音识别模型进行训练。客户端具体可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务端具体可以用独立的服务器或者多个服务器组成的服务器集群实现。本发明实施例提供的语音识别方法应用于服务端。

在一实施例中,图2示出本实施例中语音识别方法的一流程图,该方法应用在图1中的服务端,用于训练语音识别模型。如图2所示,该语音识别方法包括步骤s1至步骤s7,详述如下:

s1:获取用户根据原文文本输入的语音数据,并使用静音检测算法将该语音数据切分为语音段。

在本实施例中,原文文本是为用户提供的文本模板,用户在客户端根据文本模板进行朗读,客户端将录下的语音数据上传服务端,服务端以获取到的语音数据作为训练样本进行语音识别模型的训练。

需要说明的是,服务端若转写较长的语音数据会对系统资源产生较大的消耗,并且由于在对较长的语音数据进行语音识别的过程中,服务端自动对齐原因的影响,会降低语音识别的准确率。所以在服务端中使用静音检测算法对语音数据进行切分,通过将语音数据进行分帧处理,计算出每帧语音帧的帧能量,根据帧能量确定音频数据的静音段,从而能够对语音数据中的静音和停顿进行准确识别,并将语音数据按照语句进行切分,得到语音长度小于预设时间长度的语音段进行训练,其中,预设时间长度具体可以是10秒,但并不限于此,具体可以根据实际应用的需要进行设置,此处不做限制。

s2:对每个语音段进行识别转换处理,得到转换语句和每个转换语句的转换序号,并为每个转换语句创建对应的变量存储空间。

在本实施例中,对每个语音段进行语音识别,转换为文本的形式,并删除文本中的标点符号,同时移除空文本,得到转换语句,该转换语句具体可以以数组的形式或者矩阵的形式存储于数据库中,根据语音段在语音数据中的时间顺序为每个转换语句分配转换序号,并为每个转换语句创建对应的变量存储空间。

优选地,转换语句具体可以以数组的形式存储于数据库中,以每个语音段的转换语句为一个元素,将转换语句存储于数组中,定义字符数组str作为语音数据的标识信息,数组str包括str[0]至str[x]的x+1个元素,str[0]为第一个转换语句,str[1]为第二个转换语句…str[x]为第x+1个转换语句,同时,str0、str1…strx为转换语句的转换序号,flag0、flag1…flagx为每个转换语句对应的变量存储空间。

s3:对原文文本进行预处理,得到标准语句和每个标准语句的标准序号。

在本实施例中,按照标点符号对原文文本进行语句切分,并将原文文本中的标点符号删除,再对原文文本进行遍历,若原文文本中包含非中文字符串,则将非中文字符串转换为中文,如“1”转换为“一”,“kg”转换为“千克”等,经过对原文文本的切分转换,得到标准语句,该标准语句具体可以以数组的形式或者矩阵的形式存储于数据库中,并为每个标准语句分配标准序号。

优选地,标准语句具体可以以数组的形式存储于数据库中,以每个标准语句为一个元素,将标准语句存储于数组中,定义字符数组arr作为原文文本的标识信息,数组arr包括arr[0]至arr[y]的y+1个元素,arr[0]为第一个标准语句,arr[1]为第二个标准语句…arr[y]为第y+1个标准语句,同时,arr0、arr1…arry为标准语句的标准序号。

s4:根据标准语句确定切分长度,并按照该切分长度对每个转换语句进行字符串切分,得到待匹配字符串。

在本实施例中,在所有的标准语句中,获取其中标准语句的字符串长度的最小值,将该最小值确定为切分长度,并按照该切分长度对每个转换语句进行字符串切分,得到待匹配字符串。

例如,数组str中的转换语句str[0]=“我是一个中国人”,str[1]=“我为我自豪”,若切分长度为4个字符,则在str[0]中截取“我是一个”和“中国人”作为待匹配字符串,在str[1]中截取“我为我自”和“豪”作为待匹配字符串,直至将数组str中所有的转换语句完成字符串的切分。

s5:针对每个待匹配字符串,使用该待匹配字符串与标准语句进行匹配,并将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中。

具体地,针对每个待匹配字符串,使用待匹配字符串与标准语句进行匹配,若在标准语句中匹配到与待匹配字符串一致的内容,则确认匹配成功,并将匹配成功的标准语句的标准序号arry,存储到该待匹配字符串所在的转换语句对应的变量存储空间flagx中,其中,变量存储空间可以存储多个标准序号。

s6:对变量存储空间中的标准序号进行分析处理,得到转换错误的语音段和该语音段对应的标准语句。

在本实施例中,对每个变量存储空间中的标准序号进行遍历,若存在相同的标准序号,则只保留其中任意一个标准序号,删除掉其余的标准序号。

具体地,在对变量存储空间中的标准序号进行去重处理后,获取匹配失败的转换语句,将该匹配失败的转换语句对应的语音段标记为转换错误的语音段,并确定转换错误的语音段对应的标准语句。

需要说明的是,当变量存储空间为空、变量存储空间中的标准序号之间不连续或者存在重复时,表示该变量存储空间对应的转换语句匹配失败,该变量存储空间对应的转换语句为语音识别转换错误的文本内容,该变量存储空间存储的标准序号对应的标准语句为正确的文本内容。

s7:将转换错误的语音段及其对应的标准语句存储到语音库作为数据集,并基于该数据集对语音识别模型进行训练,以通过训练后的语音识别模型对检测到多音字或同类型口音的语音数据进行纠错。

具体地,将步骤s6获取到转换错误的语音段及其对应的标准语句,存储到语音库中作为数据集,该语音库为服务端的语音语料库,服务端能够通过利用语音库中的数据集对语音识别模型进行训练,加强语音识别模型的自适应性,以使通过训练后的语音识别模型能够适应更多的环境和口音,在检测到多音字或遇到同类型口音的语音数据时,具备自我调整纠错的能力,提高语音识别模型对语音识别的准确率。

在本实施例中,通过使用静音检测算法将语音数据切分为语音段,在对每个语音段进行识别转换处理,以及对原文文本进行预处理之后,将转换语句切分得到待匹配字符串用于与标准语句进行匹配,并将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中,最后对变量存储空间中的标准序号进行分析处理,得到转换错误的语音段及其对应的标准语句存储到语音库。通过使用经语音识别转换后的文本与标准文本进行匹配,能够识别出语音转换的文本中转换错误、缺失或者冗余的词语,并存储到语音库中用于进行机器模型学习,加强语音识别模型的自适应性,可以适应更多的环境和口音,具备调整纠错的能力,从而提高语音识别模型对语音识别的准确率。

在一实施例中,本实施例提供对步骤s2中所提及的使用静音检测算法将语音数据切分为语音段的具体实现方法进行详细说明。

请参阅图3,图3示出了步骤s2的一具体流程图,详述如下:

s21:对语音数据进行预处理,得到音频数据,其中,音频数据包含n个采样点的采样值,n为正整数。

在本实施例中,采用脉冲编码调制技术(pulsecodemodulation,pcm)对获取到的语音数据进行编码,对语音数据的模拟信号每隔预设的时间对一个采样点进行采样,使其离散化,该预设的时间根据pcm编码的采样频率进行确定,具体的采样频率可以根据历史经验设定,如采样频率可以设置为每秒8000hz,表示每秒采集8000个采样信号,也可以根据实际应用进行设置,此处不做限制。

进一步地,将n个采样点的采样信号量化,以二进制码组的方式输出量化后的数字信号作为采样点的采样值,得到音频数据,其中,采样点为n个,n为语音数据的时间长度与采样频率的乘积。

s22:按照预设的帧长和预设的步长对音频数据进行分帧处理,得到k帧语音帧,其中,k为正整数。

在本实施例中,按照预设的帧长和步长,对音频数据进行帧间不重叠的分帧,帧长为获取的语音帧的长度,步长为获取语音帧的时间间隔,当帧长等于步长时,能够使得分帧之后得到的各个语音帧之间不会出现重叠现象,得到k帧语音帧,其中,k为语音数据的时间长度除以语音帧的时间长度的商。

具体地,帧长设置的值可以在0.01s-0.03s的范围内,这段短时间内的语音信号相对平稳,如帧长设置为0.01s,也可以根据实际应用的需要进行设置,此处不作限制。

例如,若帧长设置为0.01s,步长设置为0.01s,采样频率为8000hz,每秒采集8000个采样信号,则将音频数据按照80个采样值确定为一帧语音帧进行分帧处理,若最后一帧语音帧的采样值不足80个,则对最后一帧语音帧进行添加采样值为0的信息数据,使得最后一个语音帧包括80个采样值。

s23:根据采样值计算每帧语音帧的帧能量。

具体地,帧能量是语音信号的短时能量,反映了语音帧的语音信息的数据量,根据公式(1)进行计算每帧语音帧的帧能量。

ene[i]=a×sum(xi2)公式(1)

其中,ene[i]为第i帧语音帧的帧能量,a为预设的调节因子,sum(xi2)为第i帧语音帧中包含的采样点的采样值的平方和。

需要说明的是,a为预设的调节因子,该调节因子根据语音数据的特性进行预设,避免由于语音数据中语句的音量过小或者背景噪声过大,使得语句与静音的区分度不高,而影响语音切分的准确率。

s24:针对每帧语音帧,若该语音帧的帧能量小于预设的帧能量阈值,则标记该语音帧为静音帧。

在本实施例中,帧能量阈值为预先设定的参数,若计算得到的帧能量小于帧能量阈值,则将对应的语音帧标记为静音帧,该帧能量阈值具体可以根据历史经验进行设置,如帧能量阈值设置为0.5,也可以根据计算得到各个语音帧的帧能量进行具体分析设置,此处不做限制。

s25:若检测到连续的静音帧的数量大于预设的静音帧数量阈值,则标记该连续的静音帧为静音段。

在本实施例中,静音帧数量阈值为预先设定的参数,若检测到存在连续的静音帧的数量大于预设的静音帧数量阈值,则标记该连续的静音帧为静音段,该帧能量阈值具体可以根据历史经验进行设置,如静音帧数量阈值设置为5,也可以根据计算得到各个语音帧的帧能量进行具体分析设置,此处不做限制。

s26:根据静音段确定语音数据的切分帧,并使用切分帧对语音数据进行切分,得到语音段。

具体地,为了确保不会切分到语句,并保证语句前后都有一定的时长,将静音段的连续帧号的中间帧作为分隔点,若连续帧号的个数为偶数,则取连续帧号中间其中较小的帧号标记为切分帧,也可以取连续帧号中间其中较小的帧号标记为切分帧,此处不做限制。

例如,若帧能量阈值为0.5,静音帧数量阈值为5,则筛选得到帧能量ene1,ene2,ene8,ene13,ene14,ene15,ene16,ene17,ene18均为小于0.5,将筛选得到小于帧能量阈值的语音帧的帧号标记为静音帧,再进行筛选出连续帧号大于5帧的帧号,将ene13,ene14,ene15,ene16,ene17,ene18对应的帧号标记为静音段,获取连续帧号中间其中较小的帧号,并将第15帧语音帧标记为切分帧。

进一步地,根据标记的切分帧,将音频数据按照切分帧进行切分,将各切分点之间的帧合并为一个独立语音段。

在本实施例中,通过对语音数据进行预处理,得到音频数据,将音频数据分成多个语音帧,根据音频数据的采样值计算每帧语音帧的帧能量,若语音帧的帧能量小于预设的帧能量阈值,则标记该语音帧为静音帧,进一步地,若检测到连续的静音帧数量大于预设的静音帧数量阈值,则标记该连续的静音帧为静音段,并确定切分帧的帧号,最后按照切分帧对语音数据进行切分,得到语音段。通过将语音数据进行分帧处理,计算出每帧语音帧的帧能量,根据帧能量确定音频数据的静音段,从而能够对语音数据中的静音和停顿进行准确识别,实现对语句的正确切分,避免破坏语句的完整性,实现了对语音数据的正确切分。

在一实施例中,本实施例提供对步骤s3中所提及的对原文文本进行预处理,得到标准语句和每个标准语句的标准序号的具体实现方法进行详细说明。

请参阅图4,图4示出了步骤s3的一具体流程图,详述如下:

s31:根据预设的标点符号,对原文文本按照语句进行切分,得到切分语句。

在本实施例中,预设的标点符号可以为顿号、逗号、分号、句号、问号或者感叹号,但并不限于此,具体可以根据实际应用的需要进行设置,此处不做限制。

具体地,对原文文本进行遍历,若检测到预设的标点符号,则从该标点符号处进行切分,将原文文本按照语句进行切分,分割成单句,并将单句中所有的标点符号删除,得到切分语句。

例如,原文文本为“小王只会把心思花在钻法律的空子上,像这样的“聪明人”还是少一点好。”,根据预设的标点符号进行切分后,得到“小王只会把心思花在钻法律的空子上,”和“像这样的“聪明人”还是少一点好。”两个单句,再将单句中所有的标点符号删除,得到切分语句“小王只会把心思花在钻法律的空子上”和“像这样的聪明人还是少一点好”。

s32:对每个切分语句进行遍历,若该切分语句包含非中文字符串,则将非中文字符串转换为中文,得到标准语句,并为每个标准语句分配标准序号。

在本实施例中,字符串包括中文字符串和非中文字符串,根据步骤s31得到切分语句,对所有的切分语句进行遍历查找,若检测到该切分语句包含非中文字符串,则获取切分语句中的非中文字符串的内容,并将该非中文字符串转换为中文。

具体地,若非中文字符串的内容属于日期内容,则根据预设的需求对年份、月份和日期转换,该预设的需求是根据语音识别模型对日期的识别转换形式而设置,此处不作限制。

例如,若服务端在对处于1000年至2500年的年份、月份和日期进行识别转换后,转换得到的日期以数字形式输出,则预设的需求具体可以是,年份小于1000年或大于2500年的年份需要将年份做中文转换处理,而月份和日期不做中文转换处理。

进一步地,若非中文字符串的内容不属于日期内容且为数字内容,则使用预设的中文数字数组{‘零’,‘一’,‘二’,‘三’,‘四’,‘五’,‘六’,‘七’,‘八’,‘九’},以及预设的数字权位数组{‘’,‘十’,‘百’,‘千’,‘万’,‘十万’,‘百万’,‘千万’,‘亿’},对数字内容进行转换,其中,数字单位数组中个位数的单位为空。

具体地,先判断该数字内容的类型,若该数字内容为整数,则从左到右取出整数的每个阿拉伯数字,使用预设的中文数字数组将阿拉伯数字替换为中文,并使用预设的数字权位数组为转换后的中文匹配权位,如“213”转换为“二百一十三”。

若该数字内容为小数,则将该小数分为整数部分与小数部分,从左到右取出整数部分的每个阿拉伯数字,使用预设的中文数字数组将阿拉伯数字替换为中文,并使用预设的数字权位数组为转换后的中文匹配权位。再从左到右取出小数部分的每个阿拉伯数字,使用预设的中文数字数组将小数部分替换为中文。最后将小数点转换为“点”,添加在整数部分与小数部分之间,将整数部分与小数部分转换后的中文连接,如“20.3”转换为“二十点三”。

同时,对数字内容转换为中文后做去零处理,具体地,若整数或者小数的整数部分中,最后的个位数是“0”,则在将数字内容转换为中文后,只保留到最右边的非“0”数字转换后的中文,将右边的数字“0”转换后的中文删除,如“1000”转换后会得到“一千零百零十零”,则将“零百零十零”删除,得到“一千”。

若整数或者小数的整数部分中,两个非“0”数字之间存在数字“0”,则在将数字内容转换为中文后,将该数字“0”转换后的中文删除,并用“零”替换,如“1001”转换后会得到“一千零一”。

进一步地,若非中文字符串的内容包含物理单位,则直接将该物理单位转换为中文,如“kg”转换为“千克”、“cm”转换为“厘米”等。

进一步地,若非中文字符串的内容包含百分号,则将“%”删除,并在数字部分转换成的中文之前增加“百分之”,如“33%”转换后会得到“百分之三十三”。

为了更好的理解本步骤,下面通过一个具体的例子对将非中文字符串转换为中文,得到标准语句进行说明。

例如,文本模板的原文文本为:

2017年5月12日第55位读者阅读第47297章节完成33%预计200天完成阅读。

则转换后得到的标准文本为:

2017年5月12日第五十五位读者阅读第四万七千二百九十七章节完成百分之三十三预计二百天完成阅读。

在得到标准语句后,为每个标准语句分配标准序号。

在本实施例中,通过根据预设的标点符号,对原文文本按照语句进行切分,得到切分语句,将原文文本切分成语句的形式,能够提高与语音转换的文本的匹配效率。在得到切分语句后,对每个切分语句进行遍历,将非中文字符串转换为中文,得到标准语句用于与待匹配字符串进行匹配,能够提高标准文本与语音转换的文本的匹配率,避免因文本内容的展现形式不一样,而降低语音识别准确率。

在一实施例中,本实施例提供对步骤s5中所提及的针对每个待匹配字符串,使用该待匹配字符串与标准语句进行匹配,并将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中的具体实现方法进行详细说明。

请参阅图5,图5示出了步骤s5的一具体流程图,详述如下:

s51:将第一句标准语句设置为匹配起点,并根据匹配起点确定匹配范围。

在本实施例中,将第一句标准语句设置为匹配起点,并根据匹配起点确定匹配范围,用于与第一个待匹配字符串进行匹配。

其中,匹配范围为根据匹配范围的值,按照标准序号的顺序从匹配起点开始获取的标准语句,该匹配范围具体可以根据标准语句的字符串长度,进行预设匹配范围的值,如标准语句的字符串越长,则匹配范围的值就越小,也可以根据标准语句的数量来生成一个匹配范围的值,如匹配范围的值具体可以设置为5。

s52:按照转换语句的转换序号的顺序,将每个待匹配字符串与匹配范围内的标准语句进行匹配,若在匹配范围内的标准语句中匹配到与该待匹配字符串一致的内容,则确认匹配成功,否则确认匹配失败。

具体地,匹配的方式为按照转换语句的转换序号的顺序,依次获取由转换语句切分成的待匹配字符串,并按照匹配范围内标准序号的顺序,使用该待匹配字符串与匹配范围内的标准语句进行匹配,若在标准语句中匹配到与待匹配字符串一致的内容,则确认匹配成功,否则确认匹配失败。

例如,由转换语句str[0]中截取了待匹配字符串“我是一个”,使用其与标准语句arr[0]=“我是一个中国人”进行匹配,能够在标准语句中匹配到与该待匹配字符串一致的内容,则确认为匹配成功。

s53:若匹配成功,则将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中,并以该匹配成功的标准语句作为下一个待匹配字符串的匹配起点。

具体地,若匹配起点的标准语句中不包含当前的待匹配字符串,则在匹配范围内继续往后获取标准语句进行匹配,若待匹配字符串与匹配范围内的标准语句匹配成功,则将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中,并以该匹配成功的标准语句作为下一个待匹配字符串的匹配起点。

s54:若匹配失败,则使用下一个待匹配字符串与匹配范围内的标准语句进行匹配,直至全部待匹配字符串匹配完为止。

进一步地,若在匹配范围内匹配不到与待匹配字符串一致的内容,则确认为匹配失败,匹配范围不作改变,并使用下一个待匹配字符串与该匹配范围内的标准语句进行匹配。按照转换序号的顺序获取待匹配字符串用于进行匹配,直至全部待匹配字符串匹配完为止,得到存储到各个变量存储空间中的标准序号。

为了更好的理解待匹配字符串与标准语句的匹配方式,下面以一个具体的例子对匹配方式进行说明。

假设当前用于待匹配字符串为“我为我自”,是由str[1]中切分得到,匹配起点为arr[0],匹配范围的值为5。

若arr[0]不包含待匹配字符串“我为我自”的内容,则使用下一个标准语句arr[1]进行匹配,若在arr[1]中匹配到与待匹配字符串“我为我自”一致的内容,则将当前匹配成功的标准语句标准序号arr1,存储到该待匹配字符串所在的转换语句str[1]对应的变量存储空间flag1中,并以该匹配成功的标准语句arr[1]作为下一个待匹配字符串的匹配起点,同时,匹配范围为arr[1]、arr[2]、arr[3]、arr[4]和arr[5]。

若匹配范围内的标准语句arr[0]、arr[1]、arr[2]、arr[3]和arr[4]都不包含待匹配字符串“我为我自”的内容,则确认为匹配失败,匹配范围不作改变,并使用下一个待匹配字符串与该匹配范围内的标准语句进行匹配。

按照转换序号的顺序获取待匹配字符串,使用上述匹配方式进行匹配,直至全部待匹配字符串匹配完为止。

在本实施例中,通过将第一句标准语句设置为匹配起点,并根据匹配起点确定匹配范围,不需要在所有的标准语句中进行匹配,提高了资源利用率。若匹配成功,则将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中,并以该匹配成功的标准语句作为下一个待匹配字符串的匹配起点,不需再从第一句标准语句进行匹配,提高了匹配效率。若匹配失败,则使用下一个待匹配字符串与匹配范围内的标准语句进行匹配,直至全部待匹配字符串匹配完为止,得到存储到各个变量存储空间中的标准序号。通过按照转换序号和标准序号的顺序依次进行匹配,并且限定了匹配范围的匹配方式,提高了语音转换后的文本与原文文本的匹配率。

在一实施例中,本实施例提供对步骤s6中所提及的对变量存储空间中的标准序号进行分析处理,得到转换错误的语音段和该语音段对应的标准语句的具体实现方法进行详细说明。

请参阅图6,图6示出了步骤s6的一具体流程图,详述如下:

s61:对每个变量存储空间中的标准序号进行去重处理,若该变量存储空间中存在至少两个相同的标准序号,则保留其中任意一个标准序号,删除其余的标准序号。

在本实施例中,在全部待匹配字符串完成匹配,根据得到存储到各个变量存储空间中的标准序号,对每个变量存储空间中的标准序号进行去重处理,若检测到该变量存储空间中存在至少两个相同的标准序号,则保留其中任意一个标准序号,删除其余的标准序号,使得每个变量存储空间中存储的标准序号不同。

s62:若所有的变量存储空间中的标准序号之间不连续或者存在重复,则将不连续的标准序号所在的变量存储空间,或者重复的标准序号所在的变量存储空间作为待纠正空间。

具体地,若所有的变量存储空间中的标准序号之间不连续或者存在重复,则确认这些变量存储空间对应的转换语句与标准语句不匹配,服务端对语音数据的识别转换存在错误,将不连续的标准序号所在的变量存储空间,或者重复的标准序号所在的变量存储空间作为待纠正空间。

例如,若flag35中存储的标准序号有[arr35,arr37],则将flag35标记为待纠正空间;若flag35中存储的标准序号为[arr35],flag36中存储的标准序号为[arr37],则将flag35和flag36标记为待纠正空间;若flag35中存储的标准序号为[arr35],flag36中存储的标准序号为[arr35],则将flag35和flag36标记为待纠正空间。

s63:若变量存储空间为空,则将该变量存储空间及其相邻的两个变量存储空间作为待纠正空间。

具体地,若存在变量存储空间为空的情况,则确认这些变量存储空间对应的转换语句与标准语句不匹配,服务端对语音数据的识别转换存在错误,将该变量存储空间及其相邻的两个变量存储空间标记为待纠正空间。

例如,若flag3中没有存储任何标准序号,则表示flag3对应的转换语句str[3]与标准语句不匹配,将flag2、flag3和flag4标记为待纠正空间。

需要说明的是,步骤s62和步骤s63之间没有必然的先后执行顺序,其可以是并列执行的关系,此处不做限制。

s64:根据待纠正空间及其包含的标准序号,确定转换错误的语音段和该语音段对应的标准语句。

进一步地,在对变量存储空间中的标准序号进行分析处理后,得到待纠正空间,并根据待纠正空间及其包含的标准序号,在语音段和标准语句中确定转换错误的语音段和该语音段对应的标准语句。

例如,若flag35中存储的标准序号为[arr35],flag36中存储的标准序号为[arr37],则将flag35和flag36标记为待纠正空间,根据flag35和flag36对应的str[35]和str[36],获取转换语句为str[35]和str[36]对应的语音段,确定为转换错误的语音段,并根据flag35和flag36包含的标准序号[arr35]和[arr37],获取标准序号[arr35]和[arr37]对应的标准语句,作为转换错误的语音段的正确内容。

在本实施例中,通过对所有的变量存储空间中的标准序号进行分析处理,找出转换语句与标准语句不匹配的情况,并将存在不匹配的情况的变量存储空间标记待纠正空间,根据待纠正空间及其包含的标准序号,获取转换错误的语音段和该语音段对应的标准语句,从而能够识别出语音转换后的文本中转换错误、缺失、冗余的字或者词语,增强语音纠错的能力。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

在一实施例中,提供一种语音识别装置,该语音识别装置与上述实施例中语音识别方法一一对应。如图7所示,该语音识别装置包括:语音切分模块61、语音识别模块62、文本处理模块63、语句分割模块64、文本匹配模块65、分析处理模块66和纠错处理模块67。各功能模块详细说明如下:

语音切分模块61,用于获取用户根据原文文本输入的语音数据,并使用静音检测算法将该语音数据切分为语音段;

语音识别模块62,用于对每个语音段进行识别转换处理,得到转换语句和每个转换语句的转换序号,并为每个转换语句创建对应的变量存储空间;

文本处理模块63,用于对原文文本进行预处理,得到标准语句和每个标准语句的标准序号;

语句分割模块64,用于根据标准语句确定切分长度,并按照该切分长度对每个转换语句进行字符串切分,得到待匹配字符串;

文本匹配模块65,用于针对每个待匹配字符串,使用该待匹配字符串与标准语句进行匹配,并将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中;

分析处理模块66,用于对变量存储空间中的标准序号进行分析处理,得到转换错误的语音段和该语音段对应的标准语句;

纠错处理模块67,用于将转换错误的语音段及其对应的标准语句存储到语音库作为数据集,并基于所述数据集对语音识别模型进行训练,以通过训练后的语音识别模型对检测到多音字或同类型口音的语音数据进行纠错。

进一步地,语音识别模块62包括:

语音数据处理单元621,用于对语音数据进行预处理,得到音频数据,其中,音频数据包含n个采样点的采样值,n为正整数;

音频数据分帧单元622,用于按照预设的帧长和预设的步长对音频数据进行分帧处理,得到k帧语音帧,其中,k为正整数;

帧能量计算单元623,用于根据采样值计算每帧语音帧的帧能量;

静音帧标记单元624,用于针对每帧语音帧,若该语音帧的帧能量小于预设的帧能量阈值,则标记该语音帧为静音帧;

静音段标记单元625,用于若检测到连续的静音帧的数量大于预设的静音帧数量阈值,则标记该连续的静音帧为静音段;

语音段获取单元626,用于根据静音段确定语音数据的切分帧,并使用切分帧对语音数据进行切分,得到语音段。

进一步地,文本处理模块63包括:

文本切分单元631,用于根据预设的标点符号,对原文文本按照语句进行切分,得到切分语句;

文本转换单元632,用于对每个切分语句进行遍历,若该切分语句包含非中文字符串,则将非中文字符串转换为中文,得到标准语句,并为每个标准语句分标准序号。

进一步地,文本匹配模块65包括:

对象创建单元651,用于将第一句标准语句设置为匹配起点,并根据匹配起点确定匹配范围;

文本匹配单元652,用于按照转换语句的转换序号的顺序,将每个待匹配字符串与匹配范围内的标准语句进行匹配,若在匹配范围内的标准语句中匹配到与该待匹配字符串一致的内容,则确认匹配成功,否则确认匹配失败;

第一匹配单元653,用于若匹配成功,则将匹配成功的标准语句的标准序号,存储到该待匹配字符串所在的转换语句对应的变量存储空间中,并以该匹配成功的标准语句作为下一个待匹配字符串的匹配起点;

第二匹配单元654,用于若匹配失败,则使用下一个待匹配字符串与匹配范围内的标准语句进行匹配,直至全部待匹配字符串匹配完为止。

进一步地,分析处理模块66包括:

数据分析处理单元661,用于对每个变量存储空间中的标准序号进行去重处理,若该变量存储空间中存在至少两个相同的标准序号,则保留其中任意一个标准序号,删除其余的标准序号;

第一数据标识单元662,用于若所有的变量存储空间中的标准序号之间不连续或者存在重复,则将不连续的标准序号所在的变量存储空间,或者重复的标准序号所在的变量存储空间作为待纠正空间;

第二数据标识单元663,用于若变量存储空间为空,则将该变量存储空间及其相邻的两个变量存储空间作为待纠正空间;

目标数据获取单元664,用于根据待纠正空间及其包含的标准序号,确定转换错误的语音段和该语音段对应的标准语句。

关于语音识别装置的具体限定可以参见上文中对于语音识别方法的限定,在此不再赘述。上述语音识别装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种语音识别方法。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例语音识别方法中的步骤,例如图2所示的步骤s1至步骤s7,或者,处理器执行计算机程序时实现上述实施例中语音识别装置的各模块/单元的功能,例如图7所示模块61至模块67的功能。为避免重复,这里不再赘述。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例语音识别方法中的步骤,例如图2所示的步骤s1至步骤s7,或者,处理器执行计算机程序时实现上述实施例中语音识别装置的各模块/单元的功能,例如图7所示模块61至模块67的功能。为避免重复,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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