大姚
你或許想象著有一天在家里可以這樣:躺在沙發(fā)上想看電視節(jié)目時(shí),說(shuō)一聲“我想看最近最火的電視劇”,對(duì)應(yīng)的電視節(jié)目就被自動(dòng)搜索出來(lái)給你播放;困了,說(shuō)一聲“我要睡覺了”,電視機(jī)自動(dòng)關(guān)閉,門窗也自動(dòng)關(guān)上。與機(jī)器進(jìn)行語(yǔ)音交流,讓機(jī)器明白你說(shuō)的話,這是人們長(zhǎng)期以來(lái)夢(mèng)寐以求的事情。語(yǔ)音識(shí)別技術(shù)就是讓機(jī)器通過(guò)識(shí)別和理解過(guò)程把語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的技術(shù)。然而,語(yǔ)音控制類的智能硬件產(chǎn)品在很多情況下因語(yǔ)音交互體驗(yàn)不佳而備受詬病,如識(shí)別距離近、識(shí)別率低。盡管有著諸多不盡人意的缺憾,人們依然對(duì)語(yǔ)音識(shí)別技術(shù)充滿了期待。本期,我們來(lái)制作一款簡(jiǎn)單的語(yǔ)音控制燈,以體驗(yàn)一下語(yǔ)音識(shí)別技術(shù)帶來(lái)的奇妙感受。
準(zhǔn) 備 材 料
Arduino控制器(DFRDuino UNO R3),中文語(yǔ)音識(shí)別擴(kuò)展板,5V電磁繼電器,12V燈泡,電源適配器,杜邦線,連接端子2套。
中文語(yǔ)音識(shí)別擴(kuò)展板
這款語(yǔ)音識(shí)別擴(kuò)展板只需要在主控MCU的程序中設(shè)定好要識(shí)別的關(guān)鍵詞語(yǔ)列表,并動(dòng)態(tài)地把這些關(guān)鍵詞語(yǔ)以字符的形式傳送到芯片內(nèi)部,就可以對(duì)用戶說(shuō)出的關(guān)鍵詞語(yǔ)進(jìn)行識(shí)別,不需要用戶事先訓(xùn)練和錄音。它可以設(shè)置50項(xiàng)候選識(shí)別句,每個(gè)識(shí)別句可以是單字、詞組或短句,長(zhǎng)度不超過(guò)10個(gè)漢字或者79個(gè)字母的拼音串,可由一個(gè)系統(tǒng)支持多種場(chǎng)景。
該語(yǔ)音識(shí)別擴(kuò)展板采用疊層設(shè)計(jì),可以直接插接到Arduino控制器上。
電磁繼電器
電磁繼電器一般由鐵芯、線圈、銜鐵、觸點(diǎn)簧片等組成。只要在線圈兩端加上一定的電壓,線圈中就會(huì)流過(guò)一定的電流,從而產(chǎn)生電磁效應(yīng),銜鐵就會(huì)在電磁力的作用下克服返回彈簧的拉力被吸向鐵芯,動(dòng)觸點(diǎn)與靜觸點(diǎn)吸合。
當(dāng)線圈斷電后,電磁吸力隨之消失,銜鐵就會(huì)在彈簧的作用下返回原來(lái)的位置,動(dòng)觸點(diǎn)與靜觸點(diǎn)分開。
這樣通過(guò)動(dòng)觸點(diǎn)與靜觸點(diǎn)之間的吸合、分開,達(dá)到讓電路導(dǎo)通、切斷的目的。
對(duì)于繼電器的常開、常閉觸點(diǎn),可以這樣來(lái)區(qū)分:繼電器線圈未通電時(shí)處于斷開狀態(tài)的靜觸點(diǎn),稱為常開觸點(diǎn);處于接通狀態(tài)的靜觸點(diǎn)稱為常閉觸點(diǎn)。
制 作 過(guò) 程
1. 將中文語(yǔ)音識(shí)別擴(kuò)展板插在Arduino控制器上面。中文語(yǔ)音識(shí)別擴(kuò)展板的紅色和藍(lán)色的排針?lè)謩e插到Arduino控制器對(duì)應(yīng)的I/O排座上。
2. MR16 LED燈泡是直流12V驅(qū)動(dòng)的燈具,在其頂部有4顆LED燈珠通過(guò)磨砂的透鏡結(jié)構(gòu)出光,出射角度較小。其底部有兩根針腳,用于電源輸入。
將MR16 LED燈泡的針腳插在插座上,以便接入12V直流電。
3. 用一根杜邦線連接到電磁繼電器輸出端的公共端。
4. 將MR16插座兩根線中的一根連接到繼電器輸出端的常開端。
5. 用3根杜邦線連接到電磁繼電器的三個(gè)輸入端(VCC, GND,IN),然后分別接5V、GND和Arduino控制板的8號(hào)I/O端。電磁繼電器輸出端的公共端接Arduino控制板的VIN端,采用12V直流供電.
6. 為進(jìn)行效果演示,筆者僅做了一個(gè)簡(jiǎn)單的盒子,將連接好的元器件放入其中,連接好電源適配器。
7. 給Arduino控制器下載控制程序。
先通過(guò)D口USB線(藍(lán)色數(shù)據(jù)線)連接電腦和Arduino控制器,再下載中文語(yǔ)音識(shí)別擴(kuò)展板庫(kù)文件(下載地址:https://github.com/tyjjr/voiceRecognition1.1/),將其解壓在C:\Program Files (x86)\Arduino\libraries。
8.在電腦上運(yùn)行Arduino,打開VoiceLEDLighting.ino文件(下載地址:https://pan.baidu.com/s/1jHLnqYU)。
9. 打開菜單欄中的“工具”選項(xiàng),點(diǎn)擊“板卡”選項(xiàng),選擇Arduino控制器的型號(hào)(這里是Arduino Uno)。
10. 選擇Arduino控制器與電腦的連接端口。為了判斷連接是否正確,可以通過(guò)插拔USB線,查看COM口。
連接Arduino與電腦時(shí),新增的COM口即為Arduino的通信端口。
11. 點(diǎn)擊“文件”下拉面板中的“上傳”,將程序上傳到Arduino控制器,上傳成功后即可脫離電腦運(yùn)行。體驗(yàn)一下語(yǔ)音控制的便捷吧!
程 序 原 理
裝置通電后,程序會(huì)實(shí)時(shí)監(jiān)聽語(yǔ)音信號(hào)。
本程序中分別設(shè)置“kai deng”和“guan deng”作為開、關(guān)燈的語(yǔ)音輸入口令,你也可以根據(jù)個(gè)人喜好使用其他語(yǔ)音輸入口令。
當(dāng)聽到“kai deng”的語(yǔ)音輸入時(shí),程序?qū)⒅噶蠲钪谩?”,同時(shí)在Arduino控制板的8號(hào)I/O端輸出高電平,5V繼電器通電,使得常開開關(guān)閉合,從而接通燈泡的電源,點(diǎn)亮燈泡。當(dāng)聽到“guang deng”的語(yǔ)音輸入時(shí),程序?qū)⒅噶蠲钪谩?”,同時(shí)在Arduino控制板的8號(hào)I/O端輸出低電平,5V繼電器斷電,使得常開開關(guān)復(fù)位,從而斷開燈泡的電源,關(guān)閉燈泡。endprint