專案簡介:開發環境:
centos7 , g++ 7.3.1
應用技術
專案執行流程:
開發步驟:
在整體流程中要把語音轉換為文字,判斷是否是指令,如果不是指令,就使用文字與圖靈機械人進行對話,我決定先實現與圖靈機械人進行文字互動,除錯正確後,如果後續出現bug那麼就可以縮小查詢bug的範圍。
1、與圖靈機械人互動
通過閱讀文件,我知道了想要與圖靈機械人進行互動,需要用到http post,要互動的資料是以json格式來進行傳輸。
要使用http post,就需要在程式中建立乙個http client 並實現乙個post方法。
(這裡寫建立方法)
這裡注意到要使用這個sdk就得安裝libcurl庫,以支援不同協議的鏈結以及不同伺服器之間的溝通。
解決了通訊通道的問題,接下來就要解決傳輸格式問題,在上面api使用文件中說到,對圖靈api發起請求的引數格式為json,所以想要進行請求就要把請求的資料轉換成json格式。
仿照上面的示例格式,構建自己的json資料
string chat
(string message)
{ json::value root;
root[
"reqtype"]=
0;json::value text;
text[
"text"
]= message;
json::value inputtext;
inputtext[
"inputtext"
]= text;
root[
"perception"
]= inputtext;
json::value user;
user[
"apikey"
]= apikey;
user[
"userid"
]= userid;
root[
"userinfo"
]= user;
json::streamwriterbuilder wb;
std::ostringstream os;
std::unique_ptr<:streamwriter>
jswriter
(wb.
newstreamwriter()
);jswriter-
>
write
(root,
&os)
; std::string body = os.
str();
//儲存伺服器返反饋的資料
string response;
//對伺服器進行post請求
int code = client.
post
(url,
nullptr
, body,
nullptr
,&response)
;
//這裡複習一下,str.data()與str.c_str()的區別:
//c_str() 返回乙個指向正規c字串的指標常量,該指標保證指向乙個 size() + 1 長度的空間,而且最後乙個字元肯定是 \0
//而 data() 返回的指標則保證指向乙個size()長度的空間,不保證有沒有null-terminate
jsonreader-
>
parse
(str.
data()
, str.
data()
+str.
size()
,&root,
&errs)
; json::value result = root[
"results"];
json::value value = result[0]
["values"];
json::value text = value[
"text"
];
file *
popen
(const
char
* command,
const
char
* type)
;//popen()會呼叫fork()產生子程序,然後從子程序中呼叫/bin/sh -c來執行引數command的指令。
//引數type可使用「r」代表讀取,「w」代表寫入。
//依照此type值,popen()會建立管道連到子程序的標準輸出裝置或標準輸入裝置,然後返回乙個檔案指標。
//隨後程序便可利用此檔案指標來讀取子程序的輸出裝置或是寫入到子程序的標準輸入裝置中
AI語音助手
2 交給圖圖 std cout 波妞 message std endl if message 明天見。std string echo rb.talk message if sr.tts tts path,echo std cout 宗介 echo std endl else else util pr...
Python天氣語音播報小助手
馬上就要迎來國慶小長假了 激不激動,興不興奮!那今年國慶 天氣怎麼樣?能不能出門逛街?能不能出去旅遊?來來來,木木子為你整理好啦!這個假期,你那裡的天氣如何?旅遊出門就要挑個好的天氣!下雨天哪兒哪兒都不舒服。今天小編帶大家寫一款python天氣語音播報小助手!環境安裝 python3.6 pycha...
Facebook開發AI語音助手,或是「錢途」未卜
即便facebook近年來多次深陷 漩渦,但在科技創新方面,它從來不會缺席。昨天凌晨 北京時間 cnbc率先報道稱,從2018年初以來,facebook就致力於開發一款基於ai的數字語音助手,欲與亞馬遜的alexa 蘋果的siri,以及google assistant展開角逐。而這一報道也證實了,小...