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

文档序号:14992393发布日期:2018-07-20 22:34阅读:188来源:国知局

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



背景技术:

随着计算机技术的发展,网络与多媒体技术相互结合的应用在人们的日常生活中越来越常见。在许多场景都存在识别语音数据,将语音转化为文本的应用需求,如通过语音生成控制指令,通过语音通信等。

传统的方法,往往将进行语音录制完毕得到完整的待转换语音数据,再将完整的待转换语音数据进行转换,得到语音识别结果,语音识别效率低,对于实时性要求较高的场景不能达到较好的识别速度。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种语音识别方法、装置、计算机设备和存储介质,能提前终止对语音数据的识别且得到正确的语音识别结果,提高语音识别效率。

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

获取实时采集语音数据形成的语音数据流,将所述语音数据流实时依次处理生成对应的数据包流;

将所述数据包流按照流式传输至服务器,以使所述服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度;

接收服务器根据识别进度依次返回的识别结果和对应的已解析数据包总长度;

当所述语音数据流结束时,获取所述语音数据流对应的数据流总长度;

当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到所述语音数据流的目标语音识别结果。

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

数据包流生成模块,用于获取实时采集语音数据形成的语音数据流,将所述语音数据流实时依次处理生成对应的数据包流;

流式传输模块,用于将所述数据包流按照流式传输至服务器,以使所述服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度;

接收模块,用于接收服务器根据识别进度依次返回的识别结果和对应的已解析数据包总长度;

数据流总长度获取模块,用于当所述语音数据流结束时,获取所述语音数据流对应的数据流总长度;

提前识别模块,用于当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果。

一种计算机设备,包括存储器和处理器,所述存储器中储存有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述任一实施例所述语音识别方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可执行指令,所述计算机可执行指令被处理器执行时,使得所述处理器执行上述任一实施例所述语音识别方法的步骤。

上述语音识别方法、装置、计算机设备和存储介质,通过获取实时采集语音数据形成的语音数据流,将语音数据流实时依次处理生成对应的数据包流,将数据包流按照流式传输至服务器,以使服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,接收服务器根据识别进度依次返回的识别结果和对应的已解析数据包总长度,当语音数据流结束时,获取语音数据流对应的数据流总长度,当当前已解析数据包总长度与数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果,通过识别进度判断是否已经将有效语音部分解析完毕,不需要将整个语音数据解析完毕就可提前得到语音识别结果,提高了语音识别的效率。

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

接收终端按照流式传输的数据包流,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度;

根据识别进度依次确定识别结果和对应的已解析数据包总长度;

当所述数据包流对应的语音数据流结束时,获取所述语音数据流对应的数据流总长度;

当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到所述语音数据流的目标语音识别结果。

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

处理模块,用于接收终端按照流式传输的数据包流,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度;

当前进度确定模块,用于根据识别进度依次确定识别结果和对应的已解析数据包总长度;

数据流总长度确定模块,用于当所述数据包流对应的语音数据流结束时,获取所述语音数据流对应的数据流总长度;

提前识别模块,用于当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果。

一种计算机设备,包括存储器和处理器,所述存储器中储存有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述任一实施例所述语音识别方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可执行指令,所述计算机可执行指令被处理器执行时,使得所述处理器执行上述任一实施例所述语音识别方法的步骤。

上述语音识别方法、装置、计算机设备和存储介质,通过接收终端按照流式传输的数据包流,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,根据识别进度依次确定识别结果和对应的已解析数据包总长度,当数据包流对应的语音数据流结束时,获取语音数据流对应的数据流总长度,当当前已解析数据包总长度与数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果,服务器通过识别进度判断是否已经将有效语音部分解析完毕,不需要将整个语音数据解析完毕就可提前得到语音识别结果,提高了语音识别的效率。

附图说明

图1为一个实施例中语音识别方法的应用环境图;

图2为一个实施例中图1中服务器的内部结构图;

图3为一个实施例中图1中终端的内部结构图;

图4为另一个实施例中语音识别方法的应用环境图;

图5为一个实施例中语音识别方法的流程图;

图6为一个实施例中计算数据流总长度的流程图;

图7为一个实施例中确定满足语音识别提前终止的流程图;

图8为一个实施例中语音识别提前结束判断示意图;

图9为一个实施例中另一种语音识别方法的流程图;

图10为一个实施例中判断满足语音识别提前终止条件的流程图;

图11为一个实施例中语音识别装置的结构框图;

图12为一个实施例中数据流总长度获取模块的结构框图;

图13为一个实施例中提前识别模块的结构框图;

图14为一个实施例中另一种语音识别装置的结构框图;

图15为一个实施例中提前识别模块的结构框图;

图16为另一个实施例中提前识别模块的结构框图。

具体实施方式

如图1所示,提供了一种语音识别系统,包括服务器102、至少一个终端104。服务器102用于提供对语音识别的支持,可以用独立的一个服务器实现,也可以包括多个服务器,且每个服务器分别实现语音识别的部分功能。在一个实施例中,图1中的服务器102的内部结构如图2所示,该服务器102包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该服务器102的存储介质存储有操作系统、数据库和第一语音识别装置,该第一语音识别装置用于实现一种适用于服务器的语音识别方法。

