Makee.io 如何運用 IBM Watson 打造實體對話機器人?
在自造者(Maker)社群中相當活躍的 Makee.io 團隊,秉持著「人人皆可跨越技術障礙,沉浸於手作樂趣之中」的理念,近兩年持續不斷地透過課程引導有興趣的玩家們發揮想像力,動手作出例如星際大戰(Star Wars)的絕地武士光劍、可自動控制的電動滑板、遙控車,甚至是可解決生活問題的小道具,例如具備溫濕度偵測機制的智慧盆栽、寵物自動餵食機等作品。<h2>投入研究 IBM Watson 人工智慧服務 實作對話式應用</h2> <p>事實上,Makee.io 團隊的六名共同創辦人,大多為軟體工程背景,對於硬體設計架構可說相當陌生,最初只因為好玩而聚集在一起研究,共同做出夢想中的玩具,並且在團隊專屬網站上(<a href="http://oranwind.org/" target="_blank">http://oranwind.org/</a>)分享操作相關知識,更透過非定期舉辦的實作工作坊(Workshop),來傳達團隊的創意與理念,因而在自造者領域中享有盛名。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn0-techbang.pixcdn.tw/system/images/388809/original/1978bdf8d4aef84a1b5054da8de271d3.png?1491365979" alt="" width="700" height="508" />▲對於新科技抱持的熱情與好奇心,並樂於分享創意理念,共同組成 Makee.io 團隊。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn1-techbang.pixcdn.tw/system/images/388818/original/352a8b77d325eaaf60ed2502946336f4.png?1491366468" alt="" width="700" height="393" />▲Makee.io團隊實作電動滑板、遙控車、寵物自動餵食機、光劍等作品。</p> <p>自從具備人工智慧的 AlphaGo 挑戰世界冠軍棋士,以四勝一敗成績贏得勝利後,引發人們廣泛的討論,深度學習(Deep Learning)技術幾乎已成為現代化智慧應用的顯學。熱衷於運用新技術的 Makee.io 團隊自然也投入研究人工智慧,自去年開始測試 IBM Watson 雲端服務平台提供的語音轉文字(Speech To Text)、文字轉語音(Text To Speech)、對話(Conversation)服務,近來更進一步搭配深圳矽遞(SeeedStudio)新推出的 ReSpeaker 開發套件相互介接,實作出對話式音樂播放應用情境。</p> <h2>視覺化操作介面、中文語系支援 不須開發即可自定對話情境&nbsp;</h2> <p>目前主流的人工智慧技術供應商,除了 IBM Watson,還包含微軟、Amazon 等國際知名雲端服務平台,其實 Makee.io 皆已測試驗證,最後選擇以 IBM Watson 來實作對話式音樂播放的應用,主要是看重 IBM Watson 具有可便於操作配置對話規則的介面設計,以表單方式定義意圖(Intent)與實體(Entities),即可自定對話(Dialog)情境。且操作介面中貼心地設計可綜觀全局的示意圖,藉此查看階層式對話內容,以及觸發的規則,可說是 IBM Watson 較其他技術服務供應商最大的差異。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn1-techbang.pixcdn.tw/system/images/388810/original/332c9e417a6bc73dcfcdce5643ee928f.png?1491366010" alt="" width="700" height="864" />▲IBM Watson 操作介面提供對話(Dialog)情境階層圖示,讓語句內容與觸發回應的相關規則都能一目了然。</p> <p>以往在建立對話規則時,通常需要開發者撰寫程式碼邏輯,才得以執行對答的應用。IBM Watson 的操作介面則是全程採用拖拉方式建立規則,即便不懂得 JSON(JavaScript Object Notation)格式所描述的資料結構,同樣可自行創造出個性化應用模式,相當直覺容易上手。</p> <p>就相近用語判斷為例,通常人們說 Hello、Hi、Good morning 皆為打招呼之意,對機器處理而言均為獨立語句,彼此之間本毫無意義。但隨著輸入語句更多元之後,機器即可自行判定此類用語實屬相同類別,背後的技術即是運用深度學習來協助。</p> <p>舉例而言,Makee.io 運用 IBM Watson Conversation 服務的瀏覽器操作介面,直接定義問候用語的意圖(Intent)樣態,凡是語音轉文字取得的是 Hello、Hi、Good morning、Good afternoon、Good evening,皆屬於「#greeting」類別。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn2-techbang.pixcdn.tw/system/images/388811/original/abb09f77dbf9901a2c7d55565c28fd37.png?1491366037" alt="" width="700" height="378" />▲瀏覽器操作介面定義問候用語的 Intent 樣態。</p> <p>至於實體(Entities)應用模式 appliance,則是建立 air conditioning、headlights、music,三種情境,同義詞依序為 air、lights、radio。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn0-techbang.pixcdn.tw/system/images/388812/original/55af790a1cbab9ce9b1951c0209e3132.png?1491366057" alt="" width="700" height="326" />▲Entities 建立應用模式。</p> <p>完成後開始設計階層式對話(Dialog)節點,前述定義的 #greeting 即為觸發條件。一旦語音轉文字的結果為問候語類別,隨即觸發Watson把文字轉為語音回應的內容為「Hi! What can I do for you」;同時在相同的root階層中再建立「#turn_on」節點,並且於該節點上擴展新增持續對話(Continue conversation)的子節點,以便配置 Entities 應用的 appliance。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn0-techbang.pixcdn.tw/system/images/388813/original/47486a7e858d11dc30f62b3cc7d86297.png?1491366094" alt="" width="700" height="361" />▲設計階層式對話節點,選擇觸發條件,也就是先前配置的 Intent 或 Entities,以及自定 Watson 把文字轉為語音回應的內容。</p> <p>若觸發 appliance 所定義的 music 或同義字,Watson 會回應「OK! What kind of music would you like to hear」,再依據前端裝置回傳的語音訊息,執行音樂的播放。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn1-techbang.pixcdn.tw/system/images/388814/original/86666debe3eeca661b8f6633bcd3f477.png?1491366115" alt="" width="700" height="361" />▲最後設定觸發撥放音樂的規則。</p> <p>經由 Makee.io 實作經驗可發現,如今 IBM Watson 雲端平台上,已具備 Speech To Text、Text To Speech、Conversation 等普遍被採用的技術服務,開發者或玩家根本不需要懂得演算法等艱澀難懂的知識,只要學習配置與介接的方式即可達到相同目的。</p> <p>另一方面,IBM Watson 在語系種類的支援程度也著實讓人驚豔。畢竟本土應用是以中文與英文為主,而現階段自然語言處理技術可清楚辨識英文句子,但未必具備中文的斷詞、斷句能力,而 IBM Watson 對於計算中文語句相關性的正確程度卻出奇地好,可省去大部分的開發時間。</p> <h2>串接前端裝置與雲端平台服務不可或缺的&nbsp;Python 語言&nbsp;</h2> <p>在實際應用情境中,關鍵的「大腦」如今有 IBM Watson 雲端平台服務所提供的資源協助,前端的 ReSpeaker 開發套件欲介接,須透過撰寫 Python 程式碼呼叫 IBM Watson 提供的應用程式介面(API)串接,因此 Makee.io 在設計實作工作坊課程中,至少會花費半天以上時間簡介 Python 語法,稍具概念之後才有能力進而採用 Python 的方法(Method)執行呼叫,以實作出想達成的應用。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn2-techbang.pixcdn.tw/system/images/388815/original/8136adb52f060dd4e1fa51db2ef6e9a0.png?1491366137" alt="" width="700" height="525" />▲深圳矽遞(SeeedStudio)新推出 ReSpeaker 開發套件,介接 IBM Watson 雲端平台服務,簡化實作語音相關應用複雜度。</p> <p>所幸 Python 對於初學者而言,可說是較為親近且容易學習的程式語言,不僅台灣的大專院校已有開設 Python 程式設計教學,在歐美國家甚至更早,在國、高中時期就已安排程式開發課程,畢竟 Python 屬於高階語言,只要懂得英文,即可理解程式碼的邏輯。</p> <p>當然,開發社群中也有不少擁護 Node.js 的玩家,IBM Watson API 亦可支援介接,在 GitHub 所屬的 Watson Developer Cloud 即可取得相當豐富的 Library,協助開發者快速地實作運行。</p> <p>至於搭配的整合式開發環境(Integrated Development Environment,IDE),Makee.io 是採用目前主流的 Jupyter(以前名為 Ipython Notebook),相當便於引導初學者入門教學。通常撰寫完成高階語言後必須再經過編譯(Compile)後,機器才得以運行,過去往往是透過命令模式介面,輸入指令來執行,而 Jupyter 則是為網頁瀏覽器介面,輸入程式碼後點選「Running」,在畫面下方就會產出運行結果。開發工具環境不須再經過繁複的安裝過程,直接開啟瀏覽器就可使用相同功能項目。</p> <p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn2-techbang.pixcdn.tw/system/images/388816/original/3f81be4434021cde9baa554f68eed21c.png?1491366161" alt="" width="700" height="431" />▲Python 的整合式開發環境(IDE)可運用 Jupyter 瀏覽器介面,毋須安裝軟體即可使用相同功能項目。</p> <p>如此一來,程式語言、開發環境皆具備後,接下來即可登入 BlueMix 雲端平台,啟用 Watson API 服務,再把 API 所產生的 Token 以及 BlueMix 平台登入的帳號密碼,內嵌到程式碼之中,完成介接的配置。之後即可整合前述的 REST 架構,串接已建立的對話規則,讓前端裝置與雲端服務彼此透過 JSON 格式所描述執行資料交換。</p> <p>不論是前端的連網裝置、後端的雲平台,發展思維大多是建立可實際降低應用複雜度的機制,讓開發者或玩家得以簡單串接,落實創意應用的點子。畢竟現階段應用才是最核心的關鍵,複雜的開發技術已可運用現代化雲端服務平台之力來降低學習門檻,自造者僅須專注於發想應用情境,即可經由簡單的方式實踐創意。</p> <h2>相關資源&nbsp;</h2> <ul> <li>IBM Watson Developer Cloud,提供不同環境所需的 API 與 SDK:<a href="https://github.com/watson-developer-cloud">https://github.com/watson-developer-cloud</a></li> <li>IBM Watson&nbsp;教學:<a href="http://oranwind.org/-ibm-bluemix-watson-jian-li-conversation-dialog/" target="_blank">http://oranwind.org/-ibm-bluemix-watson-jian-li-conversation-dialog/</a></li> <li>Makee.io 介接 IBM Watson&nbsp;API 服務實作 Respeaker&nbsp;測試影片:<a href="https://www.youtube.com/watch?v=MdDZGjd6dCs&amp;feature=youtu.be" target="_blank">https://www.youtube.com/watch?v=MdDZGjd6dCs&amp;feature=youtu.be</a></li> <li>Makee.io 電動滑板測試影片:<a href="https://www.facebook.com/makee.io/videos/1172546122819561/" target="_blank">https://www.facebook.com/makee.io/videos/1172546122819561/</a></li> <li>Makee.io 遙控車測試影片:<a href="https://www.youtube.com/watch?v=4x_iTIfalSY" target="_blank">https://www.youtube.com/watch?v=4x_iTIfalSY</a></li> <li>Makee.io 粉絲團:<a href="https://www.facebook.com/makee.io/" target="_blank">https://www.facebook.com/makee.io/</a></li> </ul><a href="http://www.facebook.com/TKbang">加入T客邦Facebook粉絲團</a><img src="http://feeds.feedburner.com/~r/techbang/~4/XXt1RyqP4PI" height="1" width="1" alt=""/>