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