CN112289307B - 基于GRPC实现Kaldi语音识别服务的方法、系统及介质 - Google Patents
基于GRPC实现Kaldi语音识别服务的方法、系统及介质 Download PDFInfo
- Publication number
- CN112289307B CN112289307B CN202011261461.6A CN202011261461A CN112289307B CN 112289307 B CN112289307 B CN 112289307B CN 202011261461 A CN202011261461 A CN 202011261461A CN 112289307 B CN112289307 B CN 112289307B
- Authority
- CN
- China
- Prior art keywords
- grpc
- voice
- voice recognition
- audio data
- recognition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 23
- 238000005070 sampling Methods 0.000 claims description 35
- 238000007906 compression Methods 0.000 claims description 31
- 230000006835 compression Effects 0.000 claims description 31
- 230000002457 bidirectional effect Effects 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 6
- 238000007405 data analysis Methods 0.000 claims description 3
- 230000002452 interceptive effect Effects 0.000 abstract description 10
- 238000006243 chemical reaction Methods 0.000 abstract description 7
- 230000005540 biological transmission Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000013144 data compression Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 235000009421 Myristica fragrans Nutrition 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000001115 mace Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013518 transcription Methods 0.000 description 1
- 230000035897 transcription Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/08—Speech classification or search
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明涉及语音识别领域,具体涉及基于GRPC实现Kaldi语音识别服务的方法及系统,旨在解决现有技术中基于Kaldi的语音识别模型工业部署应用较为困难的技术问题。为此,根据本发明实施例的方法,在预先定义的GRPC框架下服务端接收客户端发送的序列化语音识别请求,进行反序列化得到原始语音音频数据,按照定义的交互字段中的参数解析语音数据以统一转换成PCM数据格式,继续以交互字段中的参数确定的服务需求选择对应的语音识别核心算法模型对该PCM格式的音频进行解码得到识别结果,将识别结果序列化后返回客户端。通过该方法使得语音识别算法经远程调用无需依赖于固定框架,更加灵活性、可扩展性强、资源利用率高、并发度高,且不便于算法模型的迭代更新。
Description
技术领域
本发明涉及语音识别领域,具体涉及一种基于GRPC实现Kaldi语音识别的方法及系统。
背景技术
基于Kaldi HMM-DNN混合架构的语音识别模型在识别语音的能力上有很大优势,但在工业部署与使用的时候非常困难,一般常用的方法是先将Kaldi Nnet3模型通过模型转换工具转换成ONNX模型,然后使用其他的深度学习引擎来使用ONNX模型提供语音识别服务(例如:MACE移动端AI计算引擎),或者是使用Tensorflow Serving的方式进行部署,但这两种方式所使用的框架固定,不易修改,对于语音识别服务来说,灵活性差,扩展性较差,且仅支持Kaldi神经网络推理部分的算子,WFST解码仍需借助Kaldi自身进行解码。
而Kaldi原生提供的基于Websocket和Gstreamer框架的语音识别引擎可以提供一定的语音服务能力,但是在内存资源占用,解码速度,并发度上均无法满足实际工业部署要求。
并且,语音识别引擎一般对外提供Rest-API的访问方式,没有对传输的音频数据进行序列化压缩机制,不利于长时语音音频大文件的数据传输,在需要双向流式交互的场景下使用也极为困难。
另一方面,语音音频格式多样,而一般语音识别引擎仅支持事先定义好的一类音频格式(例如16k/8k采样率),无法动态适应不同的需求。
因而,现有的基于Kaldi HMM-DNN混合架构的语音识别模型虽然语音识别优势大但实际应用部署难度大,扩展性灵活性差,且部署后解码速度、并发度、资源占用、交互、动态适配性等都不能满足实际应用需求,使得用户体验较差,需要更灵活更容易扩展且用户体验更优的方案。
发明内容
为了克服上述缺陷,提出了本发明,以解决或部分解决如何更简单快捷地利用基于Kaldi的语音识别模型实现高效灵活可扩展的语音识别服务的技术问题,以提升用户体验。为此,本发明提供一种基于GRPC实现Kaldi语音识别服务的方法、系统及介质。
第一方面,提供一种基于GRPC实现Kaldi语音识别服务的方法,包括:接收经GRPC定义的客户端发送的语音识别请求,其中,所述语音识别请求中包括经过序列化的待识别的语音音频数据和音频参数字段信息;对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息;根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成PCM数据格式的音频数据;根据所述音频参数字段信息选择对应的Kaldi语音识别服务模型,以对所述转换成PCM数据格式的音频数据进行解码并得到识别结果;将所述识别结果序列化后发送回所述经GRPC定义的客户端。
其中,所述GRPC定义的具体过程包括:根据GRPC的ProtoBuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的GRPC的ProtoBuf协议;根据所述ProtoBuf协议编译生成进行GRPC语音识别服务的客户端与服务端的GRPC服务接口代码,以便进行客户端和服务端之间的远程调用;其中,具有所述GRPC服务接口代码的客户端为经GRPC定义的客户端;其中,具有所述GRPC服务接口代码的服务端为经GRPC定义的服务端。
其中,所述语音识别请求是:由所述经GRPC定义的客户端,利用ProtoBuf结构对读取的待识别的所述语音音频数据以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩后形成的、并调用预先选择的语音识别服务模式所发送的远程请求。
其中,基于预先定义的GRPC服务接口代码,对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息,具体包括:通过ProtoBuf结构对所述语音识别请求进行反序列化操作;其中,所述音频参数字段信息至少包括:音频格式、采样率和语音识别服务模式的字段信息;以及,根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将所述语音音频数据统一转换成PCM数据格式的音频数据,具体包括:根据所述音频格式对相应的待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成所述PCM数据格式的音频数据;根据所述音频参数字段信息选择对应的Kaldi语音识别服务模型,以对所述转换成PCM数据格式的音频数据进行解码并得到识别结果,具体包括:根据所述音频格式和所述采样率选择对应的Kaldi语音识别模型,并且,利用对应的所述Kaldi语音识别模型对所述转换成PCM数据格式的音频数据进行语音识别解码并得到识别结果。
其中,将所述识别结果序列化后发送回所述经GRPC定义的客户端,具体包括:通过ProtoBuf结构对所述识别结果进行序列化编码压缩;以及,根据所述语音识别服务模式调用相应的结果返回逻辑,以将序列化编码压缩后的所述识别结果发送回所述经GRPC定义的客户端;其中,所述语音识别服务模式包括:实时语音识别的双向流式和一句话语音识别的非流式;其中,所述结果返回逻辑包括:针对所述非流式为一次性返回识别结果,针对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果。
第二方面,提供一种基于GRPC实现Kaldi语音识别服务的方法,包括:基于预先定义的GRPC服务接口代码,读取待识别的语音音频数据,并选择相应的语音识别服务模式;利用ProtoBuf结构对待识别的所述语音音频数据、以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩,以形成语音识别请求;以及,调用所述语音识别服务模式向经GRPC定义的服务端发送所述语音识别请求,以远程调用对应所述语音识别请求的Kaldi语音识别服务模型进行语音识别;其中,所述语音识别服务模式包括:实时语音识别的双向流式和一句话语音识别的非流式。
其中,所述预先定义的过程具体包括:根据GRPC的ProtoBuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的GRPC的ProtoBuf协议;根据所述ProtoBuf协议编译生成进行GRPC语音识别服务的客户端与服务端的GRPC服务接口代码,以便进行客户端和服务端之间的远程调用;其中,具有所述GRPC服务接口代码的客户端为经GRPC定义的客户端;其中,具有所述GRPC服务接口代码的服务端为经GRPC定义的服务端。
其中,还包括:接收来自所述经GRPC定义的服务端对待识别的所述语音音频数据进行识别所获得的识别结果;其中,所述经GRPC定义的服务端,利用所述ProtoBuf结构对所述识别结果进行序列化编码压缩、以及根据所述语音识别服务模式调用相应的结果返回逻辑对所述识别结果进行返回;对接收的所述识别结果利用所述ProtoBuf结构进行反序列化并输出。
第三方面,提供一种基于GRPC实现Kaldi语音识别服务的服务器,包括:接收模块,用于接收经GRPC定义的客户端发送的语音识别请求,其中,所述语音识别请求中包括经过序列化的待识别的语音音频数据和音频参数字段信息;序列化模块,用于基于预先定义的GRPC服务接口代码,对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息,以及用于对识别结果进行序列化操作;音频数据解析模块,用于根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成PCM数据格式的音频数据;语音识别核心算法模块,用于根据所述音频参数字段信息选择对应的Kaldi语音识别服务模型,以对所述转换成PCM数据格式的音频数据进行解码并得到识别结果;返回模块,用于在经所述序列化模块对所述识别结果进行序列化后发送回所述经GRPC定义的客户端。
其中,所述GRPC定义的过程具体包括:根据GRPC的ProtoBuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段和字段内容,以获得定义好的GRPC的ProtoBuf协议;根据所述ProtoBuf协议编译生成进行GRPC语音识别服务的客户端与服务器的GRPC服务接口代码,以便进行客户端和服务器之间的远程调用;其中,具有所述GRPC服务接口代码的客户端为经GRPC定义的客户端;其中,具有所述GRPC服务接口代码的服务器为经GRPC定义的服务器。
其中,所述接收模块所接收的所述语音识别请求具体是:由所述经GRPC定义的客户端,利用ProtoBuf结构对读取的待识别的所述语音音频数据以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩后形成的、并调用预先选择的语音识别服务模式向所述服务器所发送的远程请求。
其中,序列化模块,具体包括:ProtoBuf反序列化单元,用于通过ProtoBuf结构对所述语音识别请求进行反序列化操作;其中,所述音频参数字段信息至少包括:音频格式、采样率和语音识别服务模式的字段信息;音频数据解析模块的解析操作具体包括:根据所述音频格式对相应的待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成所述PCM数据格式的音频数据;语音识别核心算法模块的识别操作具体包括:根据所述音频格式和所述采样率,选择对应的Kaldi语音识别模型,并且,利用对应的所述Kaldi语音识别模型对所述转换成PCM数据格式的音频数据进行语音识别解码并得到识别结果。
其中,所述序列化模块还包括:ProtoBuf序列化单元,用于通过ProtoBuf结构对所述识别结果进行序列化编码压缩;所述返回模块,具体包括:返回逻辑单元,用于根据所述语音识别服务模式调用相应的结果返回逻辑,以将序列化编码压缩后的所述识别结果发送回所述经GRPC定义的客户端;其中,所述语音识别服务模式包括:实时语音识别的双向流式和一句话语音识别的非流式;其中,所述结果返回逻辑包括:对所述非流式为一次性返回识别结果,对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果。
第四方面,提供一种基于GRPC实现Kaldi语音识别服务的终端,包括:GRPC客户端模块,用于基于预先定义的GRPC服务接口代码,读取待识别的语音音频数据;GRPC模式选择模块,用于在所述GRPC客户端模块读取待识别的语音音频数据时选择相应的语音识别服务模式;ProtoBuf序列化模块,用于利用ProtoBuf结构对待识别的所述语音音频数据、以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩,以形成语音识别请求;所述GRPC客户端模块还用于调用所述语音识别服务模式向经GRPC定义的服务器发送所述语音识别请求,以远程调用对应所述语音识别请求的Kaldi语音识别服务模型进行语音识别;其中,所述语音识别服务模式包括:实时语音识别的双向流式和一句话语音识别的非流式。
其中,所述预先定义的过程具体包括:根据GRPC的ProtoBuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的GRPC的ProtoBuf协议;根据所述ProtoBuf协议编译生成进行GRPC语音识别服务的客户端与服务器的GRPC服务接口代码,以便进行客户端和服务端之间的远程调用;其中,具有所述GRPC服务接口代码的客户端为经GRPC定义的客户端;其中,具有所述GRPC服务接口代码的服务器为经GRPC定义的服务器。
其中,所述GRPC客户端模块还用于:接收来自所述经GRPC定义的服务器对待识别的所述语音音频数据进行识别所获得的识别结果;其中,所述经GRPC定义的服务端,利用所述ProtoBuf结构对所述识别结果进行序列化编码压缩、以及根据所述语音识别服务模式调用相应的结果返回逻辑对所述识别结果进行返回;所述ProtoBuf序列化模块还用于:对接收的所述识别结果利用所述ProtoBuf结构进行反序列化并输出。
第五方面,提供一种计算机可读存储介质,该存储介质存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行前述第一方面和第二方面的任一项所述的基于GRPC实现Kaldi语音识别服务的方法。
第六方面,提供一种控制装置,包括处理器和存储装置,其特征在于,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行前述第一方面和第二方面的任一项所述的基于GRPC实现Kaldi语音识别服务的方法。
第七方面,提供一种基于GRPC实现Kaldi语音识别服务的系统,其特征在于,包括如前述第三方面的任一项所述的基于GRPC实现Kaldi语音识别服务的服务器,以及如前述第四方面的任一项所述的基于GRPC实现Kaldi语音识别服务的终端。
本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
在实施本发明的技术方案中,通过GRPC定义的客户端和服务端的远程过程调用构建的语音识别服务引擎,能利用ProtoBuf对语音音频数据进行序列化与反序列化,极大的减少大文件音频网络传输开销,提高传输速率,其基于HTTP/2.0的Grpc远程过程调用框架,有效结合多线程、并发、单向、双向流高效传输与服务响应,同时,对服务器端的Kaldi解码器进行解耦和模块化(如模式选择等),结合GPU,实现语音识别核心算法,与多模型管理,极大程度上提高了服务器资源利用率。进一步,通过GRPC这种轻量级的框架与语音识别核心算法相分离方式,可以对语音算法进行快速便捷的优化与更新迭代,不受到客户端部署的影响;通过Protobuf协议服务与字段定义,可灵活选择不同音频格式与不同采样率的语音识别模型,也可自由扩展当前语音算法引擎的功能,充分体现了本方案在语音识别服务的技术应用部署上的灵活性和可扩展性。
附图说明
下面参照附图来描述本发明的具体实施方式,附图中:
图1是根据本发明的基于GRPC实现Kaldi语音识别服务的方法的一个实施例的主要流程图;
图2是根据本发明的基于GRPC实现Kaldi语音识别服务的系统的一个实施例的结构框图;
图3是根据本发明的技术方案的一个实施例的应用时交互过程示意图。
具体实施方式
下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“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:是一种脉冲调制编码格式,用数字表示采样音频模拟信号的方法。
本发明的技术方案主要的实现原理主要为:通过GRPC的ProtoBuf结构定义语音识别服务模式、待识别的语音音频格式、语音音频数据、音频长度等字段信息和内容。这些参数字段信息,在具体读取到待识别的语音音频数据时会将具体的语音音频信息与对应该语音音频数据的其他参数如音频参数字段信息都填入。该定义确定了ProtoBuf协议(规则),用此协议进行编译,生成对应的服务端和客户端(即需要进行远程调用实现语音识别服务的客户端和服务器之间)的接口代码(例如通过ProtoBuf编译器进行编译,将.proto编译成特定的类,这些类就能通过简单方法访问每个字段,并可以串行化或反串行化进行访问;并且,能对应服务端的语音识别服务,进行了服务模块划分)。当客户端对语音音频数据进行读取后,使用ProtoBuf进行序列化压缩(语音音频数据和对应的音频参数字段信息,这里还包括语音识别服务模式),形成语音识别请求,按照语音识别服务模式,将该请求发送到服务端。服务端按照约定即定义的接口代码,通过ProtoBuf反序列化,还原出原始的语音音频数据,再结合音频参数字段信息比如音频格式、采样率等,转换音频数据为统一的PCM数据格式,通过参数字段信息中指示的语音识别服务模式,结合音频格式和采样率等,选择对应的Kaldi语音模型,对音频内容进行语音识别的解码。服务端对解码识别出的语音识别结果,同样依据定义的接口代码,利用ProtoBuf序列化压缩该结果,对应该语音识别服务模式发送回请求语音识别的客户端。客户端接收到服务端的回复,对识别结果进行反序列化后,输出(图像/视频、文字、音频等方式)该识别结果,完成语音识别服务的调用。
本发明使用Protobuf对语音音频数据进行序列化以及对识别结果序列化,都极大提升了大音频文件网络传输的效率;并且,基于GRPC远程过程调用这种轻量级的框架(结合ProtoBuf建立的轻便语音识别引擎),实现语音识别核心算法,且基于GRPC的流式和非流式传输能有效实时在线语音识别和非实时语音识别的部署难题,同时兼具高灵活性、可扩展性以及具备工业部署的并发能力,其在多语言客户端的支持上具备较强的优势。
下面结合图1所示本发明的基于GRPC实现Kaldi语音识别服务的方法的一个实施例的主要流程图对本发明的实现进行说明。
步骤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结构对所有参数字段信息,即读取的待识别的所述语音音频数据以及相应于所述语音音频数据的音频参数字段信息(采样率、音频格式、语音服务模式、音频长度等等),进行序列化编码压缩后形成了二进制序列的语音识别请求,其为远程请求。
其中,将传输的语音音频数据以及各种相应该语音音频数据的音频参数字段信息作为语音识别请求,进行序列化编码,进而可选择数据压缩。
步骤S130,调用选择的所述语音识别服务模式向经GRPC定义的服务端发送所述语音识别请求,以远程调用对应所述语音识别请求的Kaldi语音识别服务模型进行语音识别。
一个实施方式中,在发送该远程请求(例如,所述语音识别请求)时,是调用预先选择的语音识别服务模式向经GRPC定义的服务端发送的。发送到经GRPC定义的服务端后,所述服务端能根据该语音识别请求中的除了待识别的语音音频数据外的音频参数字段信息,确定要选择哪个合适的Kaldi语音识别服务模型来进行语音识别,并对该语音音频数据进行识别处理。该远程调用仅仅是针对性对需要的或者说适配的语音识别模型进行选择并运行,实现了模块化并更容易管理、更容易扩展,而服务端的语音识别模型的更新迭代改变等都不会影响到客户端远程调用实现语音识别的效果,灵活且可扩展性强。
步骤S140,接收经GRPC定义的客户端发送的语音识别请求,其中,所述语音识别请求中包括经过序列化的待识别的语音音频数据和音频参数字段信息。
具体地,所述语音识别请求即调用服务端的语音识别服务的远程请求。参见前述步骤S120所述。根据所述GRPC服务接口代码,服务端能接收此请求对服务端上的语音识别服务的远程调用。
步骤S150,基于预先定义的GRPC服务接口代码,对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息。
一个实施方式中,由于预先定义的GRPC服务接口代码表示具有该接口代码的服务端即为经GRPC定义的服务端,其能够通过ProtoBuf结构进行序列化和反序列化操作。因而,对接收到的基于GRPC框架形成远程调用关系的客户端来的远程请求(例如所述语音识别请求),即可通过ProtoBuf结构对所述语音识别请求进行逆向反序列化操作,直接解码得到原始音频语音数据。
进一步,由于二进制字段序列化和反序列化操作都快速且简单,既能提升传输速度也能提升读取字段信息的速度,能迅速从参数字段信息中将参数数据都提取出来。其中,参数字段信息除了待识别的语音音频数据外,音频参数字段信息相应地,至少可以包括:音频格式、采样率和语音识别服务模式的字段信息。
步骤S160,根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成PCM数据格式的音频数据。
一个实施方式中,可以根据请求中的音频参数字段信息中的定义的音频格式和采样率(诸如此类定义的各个交互字段的字段内容)等对相应的待识别的所述语音音频数据进行解析,即分析传输来的该语音音频数据对应的音频格式字段,根据不同的音频格式对该语音音频数据进行解码操作后实现格式转换,这样可以主要是将待识别的所述语音音频数据统一转换成所述PCM数据格式的音频数据,统一的音频格式更方便后续的语音识别。
步骤S170,根据所述音频参数字段信息选择对应的Kaldi语音识别服务模型,以对所述转换成PCM数据格式的音频数据进行解码并得到识别结果。
一个实施方式中,可以根据音频参数字段中的例如采样率和音频格式、甚至语音服务模式等,字段定义的各种模型参数,来选择需要对应哪种格式、使用哪个Kaldi语音识别模型,例如:DNN、HMM、混合模型等。进而,选定了对应的模型,就可以利用该模型对输出的已经转换成PCM数据格式的音频数据(待识别的语音音频数据)进行语音识别,即解码转写等,进而得到识别结果并输出。
步骤S180,将所述识别结果序列化后发送回所述经GRPC定义的客户端。
一个实施方式中,可以先对模型刚识别出的识别结果进行序列化(序列化编码压缩),具体例如通过ProtoBuf结构对所述识别结果进行序列化编码压缩;进一步,在发送回客户端时,服务端可以根据音频参数字段信息中带的语音识别模式指示的双向流式还是非流式,调用相应的结果返回逻辑,通过该结果返回逻辑将序列化后的识别结果发送回经GRPC定义的客户端。
进一步,语音识别服务模式通常有两种:双向流式的实时语音识别和非流式的一句话语音识别。相应地,服务端调用的结果返回逻辑可以是,针对所述非流式,为一次性返回识别结果,针对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果。
步骤S190,接收来自所述经GRPC定义的服务端对待识别的所述语音音频数据进行识别所获得的识别结果,进而对接收的所述识别结果利用所述ProtoBuf结构进行反序列化后并输出。
其中,接收到识别结果后,同样以GRPC服务接口代码为基础,该识别结果是服务端通过ProtoBuf结果进行了序列化编码压缩的,传输快,且到客户端反序列化也能快速读取字段,提取信息,这里提取的是对应待识别的语音音频数据的识别结果。并且,输入识别结果的方式也多样,可以包括音频输出或者视频、图像、文字等显示输出。
下面结合图2所示本发明的基于GRPC实现Kaldi语音识别服务的系统的一个实施例的主要结构框图对本发明的实现进行说明。
客户端210,支持多种语言(例如:各种语音音频数据读取)。
提供语音识别服务的服务端,这里以服务器220为例,其提供各种语音识别服务模型,以适应客户端210的远程服务调用。
一个实施方式中,该基于GRPC实现Kaldi语音识别服务的系统为一个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 GRPC Stream)来调用相应的结果返回逻辑对所述识别结果进行返回。当客户端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语音识别模型(例如:单独DNN、HMM、混合架构的、或者其他Kaldi语音识别模型,或者某个架构中的某部分算法模型,等等),并且,利用选择好的对应的所述Kaldi语音识别模型对所述转换成PCM数据格式的音频数据进行语音识别解码并得到识别结果。
返回模块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转换,无需依赖于固定的tfServing推理框架,具备更好的灵活性与可扩展性的同时,极大提高了服务器资源利用率与语音识别服务并发量。
(2)使用Grpc与Protobuf对语音音频文件进行序列化压缩,减小传输数据大小,提高传输效率,减少大文件传输时延。
(3)通过模块化开发语音识别核心算法各模块,结合Protobuf协议的制定,可同时支持多种音频格式,与不同采样率模型的需求,并可很方便的动态扩展各类语音相关功能。
(4)不同语言(c/c++,python,go,java,php,oc等)的客户端根据定义好的proto协议,各自生成自己不同语言的客户端程序,能够方便快捷的使用语音识别服务。
进一步,本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,所述存储介质中存储有多条程序代码,所述程序代码适用于由处理器加载并运行以执行前述的各个基于GRPC实现Kaldi语音识别服务的方法的步骤。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该存储装置可以是包括各种电子设备形成的存储装置设备,可选的,本发明实施例中存储是非暂时性的计算机可读存储介质。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
进一步,本发明还提供了一种控制装置。在根据本发明的一个终端设备实施例中,其包括处理器和存储器,存储器可以被配置成存储多条程序代码,所述程序代码适于由该处理器加载并运行以执行前述各个基于GRPC实现Kaldi语音识别服务的方法的步骤。
进一步,本发明还提供了一种基于GRPC实现Kaldi语音识别服务的系统,其包括了前述各个基于GRPC实现Kaldi语音识别服务的客户端及服务器。
需要指出的是,尽管上述实施例中将各个步骤按照特定的先后顺序进行了描述,但是本领域技术人员可以理解,为了实现本发明的效果,不同的步骤之间并非必须按照这样的顺序执行,其可以同时(并行)执行或以其他顺序执行,这些变化都在本发明的保护范围之内。
进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的系统的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
本领域技术人员能够理解的是,可以对系统中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本发明的原理,因此,拆分或合并之后的技术方案都将落入本发明的保护范围内。
至此,已经结合附图所示的一个实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
Claims (19)
1.一种基于GRPC实现Kaldi语音识别服务的方法,其特征在于,包括:
接收经GRPC定义的客户端发送的语音识别请求,其中,所述语音识别请求中包括经过序列化的待识别的语音音频数据和音频参数字段信息;
对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息;
根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成PCM数据格式的音频数据;
根据所述音频参数字段信息选择对应的Kaldi语音识别服务模型,以对所述转换成PCM数据格式的音频数据进行解码并得到识别结果;
将所述识别结果序列化后发送回所述经GRPC定义的客户端。
2.如权利要求1所述的方法,其特征在于,
所述GRPC定义的具体过程包括:
根据GRPC的ProtoBuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的GRPC的ProtoBuf协议;
根据所述ProtoBuf协议编译生成进行GRPC语音识别服务的客户端与服务端的GRPC服务接口代码,以便进行客户端和服务端之间的远程调用;
其中,具有所述GRPC服务接口代码的客户端为经GRPC定义的客户端;
其中,具有所述GRPC服务接口代码的服务端为经GRPC定义的服务端。
3.如权利要求2所述的方法,其特征在于,
所述语音识别请求是:由所述经GRPC定义的客户端,利用ProtoBuf结构对读取的待识别的所述语音音频数据以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩后形成的、并调用预先选择的语音识别服务模式所发送的远程请求。
4.如权利要求2或3所述的方法,其特征在于,对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息,具体包括:
通过ProtoBuf结构对所述语音识别请求进行反序列化操作;其中,所述音频参数字段信息至少包括:音频格式、采样率和语音识别服务模式的字段信息;
以及,
根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将所述语音音频数据统一转换成PCM数据格式的音频数据,具体包括:
根据所述音频格式对相应的待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成所述PCM数据格式的音频数据;
根据所述音频参数字段信息选择对应的Kaldi语音识别服务模型,以对所述转换成PCM数据格式的音频数据进行解码并得到识别结果,具体包括:
根据所述音频格式和所述采样率选择对应的Kaldi语音识别模型,并且,利用对应的所述Kaldi语音识别模型对所述转换成PCM数据格式的音频数据进行语音识别解码并得到识别结果。
5.如权利要求4所述的方法,其特征在于,将所述识别结果序列化后发送回所述经GRPC定义的客户端,具体包括:
通过ProtoBuf结构对所述识别结果进行序列化编码压缩;以及,
根据所述语音识别服务模式调用相应的结果返回逻辑,以将序列化编码压缩后的所述识别结果发送回所述经GRPC定义的客户端;
其中,所述语音识别服务模式包括:实时语音识别的双向流式和一句话语音识别的非流式;
其中,所述结果返回逻辑包括:针对所述非流式为一次性返回识别结果,针对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果。
6.一种基于GRPC实现Kaldi语音识别服务的方法,其特征在于,包括:
读取待识别的语音音频数据,并选择相应的语音识别服务模式;
利用ProtoBuf结构对待识别的所述语音音频数据、以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩,以形成语音识别请求;以及,
调用所述语音识别服务模式向经GRPC定义的服务端发送所述语音识别请求,以远程调用对应所述语音识别请求的Kaldi语音识别服务模型进行语音识别;
其中,所述语音识别服务模式包括:实时语音识别的双向流式和一句话语音识别的非流式。
7.如权利要求6所述的方法,其特征在于,
所述GRPC定义的过程具体包括:
根据GRPC的ProtoBuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的GRPC的ProtoBuf协议;
根据所述ProtoBuf协议编译生成进行GRPC语音识别服务的客户端与服务端的GRPC服务接口代码,以便进行客户端和服务端之间的远程调用;
其中,具有所述GRPC服务接口代码的客户端为经GRPC定义的客户端;
其中,具有所述GRPC服务接口代码的服务端为经GRPC定义的服务端。
8.如权利要求7所述的方法,其特征在于,还包括:
接收来自所述经GRPC定义的服务端对待识别的所述语音音频数据进行识别所获得的识别结果;
其中,所述经GRPC定义的服务端,利用所述ProtoBuf结构对所述识别结果进行序列化编码压缩、以及根据所述语音识别服务模式调用相应的结果返回逻辑对所述识别结果进行返回;
对接收的所述识别结果利用所述ProtoBuf结构进行反序列化并输出。
9.一种基于GRPC实现Kaldi语音识别服务的服务器,其特征在于,包括:
接收模块,用于接收经GRPC定义的客户端发送的语音识别请求,其中,所述语音识别请求中包括经过序列化的待识别的语音音频数据和音频参数字段信息;
序列化模块,用于对所述语音识别请求进行反序列化操作,得到待识别的所述语音音频数据和所述音频参数字段信息,以及用于对识别结果进行序列化操作;
音频数据解析模块,用于根据所述音频参数字段信息对待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成PCM数据格式的音频数据;
语音识别核心算法模块,用于根据所述音频参数字段信息选择对应的Kaldi语音识别服务模型,以对所述转换成PCM数据格式的音频数据进行解码并得到识别结果;
返回模块,用于在经所述序列化模块对所述识别结果进行序列化后发送回所述经GRPC定义的客户端。
10.如权利要求9所述的服务器,其特征在于,
所述GRPC定义的过程具体包括:
根据GRPC的ProtoBuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段和字段内容,以获得定义好的GRPC的ProtoBuf协议;
根据所述ProtoBuf协议编译生成进行GRPC语音识别服务的客户端与服务器的GRPC服务接口代码,以便进行客户端和服务器之间的远程调用;
其中,具有所述GRPC服务接口代码的客户端为经GRPC定义的客户端;
其中,具有所述GRPC服务接口代码的服务器为经GRPC定义的服务器。
11.如权利要求10所述的服务器,其特征在于,所述接收模块所接收的所述语音识别请求具体是:由所述经GRPC定义的客户端,利用ProtoBuf结构对读取的待识别的所述语音音频数据以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩后形成的、并调用预先选择的语音识别服务模式向所述服务器所发送的远程请求。
12.如权利要求10或11所述的服务器,其特征在于,
序列化模块,具体包括:
ProtoBuf反序列化单元,用于通过ProtoBuf结构对所述语音识别请求进行反序列化操作;其中,所述音频参数字段信息至少包括:音频格式、采样率和语音识别服务模式的字段信息;
音频数据解析模块的解析操作具体包括:
根据所述音频格式对相应的待识别的所述语音音频数据进行解析,以将待识别的所述语音音频数据统一转换成所述PCM数据格式的音频数据;
语音识别核心算法模块的识别操作具体包括:
根据所述音频格式和所述采样率,选择对应的Kaldi语音识别模型,并且,利用对应的所述Kaldi语音识别模型对所述转换成PCM数据格式的音频数据进行语音识别解码并得到识别结果。
13.如权利要求12所述的服务器,其特征在于,
所述序列化模块还包括:
ProtoBuf序列化单元,用于通过ProtoBuf结构对所述识别结果进行序列化编码压缩;
所述返回模块,具体包括:
返回逻辑单元,用于根据所述语音识别服务模式调用相应的结果返回逻辑,以将序列化编码压缩后的所述识别结果发送回所述经GRPC定义的客户端;
其中,所述语音识别服务模式包括:实时语音识别的双向流式和一句话语音识别的非流式;
其中,所述结果返回逻辑包括:对所述非流式为一次性返回识别结果,对所述双向流式为分段返回每段的识别结果、并在待识别的语音音频数据全部传输完毕后返回最终识别结果。
14.一种基于GRPC实现Kaldi语音识别服务的终端,其特征在于,包括:
GRPC客户端模块,用于读取待识别的语音音频数据;
GRPC模式选择模块,用于在所述GRPC客户端模块读取待识别的语音音频数据时选择相应的语音识别服务模式;
ProtoBuf序列化模块,用于利用ProtoBuf结构对待识别的所述语音音频数据、以及相应于所述语音音频数据的音频参数字段信息进行序列化编码压缩,以形成语音识别请求;
所述GRPC客户端模块还用于调用所述语音识别服务模式向经GRPC定义的服务器发送所述语音识别请求,以远程调用对应所述语音识别请求的Kaldi语音识别服务模型进行语音识别;
其中,所述语音识别服务模式包括:实时语音识别的双向流式和一句话语音识别的非流式。
15.如权利要求14所述的终端,其特征在于,
所述GRPC定义的过程具体包括:
根据GRPC的ProtoBuf的结构,预先定义与语音识别服务模式、音频格式、待识别的语音音频数据、采样率、以及音频长度相关的参数字段信息,以获得定义好的GRPC的ProtoBuf协议;
根据所述ProtoBuf协议编译生成进行GRPC语音识别服务的客户端与服务器的GRPC服务接口代码,以便进行客户端和服务端之间的远程调用;
其中,具有所述GRPC服务接口代码的客户端为经GRPC定义的客户端;
其中,具有所述GRPC服务接口代码的服务器为经GRPC定义的服务器。
16.如权利要求15所述的终端,其特征在于,
所述GRPC客户端模块还用于:接收来自所述经GRPC定义的服务器对待识别的所述语音音频数据进行识别所获得的识别结果;
其中,所述经GRPC定义的服务端,利用所述ProtoBuf结构对所述识别结果进行序列化编码压缩、以及根据所述语音识别服务模式调用相应的结果返回逻辑对所述识别结果进行返回;
所述ProtoBuf序列化模块还用于:对接收的所述识别结果利用所述ProtoBuf结构进行反序列化并输出。
17.一种计算机可读存储介质,该存储介质存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行权利要求1至8中任一项所述的基于GRPC实现Kaldi语音识别服务的方法。
18.一种控制装置,包括处理器和存储装置,其特征在于,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行权利要求1至8中任一项所述的基于GRPC实现Kaldi语音识别服务的方法。
19.一种基于GRPC实现Kaldi语音识别服务的系统,其特征在于,包括如权利要求9至13中任一项所述的基于GRPC实现Kaldi语音识别服务的服务器,以及如权利要求14至16中任一项所述的基于GRPC实现Kaldi语音识别服务的终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011261461.6A CN112289307B (zh) | 2020-11-12 | 2020-11-12 | 基于GRPC实现Kaldi语音识别服务的方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011261461.6A CN112289307B (zh) | 2020-11-12 | 2020-11-12 | 基于GRPC实现Kaldi语音识别服务的方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112289307A CN112289307A (zh) | 2021-01-29 |
CN112289307B true CN112289307B (zh) | 2022-07-22 |
Family
ID=74398837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011261461.6A Active CN112289307B (zh) | 2020-11-12 | 2020-11-12 | 基于GRPC实现Kaldi语音识别服务的方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112289307B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113450770B (zh) * | 2021-06-25 | 2024-03-05 | 平安科技(深圳)有限公司 | 基于显卡资源的语音特征提取方法、装置、设备及介质 |
CN113450763A (zh) * | 2021-06-25 | 2021-09-28 | 四川云从天府人工智能科技有限公司 | 基于grpc实现文本转语音服务的方法、系统、介质和装置 |
CN113724711A (zh) * | 2021-09-01 | 2021-11-30 | 云从科技集团股份有限公司 | 一种语音识别服务实现方法、装置、系统、介质及设备 |
CN115620729B (zh) * | 2022-12-21 | 2023-03-10 | 北京华晟经世信息技术股份有限公司 | 基于鲁棒语音增强算法的工业设备语音控制方法及系统 |
CN116185668B (zh) * | 2023-04-26 | 2023-06-30 | 上海帆声图像科技有限公司 | 一种基于grpc的高效多模型选配部署方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109994101A (zh) * | 2018-01-02 | 2019-07-09 | 中国移动通信有限公司研究院 | 一种语音识别方法、终端、服务器及计算机可读存储介质 |
WO2019225961A1 (en) * | 2018-05-22 | 2019-11-28 | Samsung Electronics Co., Ltd. | Electronic device for outputting response to speech input by using application and operation method thereof |
CN110740084A (zh) * | 2019-10-28 | 2020-01-31 | 宁波奥克斯电气股份有限公司 | 语音控制方法及相关装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3455719A1 (en) * | 2016-05-10 | 2019-03-20 | Google LLC | Implementations for voice assistant on devices |
US11854551B2 (en) * | 2019-03-22 | 2023-12-26 | Avaya Inc. | Hybrid architecture for transcription of real-time audio based on event data between on-premises system and cloud-based advanced audio processing system |
-
2020
- 2020-11-12 CN CN202011261461.6A patent/CN112289307B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109994101A (zh) * | 2018-01-02 | 2019-07-09 | 中国移动通信有限公司研究院 | 一种语音识别方法、终端、服务器及计算机可读存储介质 |
WO2019225961A1 (en) * | 2018-05-22 | 2019-11-28 | Samsung Electronics Co., Ltd. | Electronic device for outputting response to speech input by using application and operation method thereof |
CN110740084A (zh) * | 2019-10-28 | 2020-01-31 | 宁波奥克斯电气股份有限公司 | 语音控制方法及相关装置 |
Non-Patent Citations (3)
Title |
---|
TRANSFORMER-BASED LANGUAGE MODELING AND DECODING FOR CONVERSATIONAL SPEECH RECOGNITION;Kareem Nassar;《arXiv:2001.01140v1 [cs.CL]》;20200104;全文 * |
手语合成系统的研究与实现;陶然;《中国优秀硕士学位论文全文数据库》;20181015(第10期);全文 * |
深度学习推理侧模型优化架构探索;孟伟等;《信息通信技术与政策》;20200915(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112289307A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112289307B (zh) | 基于GRPC实现Kaldi语音识别服务的方法、系统及介质 | |
CN101207656B (zh) | 用于动态切换模态的方法和用于提供文本交换服务的系统 | |
CN101207586B (zh) | 用于实时自动通信的方法和系统 | |
EP3731161A1 (en) | Model application method and system, and model management method and server | |
CN111190600B (zh) | 基于gru注意力模型的前端代码自动生成的方法及系统 | |
CN112543342B (zh) | 虚拟视频直播处理方法及装置、存储介质、电子设备 | |
CN108877804B (zh) | 语音服务方法、系统、电子设备及存储介质 | |
US8027839B2 (en) | Using an automated speech application environment to automatically provide text exchange services | |
CN103474068A (zh) | 实现语音命令控制的方法、设备及系统 | |
CN113192510B (zh) | 实现语音年龄和/或性别识别服务的方法、系统及介质 | |
WO2009023261A1 (en) | Voice enabled telnet interface | |
CN112465112B (zh) | 基于nGraph的GPU后端分布式训练方法和系统 | |
CN110971685B (zh) | 内容处理方法、装置、计算机设备及存储介质 | |
CN115631275A (zh) | 多模态驱动的人体动作序列生成方法及装置 | |
CN114842857A (zh) | 语音处理方法、装置、系统、设备及存储介质 | |
CN114637531A (zh) | 应用程序接口动态生成方法及装置 | |
CN111191451B (zh) | 中文语句简化方法和装置 | |
CN110548285B (zh) | 游戏通信控制方法及装置、介质及电子设备 | |
CN113450763A (zh) | 基于grpc实现文本转语音服务的方法、系统、介质和装置 | |
US8417819B2 (en) | Combining UNIX commands with uniform resource locators | |
CN111524500A (zh) | 语音合成方法、装置、设备和存储介质 | |
CN109413137A (zh) | 一种基于avro的PHP请求Python的方法 | |
CN117498987B (zh) | 一种应用于大规模网络数据传输的方法 | |
CN112837678B (zh) | 私有云识别训练方法和装置 | |
CN112802485B (zh) | 语音数据处理方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |