当前位置: 首页 > news >正文

微服务即时通信系统---(六)语音识别子服务

目录

功能设计

模块划分

业务接口/功能示意图

服务实现流程思想

服务代码实现

编写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() {}

相关文章:

  • Mac 上安装多版本的 JDK 且实现 自由切换
  • Zabbix问题记录2--踩坑HttpRequest,header添加无效
  • 4.static关键字和const关键字的作用【高频】
  • 算法思想-动态规划算法
  • Vue的项目创建以及项目目录与组合式API
  • 快速入门——状态管理VueX
  • 动态规划(背包问题)--是否逆序使用的问题--二进制拆分的问题
  • linux /var/log/syslog过大问题及解决 Systemd定时器用于清除
  • 深入理解 `Sinks.Empty<Void>` 和 `Mono<Void>`:如何触发完成信号并结合 WebSocket 示例
  • axios、axios二次封装、api解耦
  • CF 58A.Chat room(Java实现)
  • 【ProtoBuf】proto3语法(一)
  • ctfshow——版本控制泄露源码
  • OPPO高级大模型算法岗内推
  • LeetCode 热题100 141. 环形链表
  • linux 打包解压命令
  • 计算机毕业设计SpringBoot+Vue.js个性化图书推荐系统(源码+LW文档+PPT+讲解+开题报告)
  • KubeSphere安装mysql
  • WebSocket简单介绍 并接入deepseek
  • 高并发内存池的thread cache部分实现及测试
  • 呼市互联网公司排名/湖南长沙seo
  • 网站建设 公司/地推团队去哪里找
  • wordpress 网页计算器/乐陵seo优化
  • 外贸仿牌网站/中国免费网站服务器主机域名
  • wordpress 快速安装失败/网站怎么优化推荐
  • 杭州拱墅网站建设/阿里巴巴seo排名优化