图1中的终端104的内部结构如图3所示,该终端104与服务器102通过网络连接,该终端104包括通过系统总线连接的处理器、图形处理单元、存储介质、内存、网络接口、显示屏幕和输入设备。其中,终端104的存储介质存储有操作系统,还包括第二语音识别装置,该装置用于实现一种适用于终端的语音识别方法。该处理器用于提供计算和控制能力,支撑整个终端104的运行。终端104中的图形处理单元用于至少提供显示界面的绘制能力,内存为存储介质中的音频数据处理装置的运行提供环境,网络接口用于与服务器102进行网络通信。显示屏幕用于显示应用界面等,输入设备用于接收用户输入的命令或音频数据等,输入设备包括麦克风。对于带触摸屏的终端104,显示屏幕和输入设备可为触摸屏。终端104直接面向用户,终端104具备语音数据采集功能,可实时采集语音数据,可将语音数据进行语音识别后转化为控制指令,可以是台式计算机也可以是移动终端,移动终端比如可以是智能音箱、智能手表、智能手机、平板电脑以及pda(个人数字助理)等。其中图2和图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,上述系统可用于物联网系统,如图4所示,还包括至少一个可控设备106。图4中的可控设备106是物联网中被控制的对象,可受控于终端104,可以是近距离控制和远程控制,可控设备106通过接收终端104或服务器102的控制指令接受控制。可控设备106可以是网络摄像头、智能电视机、打印机、冰箱、无线路由器、智能灯泡以及智能开关等。对于网络摄像头其工作功能机构至少具有捕捉影像的功能,对于智能电视则其工作功能机构至少具有接收电视节目信号以及播放电视节目的功能,以此类推。将语音识别系统应用于物联网系统可实现通过语音控制可控设备。

在一个实施例中,如图5所示,提供了一种语音识别方法,以应用于上述应用环境中的终端来举例说明,包括以下步骤:

步骤s210,获取实时采集语音数据形成的语音数据流,将语音数据流实时依次处理生成对应的数据包流。

具体地,可通过麦克风实时采集语音数据,语音数据可以是人或动物发出的声音、播放的歌曲、实时演奏的音乐等。不断采集的语音数据形成语音数据流。采集语音数据的采样频率可根据需要自定义,如每秒40次。语音数据流可通过音频编码算法进行压缩生成编码语音数据流,如通过silk压缩,不同的编码算法形成的单位时间内的语音数据长度不同。进行编码后打包生成数据包流,数据包流中的各个数据包的大小可相同或不同,具体长度可根据编码算法的参数确定。数据包中可包括纯语音数据和辅助数据,其中辅助数据用于描述数据包的属性信息和协助网络传输,如对数据包进行定位需要的信息,如数据包的标识、数据包所属的数据流标识、数据包的长度、数据包的偏移等,还可包括冗错信息等。

步骤s220,将数据包流按照流式传输至服务器,以使服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度。

具体地,流式传输是指数据流中先生成的数据包可先传输至服务器,后生成的数据包在生成后也直接发送至服务器,无需等待整个语音数据流结束才进行数据包的传输,实现数据包的实时传输。传输的频率可根据需要自定义,如采用第一编码算法每秒语音数据量为i字节,传输频率为m个数据包每秒,则每个数据包的大小为i/m字节,如i为3.2k字节,m为10,则每个包大小3.2k/10=320字节。对于非定长数据包每个包的大小可不同,可在平均大小的基础上通过流量控制算法调节数据包的大小。发送至服务器的数据包包括用于标识发送顺序的标识信息,如数据包序列号或时间戳等,便于服务器接收到数据包后,识别数据包的顺序再进行解析。服务器将接收的数据包解码,提取其中的顺序标识信息并进行排序,从而按顺序进行实时语音解析生成对应的识别结果,具体的语音识别算法可根据需要自定义,将语音转化为对应的文本。

对于存在多条语音数据流对应的数据包的情况下,需要将各个数据包按照语音数据流进行识别,避免不同语音数据流的数据包混合导致语音识别结果错误。

将各个已解析数据包的数据包长度相加得到已解析数据包总长度,已解析数据包总长度随着解析进度不断增加,识别结果是所有已解析数据包对应的语音转换文本,随着解析进度不断增加。由于在语音录制的过程中就通过流式传输至服务器进行实时解析,实现了语音数据识别与录制的时间复用,边录制边解析,提高了解析效率。

步骤s230,接收服务器根据识别进度依次返回的识别结果和对应的已解析数据包总长度。

具体地,服务器根据识别进度将不同识别进度对应的识别结果和对应的已解析数据包总长度不断的返回至终端,以使终端实时明确当前的识别进度。返回识别结果和对应的已解析数据包总长度的频率可根据需要自定义,如可每隔预设时长返回,也可以数据包为解析单元,每解析一个数据包返回一次识别进度,在一个实施例中,服务器每接收一个数据包,触发识别进度的返回,将当前识别进度信息返回,当前识别进度信息包括识别结果和对应的已解析数据包总长度。

步骤s240,当语音数据流结束时,获取语音数据流对应的数据流总长度。

