一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

实现语音年龄和/或性别识别服务的方法、系统及介质与流程

2021-07-30 17:59:00 来源:中国专利 TAG:语音 识别 性别 年龄 语音识别
实现语音年龄和/或性别识别服务的方法、系统及介质与流程

本发明涉及语音识别领域,具体涉及一种实现语音年龄和/或性别识别的方法及系统。



背景技术:

基于kaldihmm-dnn混合架构的语音年龄和/或性别识别模型在识别语音的能力上有很大优势,但在工业部署与使用的时候非常困难,一般常用的方法是先将kaldinnet3模型通过模型转换工具转换成onnx模型,然后使用其他的深度学习引擎来使用onnx模型提供语音识别服务(例如:mace移动端ai计算引擎),或者是使用tensorflowserving的方式进行部署,但这两种方式所使用的框架固定,不易修改,对于语音识别服务来说,灵活性差,扩展性较差,且仅支持kaldi神经网络推理部分的算子,wfst解码仍需借助kaldi自身进行解码。

而kaldi原生提供的基于websocket和gstreamer框架的语音识别引擎可以提供一定的语音服务能力,但是在内存资源占用,解码速度,并发度上均无法满足实际工业部署要求。

并且,语音识别引擎一般对外提供rest-api的访问方式,没有对传输的音频数据进行序列化压缩机制,不利于长时语音音频大文件的数据传输,在需要双向流式交互的场景下使用也极为困难。

另一方面,语音音频格式多样,而一般语音识别引擎仅支持事先定义好的一类音频格式(例如16k/8k采样率),无法动态适应不同的需求。

因而,现有的基于kaldihmm-dnn混合架构的语音识别模型虽然语音识别优势大但实际应用部署难度大,扩展性灵活性差,且部署后解码速度、并发度、资源占用、交互、动态适配性等都不能满足实际应用需求,使得用户体验较差,需要更灵活更容易扩展且用户体验更优的方案。



技术实现要素:

为了克服上述缺陷,提出了本发明,以解决或部分解决如何更简单快捷地通过建立年龄和/或性别的语音识别服务远程准确地调用对应支持各不同目标对象的待识别语音的语音年龄和/或性别识别深度神经网络模型进行识别,实现更高效灵活可扩展的远程准确获取目标对象的年龄和/或性别的信息的技术问题,从而提升用户体验。为此,本发明提供一种实现语音年龄和/或性别识别服务的方法、系统、装置及介质。

第一方面,提供实现语音年龄和/或性别识别服务的方法,包括:接收经grpc定义的客户端发送的经过序列化的语音识别请求,其中,所述语音识别请求包括通过语音识别年龄和/或性别;对所述语音识别请求进行反序列化操作并解析所述语音识别请求中的音频数据和参数字段信息;根据所述参数字段信息选择对应的语音年龄和/或性别识别深度神经网络模型,并通过所述语音年龄和/或性别识别深度神经网络模型对所述音频数据及其上下文音频信息进行解码获得相应的年龄和/或性别的识别结果;返回所述识别结果到所述客户端。

其中,所述grpc定义的具体过程包括:根据grpc的protobuf的结构,预先定义与语音年龄和/或性别识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的grpc的protobuf协议;根据所述protobuf协议编译生成进行grpc语音年龄和/或性别识别服务的客户端与服务端的grpc服务接口代码,以便进行客户端和服务端之间的远程调用;其中,具有所述grpc服务接口代码的客户端为经grpc定义的客户端;其中,具有所述grpc服务接口代码的服务端为经grpc定义的服务端。

其中,所述经过序列化的语音识别请求为由所述经grpc定义的客户端预先选择的语音和/或性别服务模式所发送来的远程请求;所述远程请求中包括:利用protobuf结构序列化的待识别的语音音频数据和音频参数字段信息;所述“对所述语音识别请求进行反序列化操作并解析所述语音识别请求中的音频数据和参数字段信息”,具体包括:通过protobuf结构对所述语音识别请求进行反序列化操作得到待识别的所述语音音频数据和所述音频参数字段信息;其中,所述音频参数字段信息至少包括:音频格式、采样率和语音年龄和/或性别识别服务模式的字段信息;基于所述音频格式,对相应的待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成pcm数据格式的音频数据;所述“根据所述参数字段信息选择对应的语音年龄和/或性别识别深度神经网络模型”,具体包括:根据所述语音年龄和/或性别识别服务模式确定需要选择的语音识别模型的类型为语音年龄和/或性别识别深度神经网络模型;根据所述音频格式和所述采样率调用对应支持识别所述音频格式和所述采样率的语音年龄和/或性别识别深度神经网络模型;所述“通过所述语音年龄和/或性别识别深度神经网络模型对所述音频数据进行解码获得相应的年龄和/或性别的识别结果”具体包括:利用对应支持识别所述音频格式和所述采样率的语音年龄和/或性别识别深度神经网络模型对所述转换成pcm数据格式的音频数据及其上下文音频信息进行解码,以得到相应的年龄和/或性别的识别结果;所述“返回所述识别结果到所述客户端”具体包括:将所述识别结果序列化后发送回所述经grpc定义的客户端。

其中,将所述识别结果序列化后发送回所述经grpc定义的客户端,具体包括:通过protobuf结构对所述识别结果进行序列化编码压缩;以及,根据所述语音年龄和/或性别识别服务模式调用相应的结果返回逻辑,以将序列化编码压缩后的所述识别结果发送回所述经grpc定义的客户端;其中,所述语音年龄和/或性别识别服务模式包括:实时语音年龄和/或性别识别的双向流式和一句话语音年龄和/或性别识别的非流式;其中,所述结果返回逻辑包括:针对所述非流式为一次性返回识别结果,针对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果;其中,返回最终识别结果包括相应的年龄和/或性别的信息。

其中,所述语音年龄和/或性别识别深度神经网络模型采用:基于kaldi混合架构的前向序列记忆神经网络fsmn、时延神经网络tdnn或因子时延神经网络tdnnf模型;其中,当采用fsmn时,采用最后两层为限时自注意力网络的10层深度fsmn,其每两层之间采用跳层连接shortcut,以及,训练时的损失函数采用交叉熵corssentropy。

第二方面,提供一种实现语音年龄和/或性别识别服务的方法,包括:读取待识别的语音音频数据,并选择相应的语音年龄和/或性别识别服务模式;利用protobuf结构对待识别的所述语音音频数据、以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩,以形成语音识别请求;以及,调用所述语音年龄和/或性别识别服务模式,向经grpc定义的服务端发送所述语音识别请求,以远程调用对应的所述语音识别请求的语音年龄和/或性别识别深度神经网络模型进行语音识别;其中,所述语音年龄和/或性别识别服务模式包括:实时语音年龄和/或性别识别的双向流式和一句话语音年龄和/或性别识别的非流式;其中,所述语音识别请求为请求通过语音识别年龄和/或性别。

其中,所述grpc定义的过程具体包括:根据grpc的protobuf的结构,预先定义与语音年龄和/或性别识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的grpc的protobuf协议;根据所述protobuf协议编译生成进行grpc语音年龄和/或性别识别服务的客户端与服务端的grpc服务接口代码,以便进行客户端和服务端之间的远程调用;其中,具有所述grpc服务接口代码的客户端为经grpc定义的客户端;其中,具有所述grpc服务接口代码的服务端为经grpc定义的服务端。

