【項目介紹】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
關於項目的測試內容參照博客:項目測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章