具体地,可通过语音数据流结束条件将采集的语音数据进行语音数据流的划分。语音数据流结束条件可根据需要自定义,如预设时长的结束波形,可通过检测语音的音频特征确定当前语音数据是否结束,如当检测到预设时长的结束波形时,当前语音数据流结束。或当实时采集的静音数据对应的静音时长达到预设阈值时长时,当前语音数据流结束。预设阈值时长的长度可根据需要自定义,如定义为500ms。可将结束条件对应的结束部分语音数据作为当前语音数据流的结尾部分,得到当前语音数据流对应的数据流总长度。

步骤s250,当当前已解析数据包总长度与数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果。

具体的,语音识别提前终止条件可根据结束条件对应的结束部分语音数据得到,或根据结束部分语音数据与数据流总长度计算得到。因为结束部分语音数据的长度是已知确定的,如预设时长的结束波形对应的语音数据长度,或预设阈值时长的静音数据对应的语音数据长度,则可计算出结束部分语音数据的长度,结束部分语音数据只是用于标识数据流的结束,没有具体的语音意义,不需要进行解析,只需要得到结束部分语音数据之前的语音数据的解析结果就可得到有效语音识别结果。语音识别提前终止条件可以是包含绝对数据长度或比例值的条件。

将当前已解析数据包总长度与数据流总长度对比,具体的对比算法可自定义,可为减法运算、除法运算或其它的运算,对比算法与预设的语音识别提前终止条件匹配。

如将数据流总长度与当前已解析数据包总长度相减得到未解析数据长度,如果未解析数据长度小于或等于结束部分语音数据长度,则说明剩下的未解析数据全部属于结束部分语音数据,而结束部分语音数据没有具体的语音意义,不需要进行解析,从而可提前结束解析,将当前已解析数据包总长度对应的语音数据中的有效识别部分作为语音数据流的目标语音识别结果。

如计算当前已解析数据包总长度与数据流总长度的比值,得到已解析比例,如果已解析比例大于或等于有效数据比例,则说明有效语音数据部分已经全部解析完毕,从而可提前结束解析。其中有效数据比例=1-无效数据比例,无效数据比例=结束部分语音数据的长度/数据流总长度。

当满足语音识别提前终止条件时,终端无需等待服务器返回所有语音数据的识别结果,就可根据已经接收的当前识别结果得到所述语音数据流的目标语音识别结果。对于尾部为静音数据的语音流,静音部分解析不出有效的文本,不会对语音识别结果造成影响,当前识别结果包含的内容可直接作为目标语音识别结果。对于尾部为预设语音的语音流,由于预设语音对应的转换文本为预设文本,只需要将当前识别结果中预设文本中的部分去掉就得到目标语音识别结果。

本实施例中,通过获取实时采集语音数据形成的语音数据流,将语音数据流实时依次处理生成对应的数据包流,将数据包流按照流式传输至服务器,以使服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,接收服务器根据识别进度依次返回的识别结果和对应的已解析数据包总长度,当语音数据流结束时,获取语音数据流对应的数据流总长度,当当前已解析数据包总长度与数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果,通过识别进度判断是否已经将有效语音部分解析完毕,不需要将整个语音数据解析完毕就可提前得到语音识别结果,提高了语音识别的效率。

在一个实施例中,步骤s210中将语音数据流实时依次处理生成对应的数据包流的步骤包括:获取语音数据流的语音数据流标识,根据语音数据流标识将语音数据实时依次处理生成与语音数据流标识对应的数据包流。

具体地,同一条语音数据流前端生成预设长度字节,如32bytes的随机字符串标识id,用此id来标识当前语音数据流,前端每上传一个语音数据包至服务器,都携带此id。在一个实施例中,语音数据包还包括当前语音数据包在当前语音数据流中的偏移offset,当前语音数据包的数据长度len。识别后台服务器根据id、offset和len缓存接收到的语音数据包,形成接收语音数据流,并异步识别语音数据包。由于服务器可接收到来自不同终端上传的不同语音数据流对应的语音数据包,为了避免服务器将不同语音数据流的数据包混淆,各个终端需要获取语音数据包所在的语音数据流的语音数据流标识id,根据语音数据流标识id将语音数据实时依次处理生成携带语音数据流标识id的数据包,相同的语音数据流标识id的数据包形成一个语音数据包流,从而形成多个具有不同语音数据流标识的语音数据包流。

步骤s220中以使服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度的步骤包括:提取数据包携带的语音数据流标识,根据语音数据流标识统计语音数据流标识对应的已解析数据包总长度,根据语音数据流标识返回识别结果和对应的已解析数据包总长度。

具体地,服务器接收到一个数据包后,先提取数据包携带的语音数据流标识,从而将当前数据包归入与语音数据流标识对应的语音数据流。各个语音数据流都有对应的已解析数据包,根据语音数据流标识统计语音数据流标识对应的已解析数据包总长度,如语音数据流标识i对应的已解析数据包总长度为ai,根据语音数据流标识获取对应的目标终端,将识别结果和对应的已解析数据包总长度返回至对应的目标终端。如语音数据流标识i对应的目标终端为mi,将识别结果bi和已解析数据包总长度ai返回目标终端mi。

本实施例中,通过语音数据流标识区分不同语音数据流对应的数据包,且根据语音数据流标识统计不同语音数据流对应的识别结果和对应的已解析数据包总长度,可应用于存在多个语音数据流的场景。