其中,接收来自所述经grpc定义的服务端对待识别的所述语音音频数据进行识别所获得的相应的年龄和/或性别的识别结果;其中,所述经grpc定义的服务端,利用所述protobuf结构对所述识别结果进行序列化编码压缩、以及根据所述语音年龄和/或性别识别服务模式调用相应的结果返回逻辑对所述识别结果进行返回;对接收的所述识别结果利用所述protobuf结构进行反序列化并输出;其中,所述“远程调用所述语音识别请求的语音年龄和/或性别识别深度神经网络模型进行语音识别”是通过所述语音年龄和/或性别识别服务模式确定需要选择的语音识别模型的类型,通过所述音频格式和所述采样率调用所述类型中对应支持识别所述音频格式和所述采样率的语音年龄和/或性别识别深度神经网络模型,以及,通过提取音频数据的一预定时间内的上下文信息进行语音识别而获得相应的年龄和/或语音的识别结果;其中,所述音频数据为解析所述语音识别请求过程中基于所述音频格式将所述语音音频数据统一转换成pcm数据格式的音频数据。

第三方面,提供一种实现语音年龄和/或性别识别服务的服务器,包括:接收模块,用于接收经grpc定义的客户端发送的经过序列化的语音识别请求,其中,所述语音识别请求包括通过语音识别年龄和/或性别;序列化模块,用于对所述语音识别请求进行反序列化操作,以及对识别结果进行序列化操作;音频解析模块,用于解析所述语音识别请求中的数据和参数字段信息;语音识别核心算法模块,用于根据所述参数字段信息选择对应的语音年龄和/或性别识别深度神经网络模型,并通过所述语音年龄和/或性别识别深度神经网络模型对所述音频数据及其上下文音频信息进行解码获得相应的年龄和/或性别的识别结果;返回模块,用于返回所述识别结果到所述客户端。

其中,所述grpc定义的过程具体包括:根据grpc的protobuf的结构,预先定义与语音年龄和/或性别识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的grpc的protobuf协议;根据所述protobuf协议编译生成进行grpc语音年龄和/或性别识别服务的客户端与服务端的grpc服务接口代码,以便进行客户端和服务端之间的远程调用;其中,具有所述grpc服务接口代码的客户端为经grpc定义的客户端;其中,具有所述grpc服务接口代码的服务器为经grpc定义的服务器。

其中,所述经过序列化的语音识别请求为由所述经grpc定义的客户端预先选择的语音和/或性别服务模式所发送来的远程请求;所述远程请求中包括:利用protobuf结构序列化的待识别的语音音频数据和音频参数字段信息;所述序列化模块,具体包括:protobuf反序列化单元,用于通过protobuf结构对所述语音识别请求进行反序列化操作得到待识别的所述语音音频数据和所述音频参数字段信息;其中,所述音频参数字段信息至少包括:音频格式、采样率和语音年龄和/或性别识别服务模式的字段信息;以及,protobuf序列化单元,用于通过protobuf结构对所述识别结果进行序列化编码压缩;所述音频解析模块,具体执行如下操作:基于所述音频格式,对相应的待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成pcm数据格式的音频数据;所述语音识别核心算法模块,具体执行如下操作:根据所述语音年龄和/或性别识别服务模式确定需要选择的语音识别模型的类型为语音年龄和/或性别识别深度神经网络模型;根据所述音频格式和所述采样率调用对应支持识别所述音频格式和所述采样率的语音年龄和/或性别识别深度神经网络模型;利用对应支持识别所述音频格式和所述采样率的语音年龄和/或性别识别深度神经网络模型对所述转换成pcm数据格式的音频数据及其上下文音频信息进行解码以得到相应的年龄和/或性别的识别结果;所述返回模块,具体包括:返回逻辑单元,用于根据所述语音年龄和/或性别识别服务模式调用相应的结果返回逻辑,以将序列化编码压缩后的所述识别结果发送回所述经grpc定义的客户端;其中,所述语音年龄和/或性别识别服务模式包括:实时语音年龄和/或性别识别的双向流式和一句话语音年龄和/或性别识别的非流式;其中,所述结果返回逻辑包括:对所述非流式为一次性返回识别结果,对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果;其中,返回最终识别结果包括相应的年龄和/或性别的信息。

其中,序列化模块,具体包括:protobuf反序列化单元,用于通过protobuf结构对所述语音识别请求进行反序列化操作;其中,所述音频参数字段信息至少包括:音频格式、采样率和语音识别服务模式的字段信息;音频数据解析模块的解析操作具体包括:根据所述音频格式对相应的待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成所述pcm数据格式的音频数据;语音识别核心算法模块的识别操作具体包括:根据所述音频格式和所述采样率,选择对应的kaldi语音识别模型,并且,利用对应的所述kaldi语音识别模型对所述转换成pcm数据格式的音频数据进行语音识别解码并得到识别结果。

其中,所述语音年龄和/或性别识别深度神经网络模型采用:基于kaldi混合架构的前向序列记忆神经网络fsmn、时延神经网络tdnn或因子时延神经网络tdnnf模型;其中,当采用fsmn时,采用最后两层为限时自注意力网络的10层深度fsmn,其每两层之间采用跳层连接shortcut,以及,训练时的损失函数采用交叉熵corssentropy。

第四方面,提供一种实现语音年龄和/或性别识别服务的终端,包括:grpc客户端模块,用于读取待识别的语音音频数据;grpc模式选择模块,用于在所述grpc客户端模块读取待识别的语音音频数据时选择相应的语音年龄和/或性别识别服务模式;protobuf序列化模块,用于利用protobuf结构对待识别的所述语音音频数据、以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩,以形成语音识别请求,其中,所述语音识别请求包括通过语音识别年龄和/或性别;所述grpc客户端模块还用于:调用所述语音年龄和/或性别识别服务模式,向经grpc定义的服务端发送所述语音识别请求,以远程调用对应的所述语音识别请求的语音年龄和/或性别识别深度神经网络模型进行语音识别;其中,所述语音年龄和/或性别识别服务模式包括:实时语音年龄和/或性别识别的双向流式和一句话语音年龄和/或性别识别的非流式;其中,所述语音识别请求为请求通过语音识别年龄和/或性别。

其中,所述grpc定义的过程具体包括:根据grpc的protobuf的结构,预先定义与语音年龄和/或性别识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的grpc的protobuf协议;根据所述protobuf协议编译生成进行grpc语音年龄和/或性别识别服务的客户端与服务器的grpc服务接口代码,以便进行客户端和服务端之间的远程调用;其中,具有所述grpc服务接口代码的客户端为经grpc定义的客户端;其中,具有所述grpc服务接口代码的服务器为经grpc定义的服务器。

其中,所述grpc客户端模块还用于:接收来自所述经grpc定义的服务器对待识别的所述语音音频数据进行识别所获得的相应年龄和/或性别的识别结果;其中,所述经grpc定义的服务端,利用所述protobuf结构对所述识别结果进行序列化编码压缩、以及根据所述语音年龄和/或性别识别服务模式调用相应的结果返回逻辑对所述识别结果进行返回;所述protobuf序列化模块还用于:对接收的所述识别结果利用所述protobuf结构进行反序列化并输出;其中,所述服务端的所述语音年龄和/或性别识别深度神经网络模型是通过所述语音年龄和/或性别识别服务模式确定需要选择的语音识别模型的类型,通过所述音频格式和所述采样率调用所述类型中对应支持识别所述音频格式和所述采样率的语音年龄和/或性别识别深度神经网络模型,以及,通过提取音频数据的一预定时间内的上下文信息进行语音识别而获得相应的年龄和/或语音的识别结果;其中,所述音频数据为解析所述语音识别请求过程中基于所述音频格式将所述语音音频数据统一转换成pcm数据格式的音频数据。

