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