[项目介绍]我的智能语音管家——Jarivs

首先,再写我的项目之前,我相信大家都使用过自己的智能语音小管家,什么是自己的智能语音小管家呢,比如说:苹果手机里面的—Siri,或者说是百度的—小度…等等,有了这些智能语音小管家,让我的操作方便了许多,也让我们的使用更加的简单化,更容易操作,让一些老人就算不会使用手机,只要通过语音也可以进行操作的简单化操作,所以说我也想写一个自己的智能语音管家,原因在于它不仅充当着“私人健康顾问”的角色,还可以陪主人聊天,给主人讲笑话,甚至可以照顾主人的情绪。终于经过我不断的学习和探索,我也拥有了一个属于我自己的Jarvis!!虽然现在我只是实现了部分,但是万事开头难,我相信有了现在的基础,只要以后我继续不断的学习,我一定能将它改善成一个完美的管家。

项目简介

这是一个通过图令平台的人机交互功能,结合百度AI平台的语音识别和语音合成技术 ,使用C++在Linux下编写的可以智能AI对话和执行语音命令的语音管理工具.你可以直接语音和我的智能机器人管家聊天,也可以让它给你讲笑话,也可以让它帮你执行一些基本的Linux命令,或者帮你启动一些Linux下的应用。

项目技术点

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

项目演示
在这里插入图片描述
项目开发过程
7. 建立项目目录,创建工程目录,引入百度语音识别SDK
在这里插入图片描述
2. 学习使用jsoncpp
1.主要使用【StreamWriterBuilder,StreamWriter,CharReaderBuilder,CharReader ,write函数,parse函数,Json::Value】
2.下面是构建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;   }![在这里插入图片描述](https://img-blog.csdnimg.cn/20200526130002879.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RwZnhhY2E2,size_16,color_FFFFFF,t_70)
**8. 设计Jarivs中的相关类**
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020051213271434.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RwZnhhY2E2,size_16,color_FFFFFF,t_70
)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200512132739868.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RwZnhhY2E2,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20200512132819372.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RwZnhhY2E2,size_16,color_FFFFFF,t_70)
**下面是运行过成:**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200526121825520.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RwZnhhY2E2,size_16,color_FFFFFF,t_70)
**9. 图灵机器人核心代码实现**
要实现与图灵机器人进行智能对话我们就要完成以下几个功能:
```c
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;                               //返回机器人的文本}

10. 调用逻辑

#include "Jarvis.hpp"
using namespace std;int main()
{Jarvis *js = new Jarvis();if(!js->LoadEtc()){return 1;}js->Run();return 0;
}

11. command.etc 命令配置文件在这里插入图片描述
12. Makefile 文件
在这里插入图片描述
8. 项目完整文件
完整的项目文件参照我的GitHub:https://github.com/dpfnmt/Train_project/tree/master/Jarvis


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部