本文是樹莓派視頻遙控小車 + iOS / Android / web應用的續(xù)篇荔茬,在前文的基礎(chǔ)上加入聊天的功能废膘,支持多種語言的文字和語音聊天。語音識別慕蔚、翻譯和語義識別借助微軟云的認知服務 (Azure Cognitive Services)丐黄。當前支持的聊天內(nèi)容主要是指令和回復,可按需要自行添加孔飒。代碼請見:github.com/shaqian/Cognitive-Bot/
演示
通過app與樹莓派聊天灌闺。文字聊天可用任意語言,自動識別語種坏瞄。語音聊天默認為英文桂对,使用其他語言需要事先指定。
網(wǎng)頁應用同時加入了圖像識別鸠匀,可簡單描述圖像內(nèi)容蕉斜,人臉識別會顯示年紀和性別,也是用的微軟認知服務缀棍。
聊天過程實現(xiàn)
用戶語音 ==1.語音識別==> 文字 ==2.語種識別==> ==3.翻譯==> 英文 ==4.語義識別==> 意圖 ==5.反應==> 英文回復 ==6.翻譯==> 本地化回復 ==7.語音合成==> 語音回復
因為用戶輸入支持多種語言宅此,所以在語義識別之前統(tǒng)一轉(zhuǎn)換為英語再識別,這樣可以減少語義識別的工作量睦柴,缺點是調(diào)用 API 較多有時會有延遲诽凌。
具體分步來說:
1. 語言識別:使用微軟?Speech Translation API?將用戶輸入的音頻轉(zhuǎn)化為文字。如果輸入為文字則跳過此步坦敌。
2. 語種識別:使用微軟 Translation Text API 識別用戶輸入文字的語種侣诵,為后面的本地化回復做準備。
3. 翻譯:使用微軟?Translation Text API?將文本翻譯為英語狱窘,為語義識別做準備杜顺。
4. 語義識別:使用微軟 Language Understanding Intelligent Service?(LUIS) 識別文本的語義。本項目使用的意圖已經(jīng)定義在 GitHub repo 下的 luis.json 中蘸炸,在 luis.ai 創(chuàng)建項目躬络,導入 json 文件,訓練并發(fā)布后即可使用搭儒。
5. 反應:上一步語義識別后得到用戶的意圖穷当,后臺程序根據(jù)意圖做出不同的反應。比如淹禾,用戶輸入為“打開空調(diào)”馁菜,LUIS 返回的意圖為“Aircon.On”,小車會根據(jù)意圖做出反應:i. 發(fā)送空調(diào)開機信號铃岔,ii. 通知用戶空調(diào)已開啟汪疮。
6. 翻譯:上一步生成的默認回復為英文,使用微軟?Translation Text API?翻譯為用戶的本地語言文本。
7. 語音合成:使用微軟?Speech API?將文本轉(zhuǎn)化為語音智嚷。
創(chuàng)建服務并使用
以上提到的微軟云服務均有免費版卖丸,有微軟云訂閱的話可以在這里了解如何創(chuàng)建,沒有訂閱可以看一下試用盏道。
服務創(chuàng)建后需填寫 CognitiveBotServer 文件夾下 config.js 中的參數(shù):
1.?LUIS
登錄https://www.luis.ai/applications稍浆,點擊?Import App,選擇?luis.json摇天,點擊?Import粹湃。
發(fā)布應用的步驟請參考:https://docs.microsoft.com/en-us/azure/cognitive-services/luis/publishapp
取消勾選?Add verbose flag,復制?Endpoint url泉坐,粘貼至 config.js 的?luisURL为鳄。
2.?Translator Speech API
復制 key 粘貼至 config.js 的?sttSubKey。
3.?Translator Text API
復制 key 粘貼至 config.js 的?transSubKey腕让。
4.?Bing Speech API
復制 key 粘貼至 config.js 的ttsSubKey孤钦。
5.?Computer Vision API
復制 key 粘貼至 config.js 的?visionKey。
使用網(wǎng)頁應用
此部分與前文樹莓派視頻遙控小車 + iOS / Android / web應用基本一樣纯丸。
1. 運行cd ~/Cognitive-Bot/CognitiveBotServer;npm install安裝依賴偏形。
2. 開啟 HLS 直播視頻流:
cd ~/picam
./make_dirs.sh
./picam -o /run/shm/hls --vflip --hflip
3. 開啟網(wǎng)頁應用:
cd ~/Cognitive-Bot/CognitiveBotServer
sudo npm start
4. 在瀏覽器中打開http[s]://[IP-of-Raspberry-Pi]?(將 [IP-of-Raspberry-Pi] 替換為實際的網(wǎng)址,比如:192.168.1.16)觉鼻。
使用移動應用
此部分與前文樹莓派視頻遙控小車 + iOS / Android / web應用基本一樣俊扭。
iOS
i. 編譯并在模擬器中運行:
cd Cognitive-Bot/CognitiveBotApp
npm install
npm run ios
ii. 在設(shè)備上運行:
參考 React Native 官方文檔的Running your app on iOS devices。
Android
i. 編譯并在模擬器中運行應用:
cd Cognitive-Bot/CognitiveBotApp
npm install
npm run android
ii. 在設(shè)備上運行:
參考 React Native 官方文檔的Running your app on Android devices坠陈。
或者直接使用repo中的 CognitiveBot.apk萨惑。