在一个实施例中,如图6所示,步骤s240包括:

步骤s241,通过静音检测算法检测语音数据流中的静音数据,当连续静音数据对应的静音时长达到预设阈值时长时,判断语音数据流结束。

具体地,静音检测算法可根据需要自定义,如利用语音信号和噪声分帧信号在频域上的小波框架分解后能量分布特征的明显差异性进行静音检测等。当连续静音数据对应的静音时长达到预设阈值时长时,如通过检测有500ms的静音,则判断当前语音数据流结束,其中预设阈值时长可根据需要自定义。本实施例中,通过静音数据判断语音数据流的结束,不需要额外的输入结束指令,智能方便。

步骤s242,将预设阈值时长对应的静音数据作为语音数据流的尾部数据计算得到数据流总长度。

具体的,将预设阈值时长对应的静音数据加上之前录制的语音数据得到当前语音数据流总长度。超过预设阈值时长之后的静音数据或非静音数据将被划分为下一个语音数据流,不计入当前语音数据流总长度。如一个实施例中预设阈值时长为500ms,则存在500ms大约1.6kbytes数据是语音尾部静音数据,这部分数据是静音部分对识别结果已经没有意义,属于无效数据。

本实施例中,通过预设阈值时长的静音数据判断语音数据流的结束,且计算得到准确的数据流总长度,准确的数据流总长度可用于后续计算提前终止阈值长度。

在一个实施例中,如图7所示,步骤s250包括:

步骤s251,获取语音数据流对应的语音编码算法,根据语音编码算法计算单位时长对应的单位语音数据长度,计算预设阈值时长对应的阈值语音数据长度,根据阈值语音数据长度确定提前终止阈值长度。

具体地,由于不同的语音编码算法单位时长对应的单位语音数据长度不同,因此在计算预设阈值时长对应的阈值语音数据长度时,需要先获取当前语音编码算法,得到前语音编码算法下单位时长对应的单位语音数据长度n,则将预设阈值时长m与单位语音数据长度n相乘得到预设阈值时长m对应的阈值语音数据长度h,如一个实施例中预设阈值时长为500ms,单位语音数据长度n为32000bytes/秒,则阈值语音数据长度h为500ms/1000*32000bytes=1.6kbytes。可直接将阈值语音数据长度作为提前终止阈值长度,由于实际误差,可适当减小阈值语音数据长度,如将1.2kbytes确定为提前终止阈值长度,进一步确保有效语音数据无损。

步骤s252,计算当前已解析数据包总长度与数据流总长度的长度间距,当长度间距小于提前终止阈值长度时,判断对比结果满足语音识别提前终止条件。

具体地,前端可确定一条语音数据流的结尾,如果后台服务器返回的响应包中当前已解析数据包总长度距离数据流的结尾小于提前终止阈值长度,则说明剩下的数据都是无效语音数据,此时对应的当前识别结果被认为是有效的,满足语音识别提前终止条件。结合图8所示,后台服务器接收到终端分n个数据包上传给后台的语音数据流,根据识别进度得到当前识别进度位置,得到解析数据包总长度。终端判断当前语音数据流结束时,可计算得到当前语音数据流对应的数据流总长度,从而计算解析数据包总长度与数据流总长度之间的距离,如果距离小于1.2kbytes,则满足语音识别提前终止条件。前端不需要得到全部的识别数据就能提前确定有效的识别结果,提高了语音识别的效率。

在一个实施例中,如图9所示,提供了一种语音识别方法,以应用于上述应用环境中的服务器来举例说明,包括以下步骤:

步骤s310,接收终端按照流式传输的数据包流,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度。

具体地,流式传输是指数据流中先生成的数据包可先传输至服务器,后生成的数据包在生成后也直接发送至服务器,无需等待整个语音数据流结束才进行数据包的传输,实现数据包的实时传输。数据包流中的数据包可以是编码后生成的编码数据包,数据包流中的各个数据包的大小可相同或不同,具体长度可根据编码算法的参数确定。数据包中可包括纯语音数据和辅助数据,其中辅助数据用于描述数据包的属性信息和协助网络传输,如对数据包进行定位需要的信息,如数据包的标识、数据包所属的数据流标识、数据包的长度、数据包的偏移等,还可包括冗错信息等。数据包中包括用于标识发送顺序的标识信息,如数据包序列号或时间戳等,服务器接收到数据包后,根据标识信息识别数据包的发送顺序,根据先后顺序依次解析数据包。如果服务器判断当前接收的数据包与前一个已经解析的数据包不是连续的数据包,则说明当前接收的数据包与已经解析的数据包之间存在未接收的数据包,如第一数据包与第三数据包之间的第二数据包还未接收成功,需要等待第二数据包到达,先解析第二数据包,再解析第三数据包,保证解析数据包的顺序与终端生成并发送数据包的顺序一致,以保证解析结果的正确性。按顺序进行实时语音解析生成对应的识别结果,具体的语音识别算法可根据需要自定义,将语音转化为对应的文本。

对于存在多条语音数据流对应的数据包的情况下,服务器需要将各个数据包按照语音数据流进行识别,避免不同语音数据流的数据包混合导致语音识别结果错误。