第五方面,提供一种计算机可读存储介质,该存储介质存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行前述第一方面和第二方面的任一项所述的实现语音年龄和/或性别识别服务的方法。

第六方面,提供一种处理装置,包括处理器和存储装置,其特征在于,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行前述第一方面和第二方面的任一项所述的实现语音年龄和/或性别识别服务的方法。

第七方面,提供一种实现语音年龄和/或性别识别服务的系统,其特征在于,包括如前述第三方面的任一项所述的实现语音年龄和/或性别识别服务的服务器,以及如前述第四方面的任一项所述的实现语音年龄和/或性别识别服务的终端。

本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:

在实施本发明的技术方案中,对于复杂的特定的目标对象的年龄和/或性别的语音识别,通过设置特定的年龄和/或性别的语音识别服务模式,利用grpc定义的客户端和服务端的远程过程调用形成的语音识别服务引擎,确定远程服务端的识别模型类别从而准确选定能支持的音频格式和采样率的年龄和/或性别识别模型根据目标对象的语音识别出其年龄和/或性别信息,其识别准确度高,且模型可选择范围大,模型更新不影响客户端。尤其是多种特定年龄和/或性别的语音识别模式选择/设置,基于解码的语音年龄和/或性别的语音识别服务模式确定应当选择各种可用的识别模型中与年龄和/或性别识别有关的模型类型,再通过音频格式和采码率,从多种不同语音年龄和/或性别模型中能够准确、快速地调用到对应的能支持该格式和采码率的模型,并且,所述模型通过特定结构对相应的音频数据结合其上下文的音频信息进行解码识别,这样,识别更准确也更多样化,只要服务端具有能够支持相应的音频格式和采样率的语音年龄和/或性别识别模型即可实现识别其年龄和/或性别。

进一步,其能够利用protobuf对语音音频数据进行序列化与反序列化,极大的减少大文件音频网络传输开销,提高传输速率,其基于http/2.0的grpc远程过程调用框架,有效结合多线程、并发、单向、双向流高效传输与服务响应,同时,对服务器端的kaldi解码器进行解耦和模块化(如模式选择等),结合gpu,实现语音识别核心算法,与多模型管理,极大程度上提高了服务器资源利用率。

进一步,通过grpc这种轻量级的框架与语音识别核心算法相分离方式,可以对语音算法进行快速便捷的优化与更新迭代,不受到客户端部署的影响;通过protobuf协议服务与字段定义,可灵活选择不同音频格式与不同采样率的语音年龄和/或性别识别模型,也可自由扩展当前语音算法引擎的功能,充分体现了本方案在语音识别服务的技术应用部署上的灵活性和可扩展性。

附图说明

下面参照附图来描述本发明的具体实施方式,附图中:

图1、2是根据本发明的实现语音年龄和/或性别识别服务的方法的一个实施例的主要流程图;

图3是根据本发明的实现语音年龄和/或性别识别服务的系统的一个实施例的结构框图;

图4是根据本发明的技术方案的一个实施例的应用时交互过程示意图;

图5是示例性的给出了本发明的技术方案中一个实施例的语音年龄/性别识别的fsmn模型的结构;

图6、7为本发明的技术方案应用的处理装置的一个实施例的硬件结构示意图。

具体实施方式

下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。

在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“a和/或b”表示所有可能的a与b的组合,比如只是a、只是b或者a和b。术语“至少一个a或b”或者“a和b中的至少一个”含义与“a和/或b”类似,可以包括只是a、只是b或者a和b。单数形式的术语“一个”、“这个”也可以包含复数形式。

对本发明中涉及的技术术语作如下解释:

kaldi:是语音识别领域主流的,使用最广的语音识别专有深度学习平台;

grpc:google的远程过程调用服务框架,主要通过protobuf来定义接口;

protobuf:google开发的一种数据序列化协议,其与语言无关,平台无关,可扩展的序列化数据结构的规则,用于数据通信协议,数据存储等;

onnx:开放神经网络交换格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移;

gstreamer:是一个支持跨平台的多媒体框架;

pcm:是一种脉冲调制编码格式,用数字表示采样音频模拟信号的方法;

fsmn:feedforwardsequentialmemorynetwork,该模型在很小的延时下,就能取得与bi-rnn一样的效果。

tdnn:timedelayneuralnetwork,时延神经网络,网络是多层的,每层对特征有较强的抽象能力,有能力表达语音特征在时间上的关系。

tdnnf:factorizedtdnn,相比tdnn模型,将因子分解后的两个矩阵之一限定为半正定,并使用了跳层连接skipconnection。

本发明的技术方案主要的实现原理主要为:通过grpc的protobuf结构定义语音识别服务模式、待识别的语音音频格式、语音音频数据、音频长度等字段信息和内容。这些参数字段信息,在具体读取到待识别的语音音频数据时会将具体的语音音频信息与对应该语音音频数据的其他参数如音频参数字段信息都填入。该定义确定了protobuf协议,用此协议进行编译,生成对应的服务端和客户端(即需要进行远程调用实现语音识别服务的客户端和服务器之间)的接口代码(例如通过protobuf编译器进行编译,将.proto编译成特定的类,这些类就能通过简单方法访问每个字段,并可以串行化或反串行化进行访问;并且,能对应服务端的语音识别服务,进行了服务模块划分)。当客户端对语音音频数据进行读取后,使用protobuf进行序列化压缩(语音音频数据和对应的音频参数字段信息,这里还包括语音识别服务模式),形成语音识别请求,按照语音识别服务模式,将该请求发送到服务端。服务端按照约定即定义的接口代码,通过protobuf反序列化,还原出原始的语音音频数据,再结合音频参数字段信息比如音频格式、采样率等,转换音频数据为统一的pcm数据格式,通过参数字段信息中指示的语音识别服务模式,结合音频格式和采样率等,选择对应的kaldi语音模型,采用深度神经网络,例如fsmn或tdnn或tdnnf结构进行语音年龄和/或性别识别,对音频内容进行语音识别的解码。服务端对解码识别出的语音识别结果,同样依据定义的接口代码,利用protobuf序列化压缩该结果,对应该语音识别服务模式发送回请求语音识别的客户端。客户端接收到服务端的回复,对识别结果进行反序列化后,输出(图像/视频、文字、音频等方式)该识别结果,完成语音识别服务的调用。

本发明使用protobuf对语音音频数据进行序列化以及对识别结果序列化,都极大提升了大音频文件网络传输的效率;并且,基于grpc远程过程调用这种轻量级的框架(结合protobuf建立的轻便语音识别引擎),实现语音识别核心算法,且基于grpc的流式和非流式传输能有效实时在线语音识别和非实时语音识别的部署难题,同时兼具高灵活性、可扩展性以及具备工业部署的并发能力,其在多语言客户端的支持上具备较强的优势。

下面结合图1、2所示本发明的实现语音年龄和/或性别识别服务的方法的一个实施例的主要流程图对本发明的实现进行说明。

步骤s110,基于预先定义的grpc服务接口代码,读取待识别的语音音频数据,并选择相应的语音识别服务模式。

具体地,主要是先定义语音识别服务.proto文件服务方法和交互字段;预先定义语音识别服务的功能以及音频格式,采样率等交互字段。

