牟曉東
小時候,我們都玩過手工版的“傳聲筒”:底部挖孔的兩個空鐵制罐頭盒子,通過一根長長的細管或棉線連接起來,進行“你說、我聽”和“我說、你聽”的同步“傳話”。不過,如果通話雙方使用的是不同的語種,這種簡易設備就無法實現(xiàn)“同聲傳譯”了?,F(xiàn)在,通過樹莓派和卉德微機器人“積木”模塊語句等進行開源硬件編程,再借助于網(wǎng)絡進行語音信號的傳輸及處理,可以非常方便地制作出一個“隔空”同聲傳譯機:一方說中文、另一方講英文,實現(xiàn)中英文雙語的雙向語音及文字的互譯和傳輸,從而可以進行無障礙的實時交流。
所需的實驗器材包括:樹莓派及古德微擴展板各兩塊,全向麥克風兩個,音箱兩個,LED燈兩支。
通訊雙方的實驗器材及連接方式均完全一致,分別將擴展板正確安裝于樹莓派上(注意四周耍均勻小心用力);然后,將全向麥克風插入樹莓派的USB接口,音箱插入樹莓派的音頻輸出圓孔;最后,將LED燈按“長腿正、短腿負”的規(guī)則插入擴展板的5號插孔,給樹莓派通電,啟動操作系統(tǒng)(如圖1)。
通過瀏覽器訪問古德微機器人網(wǎng)站(http://www gdwrobot.cn/),登錄賬號(luke007)后點擊“設備控制”進入“積木”編程區(qū)開始編寫程序:
(1)編寫控制LED的“燈閃爍”函數(shù)
新建一個名為“燈閃爍”的函數(shù),實現(xiàn)的功能是控制插接在5號GPIO接口的LED燈,當程序被語音喚醒后閃爍兩次作為響應信號。先從“循環(huán)”中選擇“重復‘10次執(zhí)行……”模塊語句,修改為“2”;再從“智能硬件”“常用”中選擇“控制‘2號小燈‘亮”,作為循環(huán)體的第一個模塊語句,并改為“5”號;接著加一個“等待0.1秒”,作用是控制LED燈持續(xù)亮0.1秒;最后,再添加一個“控制‘5號小燈‘滅”和“等待0.1秒”,實現(xiàn)LED燈“亮0.1秒、滅0.1秒,再亮0.1秒、滅0.1秒”的閃爍功能(如圖2)。
(2)語音喚醒“Wakeup”函數(shù)
新建一個名為"Wakeup”的函數(shù)(注意必須是這個名字),其中的第一個模塊語句是“播放本地音頻‘/home/pi/temp/dingmp3”,作用是播放樹莓派操作系統(tǒng)/home/pi/temp目錄中的cling rnp3音頻文件,即發(fā)出“?!钡囊宦?接著,調(diào)用剛剛編寫的“燈閃爍”函數(shù);然后,分別建立名為“語音輸入”和“語音轉(zhuǎn)文字”兩個變量,將“語音輸入”變量賦值為“將‘3秒的語音輸入保存到‘/home/pi/temp/record rnp3”,作用是將用戶通過全向麥克風輸入的語音生成MP3文件并保存至樹莓派的temp目錄中,命名為“recordmp3”;將“語音轉(zhuǎn)文字”變量賦值為“把語音‘語音輸入轉(zhuǎn)換為文字,識別語言為‘普通話遠場”,作用是將變量“語音輸入”(對應剛剛生成的"recordrap3”音頻文件)進行語音轉(zhuǎn)文字的識別操作;接著,通過“輸出調(diào)試信息‘語音轉(zhuǎn)文字”模塊語句,實現(xiàn)在程序LOG調(diào)試區(qū)輸出顯示識別轉(zhuǎn)換出的文字信息。
再建立變量“漢譯英”,賦值為“將‘語音轉(zhuǎn)文字翻譯成‘英文”,作用是將識別出的中文文字信息翻譯成英文,然后也是在LOG調(diào)試區(qū)輸出顯示;接著,從“物聯(lián)網(wǎng)”“常用”中選擇并設置好“向‘luke008發(fā)送主題‘C2E的數(shù)據(jù)‘漢譯英”模塊語句,其中的“l(fā)uke008”對應著英文通訊端的賬號(中文通訊端賬號是"luke007”),主題"C2E"的意思是“中文對英文”(Chinese to English),可自定義;該模塊語句的作用是將變量“漢譯英”中保存的英文翻譯文字信息發(fā)送至英文通訊端(如圖3)。
(3)調(diào)用Wakeup函數(shù)進行數(shù)據(jù)處理
首先,從“人工智能”“語音識別”中選擇“小度小度關(guān)鍵詞喚醒,請創(chuàng)建一個Wakeup新函數(shù)”模塊語句,作用是通過“小度小度”關(guān)鍵詞來喚醒執(zhí)行對應的"Wakeup”函數(shù);接著,從“物聯(lián)網(wǎng)”“常用”中選擇“監(jiān)聽主題‘E2C并設置初始值‘0”模塊語句,作用是監(jiān)測英文通訊端發(fā)送過來的“E2C”主題數(shù)據(jù)(English to Chinese);然后建立一個“重復當‘真執(zhí)行……”循環(huán)結(jié)構(gòu),通過“如果……執(zhí)行……”選擇結(jié)構(gòu)對“物聯(lián)網(wǎng)是否收到新數(shù)據(jù)”進行判斷,條件成立的話,建立變量“對方的中文譯文”并賦值為“獲取主題‘E2C的數(shù)據(jù)”,也就是對應英文通訊端在經(jīng)過“英譯漢”后的文字信息;接著,選擇“人工智能”“語音識別”中的“播放語音‘對方的中文譯文發(fā)音人為‘0語調(diào)為‘5語速為‘3”模塊語句,實現(xiàn)對方語音信息譯文的語音播放功能(如圖4)。
程序編寫完畢,點擊“保存”按鉗將程序保存為“漢語輸入端”。