首页> 中国专利> 实现语音年龄和/或性别识别服务的方法、系统及介质

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

摘要

本发明涉及语音识别领域,具体涉及实现语音年龄和/或性别识别服务的方法、系统、装置及介质,旨在解决现有语音年龄和/或性别识别模型远程准确调用和简单便捷地部署的技术问题。为此,根据本发明在预先定义的GRPC框架下终端通过序列化语音年龄/性别识别请求调用服务端,由服务端通过设置的年龄/性别语音识别服务,准确地选择对应的语音年龄/性别识别深度神经网络模型解码确定目标对象的年龄和/或性别的信息并返回终端。由于年龄和/或性别服务模式和远程调用架构设置使得确定模型的类别再调用相应的模型,调用更准确且无需依赖于固定框架,更加灵活性、可扩展性强、资源利用率高、并发度高、同时有利于算法模型的迭代更新。

著录项

  • 公开/公告号CN113192510A

    专利类型发明专利

  • 公开/公告日2021-07-30

    原文格式PDF

  • 申请/专利权人 云从科技集团股份有限公司;

    申请/专利号CN202011591501.3

  • 发明设计人 杨学锐;晏超;

    申请日2020-12-29

  • 分类号G10L15/26(20060101);

  • 代理机构11482 北京瀚仁知识产权代理事务所(普通合伙);

  • 代理人宋宝库;郭婷

  • 地址 511457 广东省广州市南沙区南沙街金隆路37号501房

  • 入库时间 2023-06-19 12:02:28

说明书

技术领域

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

背景技术

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

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

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

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

因而,现有的基于Kaldi HMM-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,以及,训练 时的损失函数采用交叉熵corss entropy。

第二方面,提供一种实现语音年龄和/或性别识别服务的方法, 包括:读取待识别的语音音频数据,并选择相应的语音年龄和/或性别识别 服务模式;利用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,以及,训练 时的损失函数采用交叉熵corss entropy。

第四方面,提供一种实现语音年龄和/或性别识别服务的终端, 包括: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:Feedforward Sequential Memory Network,该模型在很 小的延时下,就能取得与Bi-RNN一样的效果。

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

TDNNF:Factorized TDNN,相比TDNN模型,将因子分解后的两 个矩阵之一限定为半正定,并使用了跳层连接skip connection。

本发明的技术方案主要的实现原理主要为:通过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定义的客户端在读取待识别的所述语音音频数 据时就可以选择相应的语音识别模式。其中,所述语音识别服务模式包括: 双向流式的实时语音识别和非流式的一句话语音识别。

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

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

步骤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结构损失函数采用交 叉熵corss entropy,当连续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传递梯度。不同层中深度前向序列记忆网络的记忆模块 Memory Block的大小不同,且依据层级从小到大,对应的记忆模块Memory Block也从小到大。而4×1DFSMN所在层的层级小于8×1DFSMN所在层的层 级,8×1DFSMN所在层的层级小于6×2DFSMN所在层的层级,依次类推。

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

该训练阶段,所述FSMN结构损失函数采用交叉熵corss entropy, 当连续2个epoch的loss不再降低时,即认为神经网络训练达到可以使用 的效果,将该神经网络训练后生成的分类模型作为最终的分类模型。该模型 除了输出年龄和/或性别的识别结果,并可以将结果以文字的形式输出一个 或多个目标对象的年龄和/或性别即识别结果。具体地,训练时,每个音频样 本可以包含一句人声,以及对应的年龄和/或性别标签,老年人数量较少,可 以在筛选过程中平衡年轻人、儿童和老年人的比例,年龄标签会进一步被处 理成几个年龄段分档,儿童、青少年、成年人、老年人;然后,训练时采用 交叉熵损失函数判断分类结果与标签的KL散度,当交叉熵逐步下降到随着 实验继续进行都基本不改变的情况下就认为训练结束;模型结构在FSMN后 加了两层time-restricted self attention网络,与普通的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客户端模块读取待 识别的语音音频数据时选择相应的语音识别服务模式。对应不同的语音音 频数据,有不同的识别需求,可以选择相应的语音识别服务模式。

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

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

所述GRPC客户端模块2101,还用于:接收来自所述经GRPC定 义的服务器220对待识别的所述语音音频数据进行识别所获得的识别结 果。其中,所述经GRPC定义的服务端,在识别了语音得到识别结果时, 会先利用所述ProtoBuf结构对所述识别结果进行序列化编码,甚至数据 压缩,然后,根据所述语音识别服务模式(例如:GRPC Simple or GRPCStream)来调用相应的结果返回逻辑对所述识别结果进行返回。当客户端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传递梯度。不同层中深度前向序列记忆网络的记忆模块 Memory Block的大小不同,且依据层级从小到大,对应的记忆模块Memory Block也从小到大。而4×1DFSMN所在层的层级小于8×1DFSMN所在层的层 级,8×1DFSMN所在层的层级小于6×2DFSMN所在层的层级,依次类推。

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

该训练阶段,所述FSMN结构损失函数采用交叉熵corss entropy, 当连续2个epoch的loss不再降低时,即认为神经网络训练达到可以使用 的效果,将该神经网络训练后生成的分类模型作为最终的分类模型。该模型 除了输出年龄和/或性别的识别结果,并可以将结果以文字的形式输出一个 或多个目标对象的年龄和/或性别即识别结果。具体地,训练时,每个音频样 本可以包含一句人声,以及对应的年龄和/或性别标签,老年人数量较少,可 以在筛选过程中平衡年轻人、儿童和老年人的比例,年龄标签会进一步被处 理成几个年龄段分档,儿童、青少年、成年人、老年人;然后,训练时采用 交叉熵损失函数判断分类结果与标签的KL散度,当交叉熵逐步下降到随着 实验继续进行都基本不改变的情况下就认为训练结束;模型结构在FSMN后 加了两层time-restricted self attention网络,与普通的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服 务,Tensorflow Serving的方式对外提供语音识别服务,使用起来不够灵 活,双向流的实时语音识别实现较为困难,耗费资源较多,部署在低资源 服务器上多有不便。通过本发明的方案,设计的这一套基于Protobuf和Grpc 远程过程调用的语音识别服务引擎,完全能够有效地灵活部署、扩展性强、 资源利用率高、并发能力强、传输快、识别效果好,且核心算法更新迭代优 化便捷。

本发明的具体优点如下:

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

(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例如可以为中央处理器 (Central ProcessingUnit,简称CPU)、应用专用集成电路(ASIC)、数字 信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、 现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元 件实现,该处理器1101通过有线或无线连接耦合到上述输入设备1100和 输出设备1102。

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

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

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

可选地,第一处理器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实 施例中的输入设备的实现方式。

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

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

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

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

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号