【项目介绍】AI智能机器人助手

说到机器人助手,你会想到谁?我第一反应就会脱口而出:Baymax !!
博主初看《超能陆战队》这部电影的时候,就被这位充满智慧且无所不能的“男人” 俘获了少女心。Baymax虽然是个体型胖嘟嘟的充气充电型机器人,但却大家被称为“守护型暖男”。原因在于它不仅充当着“私人健康顾问”的角色,还可以陪主人聊天,给主人讲笑话,甚至可以照顾主人的情绪。终于经过我不断的学习和探索,我也拥有了一个属于我自己的Baymax!!虽然现在我只是实现了部分,但是万事开头难,我相信有了现在的基础,只要以后我继续不断的学习,我一定能将它改善成一个完美的“男神”。

项目简介

这是一个通过图令平台的人机交互功能,结合百度AI平台的语音识别和语音合成技术,使用C++在Linux下编写的可以智能AI对话和执行语音命令的语音管理工具。你可以直接语音和我的智能机器人管家聊天,也可以让它给你讲笑话,也可以让它帮你执行一些基本的Linux命令,或者帮你启动一些Linux下的应用。
PS:播放电影,查询天气,查看路线,查看个人健康状况,自动回复手机消息等等功能还在开发中,关注博主,敬请期待…

项目技术点
  1. C++ STL
  2. HTTP 第三方库
  3. 图灵机器人
  4. 百度语音识别和语音合成
  5. Linux 系统 / 网络编程
  6. 各种各种第三方库和第三方工具的安装与使用
项目演示

在这里插入图片描述

项目开发过程

1. 建立项目目录,创建工程目录,引入百度语音识别SDK
在这里插入图片描述
2. 学习使用jsoncpp

  • 主要使用【StreamWriterBuilder,StreamWriter,CharReaderBuilder,CharReader ,write函数,parse函数,Json::Value】
  • 下面是构建json串的一个示例以及参数说明:
std::string Message2Json(std::string &Wmsg) 
		{
			Json::Value root;  //相当于一个万能容器,可存放任意类型
			Json::StreamWriterBuilder wb;    //可以向输入流中写文本的对象
			std::ostringstream os;   //输入流的缓冲区
			
			root["reqType"]=0;  //输入类型为文本
			Json::Value item1;
			Json::Value item1_1;
			item1_1["text"]=Wmsg;
			item1["inputText"]=item1_1;
			root["perception"]=item1;  //输入的信息
			Json::Value item2;
			item2["apiKey"]=apiKey;
			item2["userId"]=userID;
			root["userInfo"]=item2;  //用户相关参数
			
			std::unique_ptr<Json::StreamWriter> sw(wb.newStreamWriter());  //指向对象的智能指针
			sw->write(root,&os);     //向输入流缓冲区中写入root类型的数据
			std::string ret=os.str();  //提取输入流缓冲区内数据
			return ret;   }

在这里插入图片描述

通过文档的研读,我发现json的序列化与反序列化就是解析json串与构建json串的过程,并且json还支持嵌套,如json里面包含“json”,甚至json还包含”json数组“等

3. 设计Baymax中的相关类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我的管家运行过程:在这里插入图片描述

4. 图灵机器人核心代码实现
要实现与图灵机器人进行智能对话我们就要完成以下几个功能:

std::string Talk(std::string &msg)
		{
			std::string json=Message2Json(msg);        //将我们的文本构造成json串
			std::string response=RequestRobot(json);   //用http请求机器人得到回复
			std::string echo=Json2Message(response);    //解析得到的json串
			return echo;                                //返回机器人的文本回复
		}

5. 调用逻辑

#include "Baymax.hpp"
using namespace std;
int main() {
		Baymax *bm = new Baymax;
	    bm->Run();
		return 0;
}

6. command.etc 命令配置文件
在这里插入图片描述
7. Makefile 文件
在这里插入图片描述
8. 项目完整文件
完整的项目文件参照我的GitHub:https://github.com/girl-6/Linux/tree/master/Baymax
关于项目的测试内容参照博客:项目测试

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值