将各个已解析数据包的数据包长度相加得到解析数据包总长度,解析数据包总长度随着解析进度不断增加,识别结果是所有已解析数据包对应的语音转换文本,随着解析进度不断增加。由于在语音录制的过程中就通过流式传输至服务器进行实时解析,实现了语音数据识别与录制的时间复用,边录制边解析,提高了解析效率。

步骤s320,根据识别进度依次确定识别结果和对应的已解析数据包总长度。

具体的,服务器根据识别进度得到不同识别进度对应的识别结果和对应的已解析数据包总长度。计算识别结果和对应的已解析数据包总长度的频率可根据需要自定义,如可每隔预设时长计算,也可以以数据包为解析单元,每解析一个数据包计算一次识别进度。在一个实施例中,服务器每接收到一个数据包,触发识别进度的计算,当前识别进度信息包括识别结果和对应的已解析数据包总长度。

步骤s330,当数据包流对应的语音数据流结束时,获取语音数据流对应的数据流总长度。

在一个实施例中,步骤s330包括:当检测到第二数据包中携带数据流结束标识时,判断所述数据包流对应的语音数据流结束,将第二数据包作为所述语音数据流的尾部数据计算得到数据流总长度。

具体的,当服务器接收到携带数据流结束标识的终止数据包时,代表语音数据流结束。需要根据终止数据包的顺序标识,将终止数据包之前的数据包长度全部获取,并相加得到语音数据流对应的数据流总长度。携带数据流结束标识的终止数据包可为静音数据包或预设时长的结束波形对应的数据包,终止数据包本身,或终止数据包与前面的一个或几个数据包组成结束部分语音数据,结束部分语音数据只是用于标识数据流的结束,没有具体的语音意义,不需要进行解析。

步骤s340,当当前已解析数据包总长度与数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果。

具体的,从接收数据包到解析数据包之间存在时间偏差,当终止数据包和之前的所有数据包都接收完成时,对于数据包的解析还未完成,不断获取最新的解析进度,并将当前已解析数据包总长度与数据流总长度对比得到的对比结果,如果当前已解析数据包总长度与数据流总长度对比得到的对比结果满足语音识别提前终止条件,则根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果。

其中,语音识别提前终止条件可根据结束条件对应的结束部分语音数据得到,或根据结束部分语音数据与数据流总长度计算得到。因为结束部分语音数据的长度是已知确定的,如预设时长的结束波形对应的语音数据长度,或预设阈值时长的静音数据对应的语音数据长度,则可计算出结束部分语音数据的长度,结束部分语音数据只是用于标识数据流的结束,没有具体的语音意义,不需要进行解析,只需要得到结束部分语音数据之前的语音数据的解析结果就可得到有效语音识别结果。语音识别提前终止条件可以是包含绝对数据长度或比例值的条件。

将当前已解析数据包总长度与数据流总长度对比,具体的对比算法可自定义,可为减法运算、除法运算或其它的运算,对比算法与预设的语音识别提前终止条件匹配。

如将数据流总长度与当前已解析数据包总长度相减得到未解析数据长度,如果未解析数据长度小于或等于结束部分语音数据长度,则说明剩下的未解析数据全部属于结束部分语音数据,而结束部分语音数据没有具体的语音意义,不需要进行解析,从而可提前结束解析,将当前已解析数据包总长度对应的语音数据中的有效识别部分作为语音数据流的目标语音识别结果。

如计算当前已解析数据包总长度与数据流总长度的比值,得到已解析比例,如果已解析比例大于或等于有效数据比例,则说明有效语音数据部分已经全部解析完毕,从而可提前结束解析。其中有效数据比例=1-无效数据比例,无效数据比例=结束部分语音数据的长度/数据流总长度。

当满足语音识别提前终止条件时,服务器无需解析所有接收到的语音数据包就能得到识别结果,就可根据已经解析成功的当前识别结果得到所述语音数据流的目标语音识别结果。对于尾部为静音数据的语音流,静音部分解析不出有效的文本,不会对语音识别结果造成影响,当前识别结果包含的内容可直接作为目标语音识别结果。对于尾部为预设语音的语音流,由于预设语音对应的转换文本为预设文本,只需要将当前识别结果中预设文本中的部分去掉就得到目标语音识别结果。

服务器提前得到语音识别结果后,可根据语音识别结果生成相应的指令发送至其它设备,提高了通过语音远程控制其它设备的效率。

本实施例中,接收终端按照流式传输的数据包流,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,根据识别进度依次确定识别结果和对应的已解析数据包总长度,当数据包流对应的语音数据流结束时,获取语音数据流对应的数据流总长度,当当前已解析数据包总长度与数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果,服务器通过识别进度判断是否已经将有效语音部分解析完毕,不需要将整个语音数据解析完毕就可提前得到语音识别结果,提高了语音识别的效率。

在一个实施例中,步骤s340之后,还包括:向终端返回目标语音识别结果。

具体地,当服务器提前得到语音识别结果后,可实时向终端返回目标语音识别结果,从而终端也可根据目标语音识别结果生成控制指令,通过控制指令控制其它可控设备。终端与可控设备可处于近距离范围内,提高了近距离控制设备的效率。

在一个实施例中,步骤s310中将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度的步骤包括:提取数据包携带的语音数据流标识,根据语音数据流标识进行实时语音解析生成语音数据流标识对应的识别结果,统计所述语音数据流标识对应的已解析数据包总长度。