一个实施方式中,所述预先定义的过程具体包括:根据grpc的protobuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的grpc的protobuf协议。其中,客户端读取待识别的语音音频数据,并获得相应的该语音音频数据的音频格式、采样率、音频长度等等参数数据,这些参数数据包括该语音音频数据可以按照预先定义的参数字段名称、参数字段内容等对应放入形成参数字段信息,并在后续序列化编码压缩以便进行高效率的传输。其中,这些字段主要是交互字段,需要服务端和客户端能够获取这些字段信息并使用,所述语音识别是识别语音中的年龄和/或性别,即语音识别请求是请求通过语音对用户的年龄和/或性别进行识别。

然后,根据所述protobuf协议编译生成进行grpc语音识别服务的客户端与服务端的grpc服务接口代码,以便进行客户端和服务端(服务器等)之间的远程调用。这里的grpc定义,就是为了建立服务端和客户端之间实现远程调用的grpc服务接口代码,从而,通过接口代码协议进行客户端对服务端的各种应用程序等的调用,尤其是特定的有针对性的语音识别模型的调用。其中,具有所述grpc服务接口代码的客户端为经grpc定义的客户端,而具有所述grpc服务接口代码的服务端为经grpc定义的服务端。根据该接口代码协议,服务端结合cpu运行,有针对性的语音识别模型的选择和使用,形成了模块化的管理。也就是说,可以使用各种语言对应的protobuf编译器生成客户端和服务端的接口代码,并基于该grpc接口代码,尤其是服务端的该代码实现语音识别核心算法。

进一步,读取待识别的语音音频数据的该客户端,即为经grpc定义的客户端,其支持使用各种语言,或者说是不同语言的客户端,不受语言类型的限制。其根据protobuf结构定义的.proto文件并将其编译生成类(包括grpc服务接口和传输字段,即grpc服务接口代码),可以读取音频文件,进而向grpc远程调用的语音服务端例如服务器发起远程请求。

进一步,经grpc定义的客户端在读取待识别的所述语音音频数据时就可以选择相应的语音识别模式。其中,所述语音识别服务模式包括:双向流式的实时语音识别和非流式的一句话语音识别。

具体地,grpcsimple模式用于非流式调用远程语音识别服务,如果所述客户端选用了该非流式服务时,一次将音频完整传输到服务端,服务端的语音识别服务一次性识别完成后一次性返回识别结果。

具体地,grpcstream模式用于双向流调用远程语音识别服务,如果所述客户端选用了该流式服务时,将大音频数据分段传输至服务端,语音识别服务对接收的音频数据进行分段解码,分段返回识别的结果,从而完成实时语音识别的功能。

步骤s120,利用protobuf结构对待识别的所述语音音频数据、以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩,以形成语音识别请求。

一个实施方式中,基于所述预先定义的grpc服务接口代码,由所述经grpc定义的客户端,利用protobuf结构对所有参数字段信息,即读取的待识别的所述语音音频数据以及相应于所述语音音频数据的音频参数字段信息(采样率、音频格式、语音服务模式、音频长度等等),进行序列化编码压缩后形成了二进制序列的语音识别请求,其为远程请求。

其中,将传输的语音音频数据以及各种相应该语音音频数据的音频参数字段信息作为语音识别请求,进行序列化编码,进而可选择数据压缩。

一个实施方式中,可以通过麦克风或麦克风阵列采集说话的人音频,一般在1-2秒以上。

步骤s130,调用选择的所述语音识别服务模式向经grpc定义的服务端发送所述语音识别请求,以远程调用对应所述语音识别请求的kaldi语音识别服务模型进行语音识别。

一个实施方式中,在发送该远程请求(例如,所述语音识别请求)时,是调用预先选择的语音识别服务模式向经grpc定义的服务端发送的。发送到经grpc定义的服务端后,所述服务端能根据该语音识别请求中的除了待识别的语音音频数据外的音频参数字段信息,确定要选择哪个合适的kaldi语音识别服务模型来进行语音识别,并对该语音音频数据进行识别处理。该远程调用仅仅是针对性对需要的或者说适配的语音识别模型进行选择并运行,实现了模块化并更容易管理、更容易扩展,而服务端的语音识别模型的更新迭代改变等都不会影响到客户端远程调用实现语音识别的效果,灵活且可扩展性强。

步骤s240,接收经grpc定义的客户端发送的语音识别请求,其中,所述语音识别请求中包括经过序列化的待识别的语音音频数据和音频参数字段信息。

具体地,所述语音识别请求即调用服务端的语音识别服务的远程请求。参见前述步骤s120所述。根据所述grpc服务接口代码,服务端能接收此请求对服务端上的语音识别服务的远程调用。

步骤s250,基于预先定义的grpc服务接口代码,对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息。

一个实施方式中,由于预先定义的grpc服务接口代码表示具有该接口代码的服务端即为经grpc定义的服务端,其能够通过protobuf结构进行序列化和反序列化操作。因而,对接收到的基于grpc框架形成远程调用关系的客户端来的远程请求(例如所述语音识别请求),即可通过protobuf结构对所述语音识别请求进行逆向反序列化操作,直接解码得到原始音频语音数据。

进一步,由于二进制字段序列化和反序列化操作都快速且简单,既能提升传输速度也能提升读取字段信息的速度,能迅速从参数字段信息中将参数数据都提取出来。其中,参数字段信息除了待识别的语音音频数据外,音频参数字段信息相应地,至少可以包括:音频格式、采样率和语音识别服务模式的字段信息。

步骤s260,根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成pcm数据格式的音频数据。

一个实施方式中,可以根据请求中的音频参数字段信息中的定义的音频格式和采样率(诸如此类定义的各个交互字段的字段内容)等对相应的待识别的所述语音音频数据进行解析,即分析传输来的该语音音频数据对应的音频格式字段,根据不同的音频格式对该语音音频数据进行解码操作后实现格式转换,这样可以主要是将待识别的所述语音音频数据统一转换成所述pcm数据格式的音频数据,统一的音频格式更方便后续的语音识别。

步骤s270,根据所述音频参数字段信息选择对应的kaldi语音识别服务模型,以对所述转换成pcm数据格式的音频数据进行解码并得到识别结果。

一个实施方式中,可以根据音频参数字段中的例如采样率和音频格式、甚至语音服务模式等,字段定义的各种模型参数,来选择需要对应哪种格式、使用哪个kaldi语音识别模型,例如:fsmn、tdnn、tdnnf等。如图5所示优选fsmn的例子。进而,选定了对应的模型,就可以利用该模型对输出的已经转换成pcm数据格式的音频数据(待识别的语音音频数据)进行语音识别,即解码转写等,进而得到识别结果并输出。

参照图4,服务器端使用深度神经网络模型进行语音年龄识别或语音性别识别。语音年龄识别算法可以是tdnn,tdnnf,fsmn模型。优选地,以fsmn模型为例,该模型包含10层fsmn,每两层之间采用跳层连接,每层中a*b的意思是上下文关系为a,步幅为b。所述fsmn结构损失函数采用交叉熵corssentropy,当连续2个epoch的loss不再降低时,即认为神经网络训练达到可以使用的效果。为了使所述模型能够正常读取输入信号,对输入到模型的信号,进行特征提取,特征提取方法包括但不限于对输入信号进行傅里叶变换、短时傅里叶变换、分帧、加窗、预加重、梅尔滤波器、离散余弦变换其中一个或多个信号处理方式。

