您的位置:首页 > 娱乐 > 八卦 > 湖南今天新增新型肺炎_东莞网络公司哪个网站好_河南省疫情最新情况_百度推广投诉中心

湖南今天新增新型肺炎_东莞网络公司哪个网站好_河南省疫情最新情况_百度推广投诉中心

2025/4/29 3:18:34 来源:https://blog.csdn.net/2302_80873119/article/details/145826335  浏览:    关键词:湖南今天新增新型肺炎_东莞网络公司哪个网站好_河南省疫情最新情况_百度推广投诉中心
湖南今天新增新型肺炎_东莞网络公司哪个网站好_河南省疫情最新情况_百度推广投诉中心

目录

功能设计

模块划分

业务接口/功能示意图

服务实现流程思想

服务代码实现

编写proto文件

服务端创建子类(SpeechRecognitionServiceImpl)完成RPC服务调用函数重写

SpeechRecognize(语音识别)

服务端完成语音识别子服务类(SpeechRecognitionServer)

注意 

实例化服务类对象,启动服务

工程系统构建配置文件(CMakeLists.txt)

服务测试


本章节,主要对项目中语音识别子服务模块进行分析、开发与测试。

功能设计

语音识别子服务,通过调用语音识别SDK,进行语音识别,将识别后的文字返还给入口网关子服务即可,因此,提供的功能性接口只有一个:

语音消息的文字转换:客户端进行语音消息的文字转换。

模块划分

参数/配置文件解析模块基于gflags框架直接使用,进行参数/配置文件的解析。
日志模块基于spdlog封装的logger 直接进行日志输出。
服务注册模块基于etcd框架封装的注册模块 直接进行语音识别子服务模块的服务注册。
RPC服务模块基于brpc框架 搭建语音识别子服务的RPC服务器。
语音识别SDK基于百度云的语音识别SDK框架封装的识别模块,进行语音识别文字。

业务接口/功能示意图

服务实现流程思想

1、编写服务所需的proto文件,利用protoc工具生成RPC服务器所需的.pb.h 和 .pb.cc 项目文件。
2、服务端 创建子类,继承于proto文件中RPC调用类,并进行功能性接口函数重写。
3、服务端 完成语音识别子服务类。
4、实例化 服务类对象,启动服务。

服务代码实现

编写proto文件

speech请求(SpeechRecognitionReq)包含成员:

1、请求ID:用于标识该请求的唯一性。

2、语音数据:存放语音文件数据(以byte的方式存放)。

3、用户ID:标识用户,便于后续网关服务器响应用户。

4、用户登陆会话ID:用于网关进行用户身份鉴权,识别用户是否登陆。(此处用不上,为了代码大一统,添上)

speech应答(SpeechRecognitionResp)包含成员:

1、请求ID:对应请求中的请求ID,标识请求唯一性。

2、成功标识:标识该次请求的处理结果。

3、错误信息(optional):如果处理出错,记录出错信息。

4、语音文字数据(optional):如果处理成功,存放转换后的文字数据。

RPC服务器(SpeechRecognitionService)提供接口:

1、SpeechRecognition (SpeechRecognitionReq) returns (SpeechRecognitionResp)。

proto文件(speechRecognition.proto):

syntax="proto3";
package yangz;option cc_generic_services = true;// SpeechRecognitionReq
message SpeechRecognitionReq
{string req_id = 1;bytes speech_data = 2;string user_id = 3;optional string login_session_id = 4;
};// SpeechRecognitionResp
message SpeechRecognitionResp
{string req_id = 1;bool success = 2;optional string err_msg = 3;optional string speech_character_data = 4;
};// SpeechRecognitionService
service SpeechRecognitionService
{rpc SpeechRecognize(SpeechRecognitionReq) returns (SpeechRecognitionResp);
};

服务端创建子类(SpeechRecognitionServiceImpl)完成RPC服务调用函数重写

SpeechRecognize(语音识别)

实现流程:

1、接收请求,获取语音数据。

2、调用基于语音识别SDK封装的框架,获取识别后的文本内容。

3、组织响应进行返回。

speechRecognitionServer.hpp:

    // 创建子类, 继承于SpeechRecognitionService, 完成功能性接口的实现class SpeechRecognitionServiceImpl : public yangz::SpeechRecognitionService{public:SpeechRecognitionServiceImpl(const yangz::SpeechRecognitionClient::ptr &src_client): _src_client(src_client){}~SpeechRecognitionServiceImpl() {}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com