具体地,可根据预设规则从数据包提取语音数据流标识,语音数据流标识用于标识当前数据包所属的语音数据流。在一个实施例中,服务器还从数据包提取偏移offset和数据长度len,偏移offset用于描述当前语音数据包在当前语音数据流中的偏移,数据长度len用于描述当前语音数据包的数据长度。服务器可接收到来自不同终端上传的不同语音数据流对应的语音数据包,为了避免服务器将不同语音数据流的数据包混淆,相同的语音数据流标识id的数据包形成一个语音数据包流,从而形成多个具有不同语音数据流标识的语音数据包流。

服务器接收到一个数据包后,先提取数据包携带的语音数据流标识,从而将当前数据包归入与语音数据流标识对应的语音数据流。各个语音数据流都有对应的已解析数据包,根据语音数据流标识统计语音数据流标识对应的已解析数据包总长度,如语音数据流标识i对应的已解析数据包总长度为ai,

向终端返回目标语音识别结果的步骤包括:根据语音数据流标识向终端返回对应的目标语音识别结果。

具体地,根据语音数据流标识获取对应的目标终端,将识别结果和对应的已解析数据包总长度返回至对应的目标终端。如语音数据流标识i对应的目标终端为mi,将识别结果bi和已解析数据包总长度ai返回目标终端mi。

本实施例中,通过语音数据流标识区分不同语音数据流对应的数据包,且根据语音数据流标识统计不同语音数据流对应的识别结果和对应的已解析数据包总长度,可应用于存在多个语音数据流的场景。

在一个实施例中,如图10所示,步骤s340包括:

步骤s341,获取语音数据流对应的语音编码算法,根据语音编码算法计算单位时长对应的单位语音数据长度,计算预设阈值时长对应的阈值语音数据长度,根据所述阈值语音数据长度确定提前终止阈值长度。

具体地,由于不同的语音编码算法单位时长对应的单位语音数据长度不同,因此在计算预设阈值时长对应的阈值语音数据长度时,需要先获取当前语音编码算法,得到前语音编码算法下单位时长对应的单位语音数据长度n,则将预设阈值时长m与单位语音数据长度n相乘得到预设阈值时长m对应的阈值语音数据长度h,如一个实施例中预设阈值时长为500ms,单位语音数据长度n为32000bytes/秒,则阈值语音数据长度h为500ms/1000*32000bytes=1.6kbytes。可直接将阈值语音数据长度作为提前终止阈值长度,由于实际误差,可适当减小阈值语音数据长度,如将1.2kbytes确定为提前终止阈值长度,进一步确保有效语音数据无损。

步骤s342,计算当前已解析数据包总长度与数据流总长度的长度间距,当长度间距小于所述提前终止阈值长度时,判断对比结果满足语音识别提前终止条件。

具体地,服务器可确定一条语音数据流的结尾,当前已解析数据包总长度距离数据流的结尾小于提前终止阈值长度,则说明剩下的数据都是无效语音数据,此时对应的当前识别结果被认为是有效的,满足语音识别提前终止条件。服务器不需要解析全部的语音数据就能提前确定有效的识别结果,提高了语音识别的效率。

在一个具体的实施例中,语音识别系统包括智能音箱、智能手机、服务器和可控设备。

1、智能音箱接收唤醒指令后,通过麦克风实时采集语音数据,形成第一语音数据流,第一语音数据流中的各个语音数据包中携带第一语音数据流标识、当前数据包偏移和数据包长度,智能音箱将第一语音数据流对应的各个数据包按照流式传输至服务器。

2、手机接收唤醒指令后,通过麦克风实时采集语音数据,形成第二语音数据流,第二语音数据流中的各个语音数据包中携带第二语音数据流标识、当前数据包偏移和数据包长度,手机将第二语音数据流对应的各个数据包流按照流式传输至服务器。

3、服务器接收数据包,提取数据包中的语音数据流标识,如果是第一语音数据流标识,则将当前数据包归入第一语音数据流,如果是第二语音数据流标识,则将当前数据包归入第二语音数据流。提取数据包中的当前数据包偏移,根据当前数据包偏移与前一个数据包的偏移比较判断与前一个数据包是否是连续的数据包,将各个数据包排序成连续的数据包再进行解析,第一语音数据流对应的生成对应的第三识别结果和第二语音数据流对应的第四识别结果,并分别统计属于第一语音数据流对应的已解析数据包总长度和第一语音数据流对应的已解析数据包总长度。

4、智能音箱通过静音检测算法检测语音数据流中的静音数据,当连续静音数据对应的静音时长达到500ms时,判断当第一语音数据流结束时,获取第一语音数据流对应的第一数据流总长度;手机通过静音检测算法检测语音数据流中的静音数据,当连续静音数据对应的静音时长达到500ms时,判断当第二语音数据流结束时,获取第二语音数据流对应的第二数据流总长度。

5、智能音箱接收服务器根据识别进度依次返回的第三识别结果和对应的第一已解析数据包总长度,手机接收服务器根据识别进度依次返回的第四识别结果和对应的第二已解析数据包总长度。