更具体地,在服务器端使用深度神经网络模型进行语音年龄识别或语音性别识别。语音年龄识别算法可以是tdnn,tdnnf,fsmn模型。以前向序列记忆网络/前馈序列记忆网络fsmn模型为例,所述前向序列记忆网络包括有多层深度前向序列记忆网络,每两层深度前向序列记忆网络之间设置有跳跃连接,且在深度前向序列记忆网络中上下文关系和步幅发生变化后进行跳跃连接;其中,不同层中深度前向序列记忆网络的记忆模块的大小不同,且依据层级从小到大,对应的记忆模块也从小到大。在深度前向序列记忆网络中的上下文关系和步幅发生变化后进行跳跃连接,将当前次跳跃连接的梯度分别传输至下一次跳跃连接和间隔两层后的深度前向序列记忆网络。训练阶段:利用降采样和/或升采样将所述作为训练的一个或多个语音音频的格式进行统一转换。例如通过一定的采样率来进行采样;采样率也称为采样速度或者采样频率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(hz)来表示;采样频率的倒数是采样周期或者采样时间,它是采样之间的时间间隔;通俗的讲采样频率是指计算机每秒钟采集多少个信号样本。常见的音频格式包括但不限于:wav、pcm、mp3、ape、wma等音频格式。

然后,转换成统一格式,比如转换后的音频格式至少包括:wav格式和/或pcm格式(即在部署应用时,该模型能够对该格式的音频数据进行识别)。

进一步,还可以让分类模型(如fsmn)能够正常读取输入音频信号,可以先对音频信号做特征提取处理。例如,可以通过特征提取方法对作为训练的一个或多个语音音频进行特征信号处理,将作为训练的一个或多个语音音频的波形转换为特征向量序列。对输入到模型的信号,进行特征提取的方式所述特征提取方法包括但不限于:快速傅里叶变换、短时傅里叶变换、分帧、加窗、预加重、梅尔滤波器、离散余弦变换其中一个或多个信号处理方式。

在图5的例子中,该模型包含10层深度fsmn,每两层之间采用跳层连接(每两层之间有shortcut)。通过设置跳跃连接shortcut,可以优化深度前向序列记忆网络dfsmn的梯度传递,使深度前向序列记忆网络dfsmn的梯度实现更好的传递,从而让模型训练效果更加优异。在深度前向序列记忆网络中上下文关系和步幅发生变化后进行跳跃连接shortcut,即在每层深度前向序列记忆网络中a*b发生变化后进行跳跃连接shortcut,并且在进行跳跃连接shortcut时,分别将当前次跳跃连接shortcut的梯度发送至下一次跳跃连接shortcut,以及发送给间隔两层后的深度前向序列记忆网络fsmn(deep-fsmn/dfsmn)。其中,每层中a*b的意思是上下文关系为a,步幅为b。例如4×1dfsmn表示上下文关系为4,步幅为1;8×1dfsmn表示上下文关系为8,步幅为1;6×2dfsmn表示上下文关系为6,步幅为2;10×2dfsmn表示上下文关系为10,步幅为2。

年龄识别例1:当4×1dfsmn变化为8×1dfsmn后,8×1dfsmn对应的深度前向序列记忆网络dfsmn开始进行跳跃连接shortcut,向6×2dfsmn所对应的深度前向序列记忆网络dfsmn传递梯度,以及向下一次跳跃连接shortcut传递梯度。不同层中深度前向序列记忆网络的记忆模块memoryblock的大小不同,且依据层级从小到大,对应的记忆模块memoryblock也从小到大。而4×1dfsmn所在层的层级小于8×1dfsmn所在层的层级,8×1dfsmn所在层的层级小于6×2dfsmn所在层的层级,依次类推。

性别识别例1:当8×1dfsmn变化为6×2dfsmn后,6×2dfsmn对应的深度前向序列记忆网络dfsmn开始进行跳跃连接shortcut,向10×2dfsmn所对应的深度前向序列记忆网络dfsmn传递梯度,以及向下一次跳跃连接shortcut传递梯度。不同层中深度前向序列记忆网络的记忆模块memoryblock的大小不同,且依据层级从小到大,对应的记忆模块memoryblock也从小到大。对应于图4中,4×1dfsmn所在层的层级小于8×1dfsmn所在层的层级,8×1dfsmn所在层的层级小于6×2dfsmn所在层的层级,依次类推。

该训练阶段,所述fsmn结构损失函数采用交叉熵corssentropy,当连续2个epoch的loss不再降低时,即认为神经网络训练达到可以使用的效果,将该神经网络训练后生成的分类模型作为最终的分类模型。该模型除了输出年龄和/或性别的识别结果,并可以将结果以文字的形式输出一个或多个目标对象的年龄和/或性别即识别结果。具体地,训练时,每个音频样本可以包含一句人声,以及对应的年龄和/或性别标签,老年人数量较少,可以在筛选过程中平衡年轻人、儿童和老年人的比例,年龄标签会进一步被处理成几个年龄段分档,儿童、青少年、成年人、老年人;然后,训练时采用交叉熵损失函数判断分类结果与标签的kl散度,当交叉熵逐步下降到随着实验继续进行都基本不改变的情况下就认为训练结束;模型结构在fsmn后加了两层time-restrictedselfattention网络,与普通的self-attention网络相比在于提取一定时间内的音频的上下文信息有利于模型推理速度提升。

其中,训练后的能够进行语音年龄和/或性别识别该深度神经网络模型,位于服务端等待调用,而不必部署到终端或本地以保证模型的灵活性和可扩展性。

一个实施方式中,根据音频参数信息比如所述音频格式和所述采样率、甚至语音(年龄和/或性别)识别服务模式确定应当选择的语音识别模型,可以包括:对应音频格式、采样率以及该模式是年龄和/或性别的服务,则调用语音年龄和/或性别识别的模型。比如,确定了语音年龄和/或性别识别服务模式,确定应当选取对应的语音年龄和/或性别识别深度神经网络,再结合采样率和音频格式,确定对应调用使用的模型假设是能支持该采样率和音频格式的该fsmn模型。

步骤s280,将所述识别结果序列化后发送回所述经grpc定义的客户端。

一个实施方式中,可以先对模型刚识别出的识别结果进行序列化(序列化编码压缩),具体例如通过protobuf结构对所述识别结果进行序列化编码压缩;进一步,在发送回客户端时,服务端可以根据音频参数字段信息中带的语音识别模式指示的双向流式还是非流式,调用相应的结果返回逻辑,通过该结果返回逻辑将序列化后的识别结果发送回经grpc定义的客户端。

进一步,语音识别服务模式通常有两种:双向流式的实时语音识别和非流式的一句话语音识别。相应地,服务端调用的结果返回逻辑可以是,针对所述非流式,为一次性返回识别结果,针对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果。

步骤s290,接收来自所述经grpc定义的服务端对待识别的所述语音音频数据进行识别所获得的识别结果,进而对接收的所述识别结果利用所述protobuf结构进行反序列化后并输出。

其中,接收到识别结果后,同样以grpc服务接口代码为基础,该识别结果是服务端通过protobuf结果进行了序列化编码压缩的,传输快,且到客户端反序列化也能快速读取字段,提取信息,这里提取的是对应待识别的语音音频数据的识别结果。并且,输入识别结果的方式也多样,可以包括音频输出或者视频、图像、文字等显示输出。

下面结合图2所示本发明的实现语音年龄和/或性别识别服务的系统的一个实施例的主要结构框图对本发明的实现进行说明。

客户端210,支持多种语言(例如:各种语音音频数据读取)。

提供语音识别服务的服务端,这里以服务器220为例,其提供各种语音识别服务模型,以适应客户端210的远程服务调用。

一个实施方式中,该实现语音年龄和/或性别识别服务的系统为一个client/server即客户机/服务器架构。

具体地,所述客户端/终端210即基于grpc实现kaldi语音识别服务(语音年龄和/或性别识别服务)的客户端,其支持多种语言,并经grpc定义;所述服务器220即基于grpc实现kaldi语音识别服务(语音年龄和/或性别识别服务)的服务器,也经grpc定义。预先定义实际上是为了建立grpc/protobuf架构下的语音识别引擎而实现客户端和服务器之间的远程调用,更具体就是建立客户端与服务器之间远程能实现远程服务调用的grpc服务接口代码,该grpc服务接口代码是基于语音识别服务建立的。该建立是一个预先定义的过程,该过程具体包括:根据grpc的protobuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的grpc的protobuf协议;根据所述protobuf协议编译生成进行grpc语音识别服务的客户端与服务器的grpc服务接口代码。grpc服务接口代码可以规划客户端和服务器各自的功能/服务模块,具有所述grpc服务接口代码的客户端210和服务器220分别为经grpc定义的客户端和经grpc定义的服务器。

一个实施方式中,所述客户端210至少包括:

grpc客户端模块2101,用于基于预先定义的grpc服务接口代码,读取待识别的语音音频数据,并且调用读取时该语音音频数据时在grpc模式选择模块2102选择的语音年龄和/或性别识别服务模式,向服务器220发送在protobuf序列化模块2103形成的语音识别请求,以便远程调用对应所述语音识别请求的kaldi语音识别服务模型进行语音识别,所述语音识别请求用于识别年龄和/或性别。

grpc模式选择模块2102,用于在所述grpc客户端模块读取待识别的语音音频数据时选择相应的语音识别服务模式。对应不同的语音音频数据,有不同的识别需求,可以选择相应的语音识别服务模式。

语音识别服务模式比如有:进行实时语音识别的双向流式grpcstream,以及进行一句话识别的非流式等grpcsimple。相应地,服务器220在识别和/或返回结果,会参考该模式,选择模型识别并选择匹配语音服务模式的结果返回逻辑。

protobuf序列化模块2103,用于利用protobuf结构对待识别的所述语音音频数据、以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩,以形成语音识别请求,还用于对接收的所述识别结果利用所述protobuf结构进行反序列化并输出。

所述grpc客户端模块2101,还用于:接收来自所述经grpc定义的服务器220对待识别的所述语音音频数据进行识别所获得的识别结果。其中,所述经grpc定义的服务端,在识别了语音得到识别结果时,会先利用所述protobuf结构对所述识别结果进行序列化编码,甚至数据压缩,然后,根据所述语音识别服务模式(例如:grpcsimpleorgrpcstream)来调用相应的结果返回逻辑对所述识别结果进行返回。当客户端210通过grpc客户端模块2101接收到返回的序列化识别结果时,调用protobuf序列化模块2103通过protobuf结构反序列化后输出识别结果,该输出例如显示输出、音频输出等。

一个实施方式中,所述服务器220至少包括:

接收模块2201,用于接收经grpc定义的客户端发送的语音识别请求,其中,所述语音识别请求中包括经过序列化的待识别的语音音频数据和音频参数字段信息。其中,接收模块2201所接收的所述语音识别请求,具体是:由所述经grpc定义的客户端210,通过其protobuf序列化模块2103利用protobuf结构对读取的待识别的所述语音音频数据以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩后形成的、并调用预先选择的语音识别服务模式向所述服务器所发送的远程请求。

序列化模块2202,用于基于预先定义的grpc服务接口代码,对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息;以及,用于对识别结果进行序列化操作。其具体还包括:protobuf反序列化单元22021,用于通过protobuf结构对所述语音识别请求进行反序列化操作。其中,音频参数字段信息至少包括:音频格式、采样率和语音识别服务模式等字段信息。语音识别服务模式是所述经grpc定义的客户端210在其grpc客户端模块2101读取待识别的语音音频数据时,对应要识别的这些音频数据而利用grpc模式选择模块2102选择的。其他交互字段(参数字段信息)比如采样率和音频格式、音频长度等也都是对应读取的待识别的该语音音频数据而记录的。进一步,还包括protobuf序列化单元22022,用于通过protobuf结构对选择的对应的kaldi语音识别模型对待识别的语音音频数据完成识别后,得出的识别结果,进行序列化编码,甚至压缩数据后形成识别结果序列化数据。同样,protobuf结构可以序列化或逆序列化,编码数据或解码数据。

音频数据解析模块2203,用于根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成pcm数据格式的音频数据。其具体还包括:解析转换单元22031,用于根据所述音频格式对相应的待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成所述pcm数据格式的音频数据。该转换利用交互字段中的音频格式,甚至可以结合待识别语音音频数据的该交互字段中的采样率,对语音音频数据分析和解码,对应该音频格式转换成pcm数据格式。即任何一种格式的语音音频数据,都可以解析转换其格式为pcm数据格式,能适应各种语言的语音识别。

语音识别核心算法模块2204,用于根据所述音频参数字段信息选择对应的kaldi语音识别服务模型,以对所述转换成pcm数据格式的音频数据进行解码并得到识别结果。其具体还包括:识别单元22041,用于根据交互字段中提取的所述音频格式和所述采样率、甚至语音识别服务模式等等,选择对应的kaldi语音识别模型,并且,利用选择好的对应的所述kaldi语音识别模型对所述转换成pcm数据格式的音频数据进行语音识别解码并得到识别结果。

服务器端使用深度神经网络模型进行语音年龄识别或语音性别识别。语音年龄识别算法可以是tdnn,tdnnf,fsmn模型。以前向序列记忆网络/前馈序列记忆网络fsmn模型为例,所述前向序列记忆网络包括有多层深度前向序列记忆网络,每两层深度前向序列记忆网络之间设置有跳跃连接,且在深度前向序列记忆网络中上下文关系和步幅发生变化后进行跳跃连接;其中,不同层中深度前向序列记忆网络的记忆模块的大小不同,且依据层级从小到大,对应的记忆模块也从小到大。在深度前向序列记忆网络中的上下文关系和步幅发生变化后进行跳跃连接,将当前次跳跃连接的梯度分别传输至下一次跳跃连接和间隔两层后的深度前向序列记忆网络。训练阶段:利用降采样和/或升采样将所述作为训练的一个或多个语音音频的格式进行统一转换。例如通过一定的采样率来进行采样;采样率也称为采样速度或者采样频率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(hz)来表示;采样频率的倒数是采样周期或者采样时间,它是采样之间的时间间隔;通俗的讲采样频率是指计算机每秒钟采集多少个信号样本。常见的音频格式包括但不限于:wav、pcm、mp3、ape、wma等音频格式。

然后,转换成统一格式,比如转换后的音频格式至少包括:wav格式和/或pcm格式(即在部署应用时,该模型能够对该格式的音频数据进行识别)。

进一步,还可以让分类模型(如fsmn)能够正常读取输入音频信号,可以先对音频信号做特征提取处理。例如,可以通过特征提取方法对作为训练的一个或多个语音音频进行特征信号处理,将作为训练的一个或多个语音音频的波形转换为特征向量序列。对输入到模型的信号,进行特征提取的方式所述特征提取方法包括但不限于:快速傅里叶变换、短时傅里叶变换、分帧、加窗、预加重、梅尔滤波器、离散余弦变换其中一个或多个信号处理方式。

