国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

用樹莓派做自己的智能音箱

2020-10-14 22:27牟曉東
電腦報(bào) 2020年38期
關(guān)鍵詞:小度調(diào)用樹莓

牟曉東

功能豐富的外接傳感器一直是樹莓派等開源硬件編程的重要輸入設(shè)備,比如超聲波傳感器能夠監(jiān)測與障礙物間的距離。如果給樹莓派安裝上全向麥克風(fēng)和音箱,借助古德微積木編程,我們就可以輕松實(shí)現(xiàn)智能音箱的“語音喚醒”功能——通過特定的語音指令(比如百度AI平臺(tái)的“小度小度”)使樹莓派處于待命狀態(tài),然后再通過語音識(shí)別將用戶的語音指令“翻譯”并執(zhí)行,完成開關(guān)燈和在屏上顯示文字信息等功能,甚至是通過音箱進(jìn)行語音對(duì)話。下面,我們就打造這樣一個(gè)“聽話”的樹莓派智能音箱。

一、實(shí)驗(yàn)器材與連接

需要使用的實(shí)驗(yàn)器材包括:樹莓派一塊,古德微擴(kuò)展板一塊,USB接口全向麥克風(fēng)一個(gè),紅黃綠藍(lán)LED燈各一支,OLED顯示屏一塊,有源音箱一個(gè)。

將四支LED燈分別插入擴(kuò)展板的5號(hào)、6號(hào)、12號(hào)和16號(hào)插孔,注意長腿為正極、短腿為負(fù)極;仔細(xì)將OLED顯示屏的四個(gè)引腳插入I2C的Down列,注意標(biāo)注VCC、GND、SCL和SDA各引腳順序與擴(kuò)展板要一一對(duì)應(yīng);全向麥克風(fēng)插入U(xiǎn)SB接口,音箱插入樹莓派的音頻輸出圓孔;最后,插入電源線,通電啟動(dòng)系統(tǒng)(如圖1)。

二、古德微機(jī)器人平臺(tái)編程

在瀏覽器中訪問古德微機(jī)器人網(wǎng)站(http://www.gdwrobot.cn/),登錄古德微板的賬號(hào)后點(diǎn)擊“設(shè)備控制”,進(jìn)入“積木”編程區(qū)。我們將編寫包括語音喚醒主體程序和“開燈”、“關(guān)燈”、“加油”與“自強(qiáng)”四個(gè)功能子函數(shù)。

1.主體程序

首先從“人工智能→語音識(shí)別”中調(diào)用“小度小度關(guān)鍵詞語音喚醒”模塊,創(chuàng)建一個(gè)系統(tǒng)默認(rèn)的“Wakeup新函數(shù)”;該函數(shù)的第一條語句為“播放本地音頻”,這個(gè)“本地”音頻文件是指“樹莓派系統(tǒng)/home/pi/temp/ding.mp3”文件,作用是當(dāng)語音喚醒成功后用提示音“?!眮眄憫?yīng)用戶。

“輸出調(diào)試信息‘Hello”作用是在LOG調(diào)試區(qū)分別輸出“Hello”提示信息。

接著建立“語音文字”變量,賦值為“將3秒語音輸入轉(zhuǎn)換成文字輸出”,作用是將用戶的語音指令轉(zhuǎn)換為文本信息;“輸出調(diào)試信息‘語音文字”作用是在LOG調(diào)試區(qū)輸出轉(zhuǎn)換為文本格式的語音指令。

接下來是包含五個(gè)分支的“如果…執(zhí)行…”判斷語句,前面四個(gè)都是從文本格式的語音指令中尋找是否有對(duì)應(yīng)的關(guān)鍵字出現(xiàn),這些關(guān)鍵字分別是“開”、“關(guān)”、“加油”和“自強(qiáng)”:如果指令中含有“開”(比如用戶的語音指令是“請(qǐng)開燈!”),即“從文本‘語音文字尋找第一個(gè)出現(xiàn)的文本‘開”的值不為0(條件為真),那么就調(diào)用“開燈”函數(shù);如果找到的關(guān)鍵字是“關(guān)”,則調(diào)用“關(guān)燈”函數(shù);“加油”和“自強(qiáng)”也是分別調(diào)用對(duì)應(yīng)的函數(shù),執(zhí)行開關(guān)燈和顯示對(duì)應(yīng)信息的操作。

如果這四個(gè)條件均不成立的話,說明用戶的語音指令不是控制燈和信息顯示,則需要借助百度的智能語音功能與用戶對(duì)話。建立“回答問題”變量,賦值為“文本回答問題‘語音文字”,并且既在LOG區(qū)以文本形式顯示“答案”,同時(shí)也通過“播放語音‘回答問題”模塊在音箱中語音回答該問題(如圖2)。

2.四個(gè)子函數(shù)程序

根據(jù)相似度,四個(gè)子函數(shù)可分為兩組:“開燈”與“關(guān)燈”一組、“加油”與“自強(qiáng)”一組?!伴_燈”函數(shù)通過四個(gè)語句“控制x號(hào)小燈‘亮”來實(shí)現(xiàn)插接在5號(hào)、6號(hào)、12號(hào)和16號(hào)插孔的LED燈發(fā)光,而“關(guān)燈”函數(shù)則是四個(gè)“控制x號(hào)小燈‘滅”語句,控制四支LED燈熄滅(如圖3)。