6、当第一已解析数据包总长度与第一数据流总长度的差值小于1.6kbytes时,满足语音识别提前终止条件时,根据第一已解析数据包总长度对应的识别结果得到第一语音数据流的第一语音识别结果。

7、当第二已解析数据包总长度与第二数据流总长度的差值小于1.6kbytes时,满足语音识别提前终止条件时,根据第二已解析数据包总长度对应的识别结果得到第二语音数据流的第二语音识别结果。

在一个实施例中,如图11所示,提供一种语音识别装置,包括:

数据包流生成模块410,用于获取实时采集语音数据形成的语音数据流,将语音数据流实时依次处理生成对应的数据包流。

流式传输模块420,用于将数据包流按照流式传输至服务器,以使服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度。

接收模块430,用于接收服务器根据识别进度依次返回的识别结果和对应的已解析数据包总长度。

数据流总长度获取模块440,用于当语音数据流结束时,获取语音数据流对应的数据流总长度。

提前识别模块450,用于当当前已解析数据包总长度与数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果。

在一个实施例中,如图12所示,数据流总长度获取模块440包括:

静音检测单元441,用于通过静音检测算法检测语音数据流中的静音数据。

判断单元442,用于当连续静音数据对应的静音时长达到预设阈值时长时,判断语音数据流结束。

计算单元443,用于将预设阈值时长对应的静音数据作为所述语音数据流的尾部数据计算得到数据流总长度。

在一个实施例中,数据包流生成模块410还用于获取语音数据流的语音数据流标识,根据语音数据流标识将语音数据实时依次处理生成与语音数据流标识对应的数据包流。

流式传输模块420还用于通过服务器提取数据包携带的语音数据流标识,根据语音数据流标识统计所述语音数据流标识对应的已解析数据包总长度,根据语音数据流标识返回识别结果和对应的已解析数据包总长度。

在一个实施例中,如图13所示,提前识别模块450包括:

提前终止阈值长度计算单元451,获取语音数据流对应的语音编码算法,根据语音编码算法计算单位时长对应的单位语音数据长度,计算预设阈值时长对应的阈值语音数据长度,根据阈值语音数据长度确定提前终止阈值长度;

判断单元452,计算当前已解析数据包总长度与数据流总长度的长度间距,当长度间距小于提前终止阈值长度时,判断对比结果满足语音识别提前终止条件。

在一个实施例中,如图14所示,提供了一种语音识别装置,包括:

处理模块510,用于接收终端按照流式传输的数据包流,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度。

当前进度确定模块520,用于根据识别进度依次确定识别结果和对应的已解析数据包总长度。

数据流总长度确定模块530,用于当数据包流对应的语音数据流结束时,获取语音数据流对应的数据流总长度。

提前识别模块540,用于当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果。

在一个实施例中,如图15所示,提前识别模块540包括:

单位语音数据长度确定单元541,用于获取语音数据流对应的语音编码算法,根据语音编码算法计算单位时长对应的单位语音数据长度。

提前终止阈值长度计算单元542,用于计算预设阈值时长对应的阈值语音数据长度,根据阈值语音数据长度确定提前终止阈值长度。

判断单元543,用于计算当前已解析数据包总长度与数据流总长度的长度间距,当长度间距小于提前终止阈值长度时,判断对比结果满足语音识别提前终止条件。

在一个实施例中,如图16所示,装置还包括:

返回模块550,用于向终端返回目标语音识别结果。

在一个实施例中,处理模块510还用于提取数据包携带的语音数据流标识,根据语音数据流标识进行实时语音解析生成语音数据流标识对应的识别结果,统计语音数据流标识对应的已解析数据包总长度。

返回模块550还用于根据语音数据流标识向终端返回对应的目标语音识别结果。

在一个实施例中,数据流总长度确定模块530还用于当检测到第二数据包中携带数据流结束标识时,判断数据包流对应的语音数据流结束,将第二数据包作为语音数据流的尾部数据计算得到数据流总长度。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行以下步骤:获取实时采集语音数据形成的语音数据流,将所述语音数据流实时依次处理生成对应的数据包流,将数据包流按照流式传输至服务器,以使服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,接收服务器根据识别进度依次返回的识别结果和对应的已解析数据包总长度,当语音数据流结束时,获取语音数据流对应的数据流总长度,当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到所述语音数据流的目标语音识别结果。

在一个实施例中,将语音数据流实时依次处理生成对应的数据包流,包括:获取语音数据流的语音数据流标识,根据语音数据流标识将语音数据实时依次处理生成与语音数据流标识对应的数据包流。

以使所述服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,包括:提取数据包携带的语音数据流标识,根据语音数据流标识统计语音数据流标识对应的已解析数据包总长度,根据语音数据流标识返回识别结果和对应的已解析数据包总长度。

在一个实施例中,当所述语音数据流结束时,获取所述语音数据流对应的数据流总长度,包括:通过静音检测算法检测语音数据流中的静音数据,当连续静音数据对应的静音时长达到预设阈值时长时,判断语音数据流结束,将预设阈值时长对应的静音数据作为所述语音数据流的尾部数据计算得到数据流总长度。

