準備工作
- 軟件部分:Thonny IDE集成開發(fā)環(huán)境
注意:購買麥克風時要購買二合一的USB麥克風,切勿購買3.5mm耳機接口傳輸?shù)柠溈孙L。
首先更新軟件源和所有軟件,只需要使用快捷鍵ctrl+alt+T打開命令行,輸入以下命令,耐心等待即可。
# 更新軟件源 apt-get update # 更新升級所有軟件 apt-get upgrade
開發(fā)工具依然是沿用Thonny,作為一款輕量化的python集成開發(fā)環(huán)境,對新手十分友好,簡單易上手,后續(xù)安裝各種python依賴庫也相當方便。安裝完成后同樣是使用快捷鍵ctrl+alt+T打開命令行,輸入Thonny啟動,然后開始項目的重頭戲——安裝項目依賴庫,需要用到的第三方庫和版本如下,大家可以根據(jù)這個順序進行安裝,以免遺漏(也可以復(fù)制到一個新的txt文件利用pip一次性安裝)。
cffi==1.12.3 gevent==1.4.0 greenlet==0.4.15 pycparser==2.19 six==1.12.0 websocket==0.2.1 websocket-client==0.56.0
注意:有些庫安裝失敗的話代碼可能不會有高亮提示,但運行時會報錯,所以,出現(xiàn)報錯第一時間檢查第三方庫是否成功安裝。
本文著重介紹需要用到的Python標準GUI庫——Tkinter。
在Python程序中,Tkinter是Python的一個模塊,它可以像其他模塊一樣在Python交互式shell中(或者“.py”程序中)導(dǎo)入,導(dǎo)入Tkinter模塊后,就可使用Tkinter模塊中的函數(shù)、方法等進行GUI編程。同時,開發(fā)者也可以使用Tkinter庫中的文本框、按鈕、標簽等組件實現(xiàn)GUI開發(fā)。
首先,需檢查Tkinter是否成功導(dǎo)入,如運行無誤則說明導(dǎo)入成功,否之,則需要重新安裝Tkinter庫。
import tkinter
接著創(chuàng)建一個窗口,先使用http://tkinter.Tk生成一個主窗口對象,然后才能使用Tkinter模塊中其他的函數(shù)和方法等元素。生成主窗口以后才可以向里面添加組件,或者直接調(diào)用其mainloop()方法進行消息循環(huán)。示例如下:
import tkinter #導(dǎo)入Tkinter模塊 top = tkinter.Tk()#生成一個主窗口對象 top.mainloop()#進入消息循環(huán)
我們要有交互,就需要有組件。組件與窗口一樣,也是通過Tkinter模塊中相應(yīng)的組件函數(shù)生成的。在生成組件以后,就可以使用pack、grid或place等方法將它添加到窗口中,以下示例給窗口增添兩個按鈕:
import tkinter #導(dǎo)入Tkinter模塊 root = tkinter.Tk()#生成一個主窗口對象 label= tkinter.Label(root, text="Python, tkinter!") label.pack()#將標簽添加到窗口中 button1 = tkinter.Button(root, text="按鈕1")#創(chuàng)建按鈕1 button1.pack(side=tkinter.LEFT)#將按鈕1添加到窗口中 button2 = tkinter.Button(root, text="按鈕2")#創(chuàng)建按鈕2 button2.pack(side=tkinter.RIGHT)#將按鈕2添加到窗口中 root.mainloop()#進入消息循環(huán)
至此,用Tkinter庫創(chuàng)建一個帶交互功能的窗口已經(jīng)完成,大家感興趣可以繼續(xù)學習其他組件,這里就不再贅述。
接下來進行云服務(wù)器部署,本項目選用云端語音平臺,登錄平臺后,通過右上角「控制臺」,或右上角下拉菜單的「我的應(yīng)用」進入控制臺。如果賬戶未曾創(chuàng)建過應(yīng)用,平臺會引導(dǎo)創(chuàng)建,創(chuàng)建完成后,便可通過左側(cè)的服務(wù)列表,選擇要使用的服務(wù)。
在服務(wù)管理面板中,將看到這個服務(wù)對應(yīng)的可用量、歷史用量、服務(wù)接口的驗證信息,還有可以調(diào)用的API和SDK。值得注意的是,要將應(yīng)用創(chuàng)建后生成的APPID,APISecret和APIKey去替換代碼中的APPID,APISecret和APIKey一定要一一對應(yīng),否則會影響代碼的正常運行!
def run(): global wsParam wsParam = Ws_Param(APPID='你的APPID', APIKey='你的APIKey',APISecret='你的APISecret') websocket.enableTrace(False) wsUrl = wsParam.create_url() ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close) ws.on_open = on_open ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE}, ping_timeout=2)
隨后選擇需要的語種和服務(wù)即可,支持除中文和英語外的51種外語,24種方言和1種民族語言。
實現(xiàn)原理
本項目主要就是利用python程序錄制本地mp3格式的用戶音頻,并將音頻上傳到云端語音平臺進行實時轉(zhuǎn)寫,最后利用GUI庫在屏幕上展示轉(zhuǎn)寫結(jié)果(云端語音平臺翻譯文本的方法和窗口的實現(xiàn),點擊文末閱讀原文即可獲?。?。
效果展示
結(jié)果顯示,本項目對本地資源占用較小,得益于旭日X3派的高算力和高性能,溫度的控制讓人十分滿意(和上一個項目手語翻譯終端同時運行也沒有問題)。
性能測試
系統(tǒng)測試方案:將程序?qū)胄袢誜3派中,接入電源后等待初始化完成,在安靜的室內(nèi)環(huán)境下,在麥克風前分別測試普通話,英語,方言(東北話/四川話),將轉(zhuǎn)寫終端實時轉(zhuǎn)寫的準確率記錄,同時將識別的總時長記錄收集。
測試數(shù)據(jù)如下:
結(jié)果分析:接收到語音信息后到完成轉(zhuǎn)寫結(jié)果的顯示總時長在0.5秒之內(nèi),可基本實現(xiàn)實時轉(zhuǎn)譯,對普通話和英文以及51種外語,24種方言和1種民族語言的識別率在95%以上。
結(jié)論:實現(xiàn)語音轉(zhuǎn)寫除了支持普通話和英語外,支持51個外國語種(包括日語、俄語、泰語、捷克語等常用語種)、24種方言(包括四川話、廣東話、河南話、上海話,閩南語等常用方言),另外,還支持一種民族語言(彝語),真正做到無障礙溝通交流。
本文轉(zhuǎn)自地平線開發(fā)者社區(qū)
原作者:鑫辰大海王
-
嵌入式
+關(guān)注
關(guān)注
5086文章
19141瀏覽量
305957 -
語音
+關(guān)注
關(guān)注
3文章
385瀏覽量
38063 -
人工智能
+關(guān)注
關(guān)注
1792文章
47373瀏覽量
238868
發(fā)布評論請先 登錄
相關(guān)推薦
評論