在图5的例子中,该模型包含10层深度fsmn,每两层之间采用跳层连接(每两层之间有shortcut)。通过设置跳跃连接shortcut,可以优化深度前向序列记忆网络dfsmn的梯度传递,使深度前向序列记忆网络dfsmn的梯度实现更好的传递,从而让模型训练效果更加优异。在深度前向序列记忆网络中上下文关系和步幅发生变化后进行跳跃连接shortcut,即在每层深度前向序列记忆网络中a*b发生变化后进行跳跃连接shortcut,并且在进行跳跃连接shortcut时,分别将当前次跳跃连接shortcut的梯度发送至下一次跳跃连接shortcut,以及发送给间隔两层后的深度前向序列记忆网络fsmn(deep-fsmn/dfsmn)。其中,每层中a*b的意思是上下文关系为a,步幅为b。例如4×1dfsmn表示上下文关系为4,步幅为1;8×1dfsmn表示上下文关系为8,步幅为1;6×2dfsmn表示上下文关系为6,步幅为2;10×2dfsmn表示上下文关系为10,步幅为2。

年龄识别例1:当4×1dfsmn变化为8×1dfsmn后,8×1dfsmn对应的深度前向序列记忆网络dfsmn开始进行跳跃连接shortcut,向6×2dfsmn所对应的深度前向序列记忆网络dfsmn传递梯度,以及向下一次跳跃连接shortcut传递梯度。不同层中深度前向序列记忆网络的记忆模块memoryblock的大小不同,且依据层级从小到大,对应的记忆模块memoryblock也从小到大。而4×1dfsmn所在层的层级小于8×1dfsmn所在层的层级,8×1dfsmn所在层的层级小于6×2dfsmn所在层的层级,依次类推。

性别识别例1:当8×1dfsmn变化为6×2dfsmn后,6×2dfsmn对应的深度前向序列记忆网络dfsmn开始进行跳跃连接shortcut,向10×2dfsmn所对应的深度前向序列记忆网络dfsmn传递梯度,以及向下一次跳跃连接shortcut传递梯度。不同层中深度前向序列记忆网络的记忆模块memoryblock的大小不同,且依据层级从小到大,对应的记忆模块memoryblock也从小到大。对应于图4中,4×1dfsmn所在层的层级小于8×1dfsmn所在层的层级,8×1dfsmn所在层的层级小于6×2dfsmn所在层的层级,依次类推。

该训练阶段,所述fsmn结构损失函数采用交叉熵corssentropy,当连续2个epoch的loss不再降低时,即认为神经网络训练达到可以使用的效果,将该神经网络训练后生成的分类模型作为最终的分类模型。该模型除了输出年龄和/或性别的识别结果,并可以将结果以文字的形式输出一个或多个目标对象的年龄和/或性别即识别结果。具体地,训练时,每个音频样本可以包含一句人声,以及对应的年龄和/或性别标签,老年人数量较少,可以在筛选过程中平衡年轻人、儿童和老年人的比例,年龄标签会进一步被处理成几个年龄段分档,儿童、青少年、成年人、老年人;然后,训练时采用交叉熵损失函数判断分类结果与标签的kl散度,当交叉熵逐步下降到随着实验继续进行都基本不改变的情况下就认为训练结束;模型结构在fsmn后加了两层time-restrictedselfattention网络,与普通的self-attention网络相比在于提取一定时间内的上下文的音频信息有利于模型推理速度提升。

其中,训练后的能够进行语音年龄和/或性别识别该深度神经网络模型,位于服务端等待调用,而不必部署到终端或本地以保证模型的灵活性和可扩展性。

一个实施方式中,根据音频参数信息比如所述音频格式和所述采样率、甚至语音(年龄和/或性别)识别服务模式确定应当选择的语音识别模型,可以包括:对应音频格式、采样率以及该模式是年龄和/或性别的服务,则调用语音年龄和/或性别识别的模型。比如,确定了语音年龄和/或性别识别服务模式,确定应当选取对应的语音年龄和/或性别识别深度神经网络,再结合采样率和音频格式,确定对应调用使用的模型假设是能支持该采样率和音频格式的该fsmn模型。

返回模块2205,用于在经所述序列化模块对所述识别结果进行序列化后发送回所述经grpc定义的客户端。具体地还包括:返回逻辑单元22051,用于根据所述语音识别服务模式调用相应的结果返回逻辑,以将序列化编码压缩后的所述识别结果发送回所述经grpc定义的客户端。其中,所述语音识别服务模式就是之前交互字段中提供的,与客户端210按照该模式传送语音识别请求时相对应的服务模式。主要包括两种模式:实时语音识别的双向流式和一句话语音识别的非流式。其中,所述结果返回逻辑包括:对所述非流式为一次性返回识别结果,对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果。

下面结合图3所示的应用时交互过程的例子,进一步对本发明的远程调用实现语音识别进行说明。

建立基于protobuf和grpc远程过程调用的语音识别服务引擎。如前述方法和系统所述的先进行定义后得到经grpc定义的客户端(如客户机)和服务端(如服务器),二者之间的远程传输,能通过protobuf对语音音频数据进行序列化与反序列化,极大的减少大文件音频网络传输开销,提高传输速率。这里,客户端和服务端而采用的grpc远程过程调用的框架,是基于http/2.0的远程过程调用框架,能构结合多线程技术,解决单向、双向流高效传输与服务响应,即能应对实时和非实时模式的语音识别服务。在定义过程中,通过protobuf结构定义字段编译的.proto文件类,在服务器和客户机之间根据该协议类,客户机可以将读取到的待识别的语音音频数据通过该协议的protobuf结构序列化后快速传输到服务器,并从服务器接收同样由protobuf结构序列化后的识别结果反序列化后向用户输出识别结果。而在服务器一侧,则依据protobuf序列化/反序列化功能,对接收到该序列化的包含了待识别的语音音频数据的语音识别服务请求,同样反序列化后得到原始语音音频和交互字段即与解析该音频有关的各种参数,将原始的语音音频数据按照其音频格式、甚至采样率的情况分析和解码,以pcm数据格式为目标,转换成该pcm数据格式的音频数据,即音频数据解析,解析后输出的pcm数据格式的音频数据就可以按照选择的语音识别模型完成识别,即调用语音核心算法对kaldi解码器解耦或模块化;同样通过protobuf序列化/反序列化功能将识别结果序列化后,按照客户端远程调用时语音识别服务请求所要求的语音识别服务模式:双向流或非流式,控制返回逻辑,返回该序列化的识别结果。这样,服务器的资源被充分调动并极大的提高了资源利用率,仅需要直接调用相应的服务器(包括多服务器、云服务器状态或单服务器)的语音识别服务的各个功能(包括分块管理的各识别模型)等等,解决了并发量支持不够的问题。其对kaldi解码器进行解耦和模块化,结合gpu,有效实现语音识别核心算法与多模型管理,并通过grpc轻量级的框架与语音识别核心算法相分离的引擎架构,可以对语音算法进行快速,便捷的优化与更新迭代而无需受客户端和语言变化语言格式等影响。

并且,整个框架通过protobuf协议服务与字段定义,可灵活选择不同音频格式与不同采样率的语音识别模型,也可自由扩展当前语音算法引擎的功能等。