在一个实施例中,当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果,包括:获取所述语音数据流对应的语音编码算法,根据语音编码算法计算单位时长对应的单位语音数据长度,计算预设阈值时长对应的阈值语音数据长度,根据阈值语音数据长度确定提前终止阈值长度,计算当前已解析数据包总长度与数据流总长度的长度间距,当长度间距小于所述提前终止阈值长度时,判断对比结果满足语音识别提前终止条件。

在一个实施例中,提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机可执行指令,计算机可执行指令被处理器执行时,使得处理器执行以下步骤:获取实时采集语音数据形成的语音数据流,将所述语音数据流实时依次处理生成对应的数据包流,将数据包流按照流式传输至服务器,以使服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,接收服务器根据识别进度依次返回的识别结果和对应的已解析数据包总长度,当语音数据流结束时,获取语音数据流对应的数据流总长度,当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到所述语音数据流的目标语音识别结果。

在一个实施例中,将语音数据流实时依次处理生成对应的数据包流,包括:获取语音数据流的语音数据流标识,根据语音数据流标识将语音数据实时依次处理生成与语音数据流标识对应的数据包流。

以使所述服务器将接收的数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,包括:提取数据包携带的语音数据流标识,根据语音数据流标识统计语音数据流标识对应的已解析数据包总长度,根据语音数据流标识返回识别结果和对应的已解析数据包总长度。

在一个实施例中,当所述语音数据流结束时,获取所述语音数据流对应的数据流总长度,包括:通过静音检测算法检测语音数据流中的静音数据,当连续静音数据对应的静音时长达到预设阈值时长时,判断语音数据流结束,将预设阈值时长对应的静音数据作为所述语音数据流的尾部数据计算得到数据流总长度。

在一个实施例中,当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果,包括:获取所述语音数据流对应的语音编码算法,根据语音编码算法计算单位时长对应的单位语音数据长度,计算预设阈值时长对应的阈值语音数据长度,根据阈值语音数据长度确定提前终止阈值长度,计算当前已解析数据包总长度与数据流总长度的长度间距,当长度间距小于所述提前终止阈值长度时,判断对比结果满足语音识别提前终止条件。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行以下步骤:接收终端按照流式传输的数据包流,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,根据识别进度依次确定识别结果和对应的已解析数据包总长度,当数据包流对应的语音数据流结束时,获取语音数据流对应的数据流总长度,当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果。

在一个实施例中,计算机可读指令使得处理器执行将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果之后,还执行以下步骤:向终端返回目标语音识别结果。

在一个实施例中,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,包括:提取数据包携带的语音数据流标识,根据语音数据流标识进行实时语音解析生成语音数据流标识对应的识别结果,统计所述语音数据流标识对应的已解析数据包总长度。

向终端返回所述目标语音识别结果,包括:根据语音数据流标识向终端返回对应的目标语音识别结果。

在一个实施例中,当所述数据包流对应的语音数据流结束时,获取所述语音数据流对应的数据流总长度,包括:当检测到第二数据包中携带数据流结束标识时,判断数据包流对应的语音数据流结束,将第二数据包作为语音数据流的尾部数据计算得到数据流总长度。

在一个实施例中,当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果包括:获取语音数据流对应的语音编码算法,根据语音编码算法计算单位时长对应的单位语音数据长度,计算预设阈值时长对应的阈值语音数据长度,根据阈值语音数据长度确定提前终止阈值长度,计算当前已解析数据包总长度与数据流总长度的长度间距,当长度间距小于所述提前终止阈值长度时,判断对比结果满足语音识别提前终止条件。

在一个实施例中,提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机可执行指令,计算机可执行指令被处理器执行时,使得处理器执行以下步骤:接收终端按照流式传输的数据包流,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,根据识别进度依次确定识别结果和对应的已解析数据包总长度,当数据包流对应的语音数据流结束时,获取语音数据流对应的数据流总长度,当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,根据当前已解析数据包总长度对应的当前识别结果得到语音数据流的目标语音识别结果。

在一个实施例中,计算机可读指令使得处理器执行将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果之后,还执行以下步骤:向终端返回目标语音识别结果。

在一个实施例中,将数据包进行实时语音解析生成对应的识别结果,并统计已解析数据包总长度,包括:提取数据包携带的语音数据流标识,根据语音数据流标识进行实时语音解析生成语音数据流标识对应的识别结果,统计所述语音数据流标识对应的已解析数据包总长度。

向终端返回所述目标语音识别结果,包括:根据语音数据流标识向终端返回对应的目标语音识别结果。

在一个实施例中,当所述数据包流对应的语音数据流结束时,获取所述语音数据流对应的数据流总长度,包括:当检测到第二数据包中携带数据流结束标识时,判断数据包流对应的语音数据流结束,将第二数据包作为语音数据流的尾部数据计算得到数据流总长度。

在一个实施例中,当当前已解析数据包总长度与所述数据流总长度对比得到的对比结果满足语音识别提前终止条件时,将当前已解析数据包总长度对应的当前识别结果作为所述语音数据流的目标语音识别结果包括:获取语音数据流对应的语音编码算法,根据语音编码算法计算单位时长对应的单位语音数据长度,计算预设阈值时长对应的阈值语音数据长度,根据阈值语音数据长度确定提前终止阈值长度,计算当前已解析数据包总长度与数据流总长度的长度间距,当长度间距小于所述提前终止阈值长度时,判断对比结果满足语音识别提前终止条件。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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