“加油”與“自強(qiáng)”函數(shù)稍顯復(fù)雜,需要對(duì)OLED顯示屏先進(jìn)行初始化操作,接著要建立“圖片對(duì)象”變量進(jìn)行圖片模式設(shè)置(均保持默認(rèn)值),然后分別為其賦值“中國,加油!”和“吾輩當(dāng)自強(qiáng)”,并設(shè)置好文字的大小和坐標(biāo)顯示位置,最終通過“把圖片‘圖片對(duì)象顯示到OLED顯示屏”語句實(shí)現(xiàn)文字信息的顯示。添加一個(gè)5秒的等待語句,作用是控制文本信息在顯示屏上停留(否則閃一下就消失了),最后關(guān)閉OLED顯示屏(如圖4)。

程序編寫完畢,點(diǎn)擊“保存”按鈕,將程序代碼保存。

三、測試樹莓派的“語音喚醒”

打開LOG輸出區(qū),點(diǎn)擊“運(yùn)行”按鈕,開始對(duì)著麥克風(fēng)喊話,進(jìn)行語音喚醒測試。由于我們調(diào)用的是百度的智能語音功能,所以喚醒語句也是“小度小度”AI的智力也與百度智能音箱一致。

依次測試四個(gè)函數(shù)功能,第一條“小度小度,請(qǐng)開燈”,四支LED燈會(huì)被點(diǎn)亮;第二條語音指令:“小度小度,請(qǐng)關(guān)燈”,四支LED燈應(yīng)熄滅;第三條語音指令:“小度小度,加油”,OLED屏上應(yīng)顯示“中國,加油!”(5秒后關(guān)閉);第四條語音指令:“小度小度,自強(qiáng)”,OLED屏上應(yīng)顯示“吾輩當(dāng)自強(qiáng)”。

再測試非預(yù)定指令,發(fā)出第五條語音指令:“小度小度,背首唐詩聽聽”,音箱語音輸出“不給你聽”,LOG區(qū)也同步有語音指令的對(duì)應(yīng)文字及回答的文字顯示(如圖4)。

根據(jù)實(shí)際測試,需要注意的是,一是語音喚醒必須先說“小度小度”,稍停,聽到音箱中發(fā)出“叮”的一聲后再發(fā)出諸如“請(qǐng)開燈”的語音指令,因?yàn)椤靶《刃《取笔浅绦虻哪J(rèn)喚醒關(guān)鍵詞;二是語音指令需要簡短明確,很多語音指令都能“喚醒”控制LED發(fā)光,比如“一分鐘之內(nèi)馬上開燈”、“不要開燈”,甚至是“開個(gè)玩笑吧”,只要語音指令中能夠被檢測到有“開”這個(gè)關(guān)鍵字便會(huì)調(diào)用“開燈”函數(shù)——除非LED燈發(fā)光時(shí)再發(fā)“開燈”指令,好像是“無效”的(其實(shí)是重復(fù)執(zhí)行了“開燈”操作);三是主體程序中的最后一個(gè)判斷分支是個(gè)“開放式”語音指令(除了前四種可能之外的其他各種可能),樹莓派就會(huì)進(jìn)行智能判斷并給出較為合理的回答,舉例:“唱首歌聽聽”——回答:“別人唱歌要錢,我唱歌要命,你可想好了?”、“謝謝你”——回答:“別,客,氣”,第二次要求“背首唐詩聽聽”——回答:“唐詩三百首,背完了,才五個(gè)字,忒簡單”。

當(dāng)然,這些“智能”回答都是網(wǎng)站平臺(tái)背后的數(shù)據(jù)庫對(duì)應(yīng)記錄的映射調(diào)用,但趣味性極強(qiáng),非常適合低年齡段學(xué)生進(jìn)行對(duì)話測試,提高他們對(duì)開源硬件編程的學(xué)習(xí)興趣。

猜你喜歡
小度調(diào)用樹莓
說服自己早起的理由
苦澀的蛋撻
百度發(fā)布兩款人工智能硬件新品
小度智能音箱發(fā)布 搭載DuerOS 2.0系統(tǒng)
基于Android Broadcast的短信安全監(jiān)聽系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
黃金水果紅樹莓
樹莓紅了 游人醉了
e絡(luò)盟率先推出第三代樹莓派
年度睡姿大盤點(diǎn)(下)
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
阿拉善左旗| 绥滨县| 勐海县| 龙州县| 丽水市| 汤原县| 玛纳斯县| 奇台县| 远安县| 游戏| 石狮市| 札达县| 馆陶县| 全南县| 锦屏县| 古浪县| 满城县| 友谊县| 响水县| 松阳县| 永春县| 从化市| 淮滨县| 长垣县| 莒南县| 广水市| 东明县| 濉溪县| 广宗县| 眉山市| 延吉市| 大关县| 新巴尔虎右旗| 达日县| 金华市| 婺源县| 宾阳县| 五指山市| 麻江县| 泸州市| 平塘县|