張婷婷 于方軍
“小胖”是進(jìn)化者公司為孩子設(shè)計(jì)的機(jī)器人,它具備強(qiáng)大的語(yǔ)音交互功能,能根據(jù)主人要求自行走動(dòng),回答各種難題。聊天機(jī)器人作為人工智能應(yīng)用層面的入門(mén)課例,容易激發(fā)學(xué)生的興趣,幫助學(xué)生陜速感知人工智能的應(yīng)用情境。
虛谷號(hào)則能夠?yàn)槿斯ぶ悄芎蚉ython編程教學(xué)提供完整的課程資源包。下面,筆者就利用虛谷號(hào)搭建硬件平臺(tái),通過(guò)圖靈機(jī)器人(www.tuling123.com)和百度AI兩個(gè)軟件平臺(tái),引導(dǎo)學(xué)生學(xué)會(huì)連接這些平臺(tái)做一個(gè)屬于自己的個(gè)性化語(yǔ)音聊天機(jī)器人(如圖1)。
本課程的設(shè)計(jì)步驟采用循序漸進(jìn)的方式,由簡(jiǎn)到繁,便于學(xué)生逐步深化提高,使學(xué)生較好地理解語(yǔ)音聊天機(jī)器人的實(shí)現(xiàn)原理,進(jìn)而了解人工智能的語(yǔ)音識(shí)別應(yīng)用,從而啟發(fā)學(xué)生發(fā)揮創(chuàng)意開(kāi)發(fā)屬于自己的人工智能作品。
課程設(shè)計(jì)了兩種聊天機(jī)器人:一是借助圖靈平臺(tái),通過(guò)調(diào)用request和json庫(kù),實(shí)現(xiàn)簡(jiǎn)單的文本聊天機(jī)器人程序,使學(xué)生對(duì)聊天機(jī)器人程序的問(wèn)答過(guò)程有個(gè)初步概念;二是借助百度語(yǔ)音平臺(tái),使用虛谷號(hào)架設(shè)聊天機(jī)器人實(shí)物框架,實(shí)現(xiàn)當(dāng)機(jī)器人說(shuō)話時(shí),伴隨回復(fù)的語(yǔ)音,機(jī)器人嘴巴一張一合。最終使學(xué)生通過(guò)構(gòu)建實(shí)物語(yǔ)音聊天機(jī)器人,體驗(yàn)人工智能作品創(chuàng)作的過(guò)程。
教學(xué)過(guò)程主要體現(xiàn)了函數(shù)層面的模塊化教學(xué),通過(guò)將功能封裝成庫(kù),再調(diào)用庫(kù)的方法,帶學(xué)生一起,打開(kāi)“人工智能”的“黑盒子”,理解語(yǔ)音聊天機(jī)器人的“聽(tīng)”“思”“說(shuō)”的過(guò)程。
聽(tīng)——它能聽(tīng)得懂?主要通過(guò)錄音、語(yǔ)音轉(zhuǎn)文本兩個(gè)活動(dòng)依次理解智能語(yǔ)音聊天機(jī)器人程序“聽(tīng)懂”的過(guò)程。使學(xué)生理解人工智能就其本質(zhì)而言,是對(duì)人的思維的信息過(guò)程的模擬。
思——它會(huì)思考嗎?借助圖靈機(jī)器人平臺(tái),上傳一個(gè)json格式的請(qǐng)求(包含聊天內(nèi)容和個(gè)人信息等),獲取到回復(fù),再?gòu)氖盏降膶?duì)象中提取出回復(fù)的文本。使學(xué)生理解智能語(yǔ)音聊天機(jī)器人程序“思考”的過(guò)程,理解人工智能可以模擬人的意識(shí)和思維,它雖然不是人的智能,但卻能像人那樣思考,也可能超過(guò)人的智能。
說(shuō)——它是怎么說(shuō)話的?主要通過(guò)探究“文本轉(zhuǎn)語(yǔ)音”和“播放語(yǔ)音”兩個(gè)活動(dòng)理解智能語(yǔ)音聊天機(jī)器人程序“說(shuō)話”的過(guò)程。使學(xué)生理解智能語(yǔ)音機(jī)器人的“說(shuō)”和我們?nèi)祟惖摹罢f(shuō)”的本質(zhì)區(qū)別。
技術(shù)流程為:speechRecognition(錄音)→百度語(yǔ)音(speech-to-Text語(yǔ)音轉(zhuǎn)文本)→圖靈機(jī)器人(語(yǔ)義分析及應(yīng)答)→百度語(yǔ)音(Text-to-speech文本轉(zhuǎn)語(yǔ)音)→PyAudio(音頻播放)(如下頁(yè)圖2)。
虛谷號(hào)運(yùn)行完整的Linux系統(tǒng),連好USB聲卡后,打開(kāi)虛谷號(hào)的音量控制。
在配置項(xiàng)里面只保留USB聲卡,把其他設(shè)備都關(guān)閉。
1.安裝SpeechRecognition.
SpeechRecogintion是Python的一個(gè)語(yǔ)音識(shí)別框架,已經(jīng)對(duì)接了如谷歌和微軟的STT(語(yǔ)音轉(zhuǎn)文本)服務(wù)。本課例的語(yǔ)音識(shí)別及合成用的是百度的開(kāi)放服務(wù),所以只需要SpeechRecogintion的錄音功能。它可以檢測(cè)語(yǔ)音中的停頓自動(dòng)終止錄音并保存。
2.安裝IDEL
IDLE是開(kāi)發(fā)Python程序的基本IDE(集成開(kāi)發(fā)環(huán)境),具備基本的IDE的功能,是非商業(yè)Python開(kāi)發(fā)的不錯(cuò)的選擇。運(yùn)行上面代碼后安裝了Python3.0的集成開(kāi)發(fā)環(huán)境,相對(duì)于虛谷號(hào)預(yù)裝的jupyter開(kāi)發(fā)環(huán)境,IDLE運(yùn)行占用資源少。
3.升級(jí)pip到19.0.3
pip是Python包管理工具,后期的包安裝用到pip,以上代碼是升級(jí)到最新版。
4.安裝PyAudio
Linux系統(tǒng)下可以直接使用系統(tǒng)自帶的包管理器安裝PyAudio(如Ubuntu和Raspbian系統(tǒng)的aptget),可以使用pip命令安裝,不過(guò)需要提前裝好編譯用的portaudio19。
5.語(yǔ)音識(shí)別代碼
百度語(yǔ)音是百度云AI開(kāi)放平臺(tái)提供的支持語(yǔ)音識(shí)別和語(yǔ)音合成的服務(wù),注冊(cè)以后就可以直接訪問(wèn)它的REST API了,相有向普通用戶提供免費(fèi)的調(diào)用額度。注冊(cè)成功以后,進(jìn)入語(yǔ)音服務(wù)的控制臺(tái)創(chuàng)建一個(gè)新的應(yīng)用,記下AppID、API Key和Secret Key(如圖3)。
語(yǔ)音識(shí)別代碼過(guò)程中,百度AI可以提供面向Python的框架baidu-aip,這里可以直接使用該框架,安裝pip install baiduaip,并把代碼中的Key替換成自己的,接著將SpeechRecognition錄制的音頻上傳至百度語(yǔ)音的服務(wù),返回識(shí)別后的文本結(jié)果并輸出(如圖4)。
6.圖靈機(jī)器人
圖靈機(jī)器人是一個(gè)提供(一定額度內(nèi))免費(fèi)的智能聊天服務(wù)的平臺(tái),注冊(cè)以后就可以創(chuàng)建自己的聊天機(jī)器人并接入到項(xiàng)目中。首先要進(jìn)入圖靈機(jī)器人的控制臺(tái)并創(chuàng)建一個(gè)新的聊天機(jī)器人,將其記下并分配到apikey(如圖5),并在代碼中配置為自己的apikey(如圖6)。接著,上傳一個(gè)聊天內(nèi)容,獲取到回復(fù),再?gòu)氖盏降膶?duì)象中提取出回復(fù)的文本(如下頁(yè)圖7)。
7.百度語(yǔ)音(TTS)
可以利用百度的文本轉(zhuǎn)語(yǔ)音(TTS)引擎功能,這種方式生成的語(yǔ)音效果很好,且其中spd設(shè)置可以調(diào)節(jié)語(yǔ)速,vol可調(diào)節(jié)音量,per可選擇人物,在這里選擇4號(hào)丫丫,并在本程序中定義_個(gè)speak函數(shù)完成這部分功能(如圖8)。
8.PyAudio播放
本課例中調(diào)用系統(tǒng)中的SoX命令將上一步生成的MP3音頻轉(zhuǎn)為wag格式,再用PyAudio播放。SoX是一個(gè)強(qiáng)大的跨平臺(tái)的音頻處理工具,Linux系統(tǒng)可以直接使用包管理器安裝:sudo apt-getinstall 80x libsox-fmt-mp3(如圖9)。
通過(guò)上述配置后,插上耳麥,就能實(shí)現(xiàn)與機(jī)器人語(yǔ)音聊天了。由于百度的錄音時(shí)間設(shè)置,如果超過(guò)60秒沒(méi)有檢測(cè)到麥克風(fēng)輸入,會(huì)報(bào)錯(cuò)停止程序,記得要再次啟動(dòng)程序。另外,還可以通過(guò)設(shè)置圖靈平臺(tái)的后臺(tái)設(shè)置,讓機(jī)器人更加個(gè)性化(如圖10)。
總之,基于虛谷號(hào)的語(yǔ)音聊天機(jī)器人可以開(kāi)發(fā)的功能非常豐富,既可以從小處著手,開(kāi)發(fā)小型的適合一個(gè)學(xué)生獨(dú)立完成的項(xiàng)目,也可以開(kāi)發(fā)比較大型的適合團(tuán)隊(duì)完成的項(xiàng)目。在本課例中,在使用虛谷號(hào)完成語(yǔ)音聊天機(jī)器人作品的同時(shí),不只是學(xué)習(xí)人工智能的應(yīng)用技術(shù),更重要的是在教育活動(dòng)中融入了創(chuàng)客精神和內(nèi)涵,提高學(xué)生的創(chuàng)新意識(shí)和實(shí)踐能力,將學(xué)生培養(yǎng)成為有創(chuàng)客精神的人。這也正是虛谷號(hào)的初心與堅(jiān)持所在。