根据本发明前述实施例的描述可知,本发明主要基于grpc的远程调用,利用protobuf进行客户端和服务端(服务器)接口定义,实现远程语音识别调用服务,而以往业内的语音识别服务引擎,多以websocket服务,tensorflowserving的方式对外提供语音识别服务,使用起来不够灵活,双向流的实时语音识别实现较为困难,耗费资源较多,部署在低资源服务器上多有不便。通过本发明的方案,设计的这一套基于protobuf和grpc远程过程调用的语音识别服务引擎,完全能够有效地灵活部署、扩展性强、资源利用率高、并发能力强、传输快、识别效果好,且核心算法更新迭代优化便捷。

本发明的具体优点如下:

(1)基于grpc的轻量级的语音识别系统,能解决各种目标对象进行年龄和/或性别的语音识别的复杂的这类大型的经常会更新变动的kaldi模型工业部署应用较为困难的问题,使得算法模型可以无需进行onnx转换,无需依赖于固定的tfserving推理框架,具备更好的灵活性与可扩展性的同时,极大提高了服务器资源利用率与语音识别服务并发量。

(2)使用grpc与protobuf对语音音频文件进行序列化压缩,减小传输数据大小,提高传输效率,减少大文件传输时延。

(3)通过模块化开发语音识别核心算法的语音年龄和/或性别识别模型,结合protobuf协议制定的年龄和/或性别服务模式,可同时支持多种音频格式,与不同采样率模型的需求,能交叉搭配更多的音频格式和采样率,确定目标对象的年龄和/或性别,并且,模块化方式可以很方便的动态扩展各类语音相关功能,灵活便捷地更新模型而不影响终端以及调用方式。

(4)不同语言(c/c ,python,go,java,php,oc等)的客户端根据定义好的proto协议,构建服务简单,各自生成自己不同语言的客户端程序,能够方便快捷的使用语音识别服务。

进一步,本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,所述存储介质中存储有多条程序代码,所述程序代码适用于由处理器加载并运行以执行前述的各个实现语音年龄和/或性别识别服务的方法的步骤。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该存储装置可以是包括各种电子设备形成的存储装置设备,可选的,本发明实施例中存储是非暂时性的计算机可读存储介质。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

进一步,本发明还提供了一种处理装置,其包括处理器和存储器,存储器可以被配置成存储多条程序代码,所述程序代码适于由该处理器加载并运行以执行前述各个实现语音年龄和/或性别识别服务的方法的步骤。具体地,的硬件结构如图6、7所示。

该装置可以包括:输入设备1100、第一处理器1101、输出设备1102、第一存储器1103和至少一个通信总线1104。通信总线1104用于实现元件之间的通信连接。第一存储器1103可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,第一存储器1103中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。

可选的,上述第一处理器1101例如可以为中央处理器(centralprocessingunit,简称cpu)、应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,该处理器1101通过有线或无线连接耦合到上述输入设备1100和输出设备1102。

可选的,上述输入设备1100可以包括多种输入设备,例如可以包括面向用户的用户接口、面向设备的设备接口、软件的可编程接口、摄像头、传感器中至少一种。可选的,该面向设备的设备接口可以是用于设备与设备之间进行数据传输的有线接口、还可以是用于设备与设备之间进行数据传输的硬件插入接口(例如usb接口、串口等);可选的,该面向用户的用户接口例如可以是面向用户的控制按键、用于接收语音输入的语音输入设备以及用户接收用户触摸输入的触摸感知设备(例如具有触摸感应功能的触摸屏、触控板等);可选的,上述软件的可编程接口例如可以是供用户编辑或者修改程序的入口,例如芯片的输入引脚接口或者输入接口等;输出设备1102可以包括显示器、音响等输出设备。在本实施例中,该装置的处理器包括用于执行各设备中语音识别装置各模块的功能,具体功能和技术效果参照上述实施例即可,此处不再赘述。

图7为本申请的另一个实施例提供的装置的硬件结构示意图。图7是对图6在实现过程中的一个具体的实施例。如图所示,本实施例的装置可以包括第二处理器1201以及第二存储器1202。

第二处理器1201执行第二存储器1202所存放的计算机程序代码,实现上述实施例中图1所述方法。第二存储器1202被配置为存储各种类型的数据以支持在装置的操作。这些数据的示例包括用于在装置上操作的任何应用程序或方法的指令,例如消息,图片,视频等。第二存储器1202可能包含随机存取存储器(randomaccessmemory,简称ram),也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

可选地,第一处理器1201设置在处理组件1200中。该装置还可以包括:通信组件1203,电源组件1204,多媒体组件1205,语音组件1206,输入/输出接口1207和/或传感器组件1208。装置具体所包含的组件等依据实际需求设定,本实施例对此不作限定。

处理组件1200通常控制装置的整体操作。处理组件1200可以包括一个或多个第二处理器1201来执行指令,以完成上述图1所示方法的全部或部分步骤。此外,处理组件1200可以包括一个或多个模块,便于处理组件1200和其他组件之间的交互。例如,处理组件1200可以包括多媒体模块,以方便多媒体组件1205和处理组件1200之间的交互。电源组件1204为装置的各种组件提供电力。电源组件1204可以包括电源管理系统,一个或多个电源,及其他与为装置生成、管理和分配电力相关联的组件。多媒体组件1205包括在装置和用户之间的提供一个输出接口的显示屏。在一些实施例中,显示屏可以包括液晶显示器(lcd)和触摸面板(tp)。如果显示屏包括触摸面板,显示屏可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。语音组件1206被配置为输出和/或输入语音信号。例如,语音组件1206包括一个麦克风(mic),当装置处于操作模式,如语音识别模式时,麦克风被配置为接收外部语音信号。所接收的语音信号可以被进一步存储在第二存储器1202或经由通信组件1203发送。在一些实施例中,语音组件1206还包括一个扬声器,用于输出语音信号。

输入/输出接口1207为处理组件1200和外围接口模块之间提供接口,上述外围接口模块可以是点击轮,按钮等。这些按钮可包括但不限于:音量按钮、启动按钮和锁定按钮。

传感器组件1208包括一个或多个传感器,用于为装置提供各个方面的状态评估。例如,传感器组件1208可以检测到装置的打开/关闭状态,组件的相对定位,用户与装置接触的存在或不存在。传感器组件1208可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在,包括检测用户与装置间的距离。在一些实施例中,该传感器组件1208还可以包括摄像头等。

通信组件1203被配置为便于装置和其他设备之间有线或无线方式的通信。装置可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个实施例中,该装置中可以包括sim卡插槽,该sim卡插槽用于插入sim卡,使得装置可以登录gprs网络,通过互联网与服务器建立通信。

由上可知,在图7实施例中所涉及的通信组件1203、语音组件1206以及输入/输出接口1207、传感器组件1208均可以作为图6实施例中的输入设备的实现方式。

进一步,本发明还提供了一种实现语音年龄和/或性别识别服务的系统,其包括了前述各个实现语音年龄和/或性别识别服务的客户端/终端及服务器。

需要指出的是,尽管上述实施例中将各个步骤按照特定的先后顺序进行了描述,但是本领域技术人员可以理解,为了实现本发明的效果,不同的步骤之间并非必须按照这样的顺序执行,其可以同时(并行)执行或以其他顺序执行,这些变化都在本发明的保护范围之内。

进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的系统的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。

本领域技术人员能够理解的是,可以对系统中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本发明的原理,因此,拆分或合并之后的技术方案都将落入本发明的保护范围内。

至此,已经结合附图所示的一个实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文章

  • 日榜
  • 周榜
  • 月榜