宇宙翻譯機

七月 16, 2015
Facebook
Twitter
你說他講:利用Raspberry Pi翻譯千種語言,並附有語音辨識功能。

如果你曾經試過跟一個只會說外國語言的人溝通,你就會知道這是多麼困難的一件事──即使有現代化的翻譯網站幫忙,還是很難。這個專題可以將一個39元美元的迷你電腦轉變為功能強大的語言翻譯機,支援語音辨識、母語播放,以及千種以上的詞組。不可思議的部分是它只需要平價的硬體、免費的翻譯API(應用程式介面),以及一些開放原始碼的軟體,就能以低價完工。
這個宇宙翻譯機的原理是利用耳機和Raspberry Pi的迷你電腦錄製口說片語A;接著利用Google的API將檔案轉成文本格式以利於語音識別B;這個文本格式會被輸入Microsoft的翻譯API C,翻譯成想要的語言,然後再次轉換成口語;最後,Raspberry Pi將翻譯好的語句傳回使用者的耳機D。
宇宙翻譯機非常適合在週末時製作,它可以教你如何運用一些非常強大的工具來打造一些可立即使用的東西。喔,還有,它也超好玩的。

到附近的RadioShack採購所有材料,再依照以下的步驟,一下子就可以做出自己的巴別魚了。


材料

  • Raspberry Pi單板電腦:Maker Shed網站商品編號#MKRPI2,makershed.com。
  • SD卡,4GB以上:可從Maker Shed網站購得Raspberry Pi跟8GB SD卡的組合(網站商品編號#MKRPI4或MKRPI5)。也可以考慮Raspberry Pi Essentials Kit(網站商品編號#MSRPIESS),或是Raspberry Pi Starter Kit(Maker Shed網站商品編號#MSRPIK、RadioShack網站商品編號#277-196)等套件組。
  • USB耳機:RadioShack網站商品編號#43-256。
  • 電池組,4×AA,附有USB插座(非必要),用於可攜式版本,RadioShack網站商品編號#270-087。
  • 無線USB網路配接器(非必要):也就是wi-fi組合裝置,用於可攜式版本。可以購買我們的Pi-Fi Bundle,Maker Shed網站商品編號#MSBUN65;或分開購買,RadioShack網站商品編號#25-2966。
工具

  • USB鍵盤
  • HDMI顯示器:用於跟Raspberry Pi互動。 
  • 能上網的電腦:用以建立免費線上帳號來跟宇宙翻譯機通訊。

第一步:設定Raspberry Pi和下載軟體

  • 如果你的Raspberry Pi還沒準備好運作,可以參考Raspberry Pi網站提供的教學:http://www.raspberrypi.org/help/noobs-setup/
  • 確認Raspberry Pi有網路連線。如果沒有現成的乙太網路連線,可以用USB Wi-Fi硬體鎖來連線網路。
  • 從指令行執行以下兩個指令來更新Raspberry Pi的軟體:
    sudo apt-get update
    sudo apt-get upgrade。

    這個程序可能需要一些時間。
  • 用以下的指令安裝這個專題需要的軟體:
    sudo apt-get install python-pip mplayer flac python2.7-dev libcurl4-gnutls-dev
    sudo pip install requests pycurl。
  • 註:這個專題在截稿前經過最新版Raspbian的測試。請注意隨著軟體的更新產生的變化。如果要比較你的版本和我們測試的版本,可以從指令行:
    pi@raspberrypi ~ $ uname -a
    Linux raspberrypi 3.12.22+ #691 PREEMPT Wed Jun 18 18:29:58 BST 2014 armv6l GNU/Linux執行 uname -a

第二步:設定及測試耳機

  • 插入USB耳機(必要時可使用供電USB集線器)。
  • 執行以下的指令,它們會列出你的音效裝置:
    cat /proc/asound/cards
    cat /proc/asound/modules

    這時候應該可以看到Logitech耳機被列為card 1。第二個指令會顯示card 0(預設輸出)的驅動程式是snd_bcm2835,也就是Raspberry Pi的類比音效輸出。card 1(我們的Logitech耳機)的驅動程式是snd_usb_audio。如果沒有看到耳機被列出來,可以嘗試重新啟動:
    sudo reboot
  • 為了把USB耳機設定成預設的音效輸入和輸出,我們需要更新ALSA設定檔。用Nano文字編輯器開啟:
    sudo nano /etc/modprobe.d/alsa-base.conf。
  • 把這行:
    options snd-usb-audio index=-2
    改成這樣:
    options snd-usb-audio index=0
  • 用Ctrl-X和輸入y來儲存並關閉檔案,接著用這個指令來重新啟動Raspberry Pi:
    sudo reboot
  • 重新啟動後,音效系統會重新載入,所以再次執行前面的
    cat/proc/asound/cards cat/proc/asound/modules
    指令後,應該就會看到USB耳機列為預設的輸入/輸出裝置(card 0),如上圖所示。
  • 用麥克風錄5秒鐘的片段來測試:
    arecord -d 5 -r 48000 make.wav。
    註:如果看到寫著「overrun!!!」的錯誤訊息,可以安心把它忽略。
  • 用耳機的揚聲器播放:
    aplay make.wav
    如果聲音有點粗糙也不用擔心,因為在下一步會用更高的品質來錄製。
  • 若需要調整音量,可以使用內建公用程式alsamixer。這個工具可以處理音效的輸入和輸出音量:
    sudo alsamixer

第三步:下載並擷取原始碼

图片

  • 要用Raspberry Pi達成語音辨識功能有幾種方法,不過我認為這裡最適合的方案是藉助Google的語音轉文字服務。這個服務讓我們上傳錄好的音訊檔,然後轉換成文字(之後我們會用來翻譯)。
  • 專題原始碼會幫你處理這個部分。執行以下的指令來下載和擷取檔案:
    wget https://github.com/dconroy/PiTranslate/archive/master.zip unzip master.zip cd PiTranslate-master
    註:裡面提供Shell和Python程式碼。
  • 將語音轉文字程式碼轉換為可執行檔:sudo chmod +x stt.sh

第四步:設定Google語音辨識API

  • 要使用Google的語音辨識API,必須先註冊。登入你的Google帳號並依照以下的步驟進行。
  • 前往https://cloud.google.com/console並點選「Create Project」。取一個「我的宇宙翻譯機」之類的名稱,然後點選「Create」。(Google會產生一個隨機的專案ID,所以這一欄不用理他。)
  • 在Google的雲端硬碟建立你的新專題時,開啟新的瀏覽器分頁來加入Chromium-dev Google網上論壇,這樣可以存取語音API:https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-dev
  • 回到Google專題分頁。如果完成建立專題了,就會看到專題選單。點選左邊的「APIS & AUTH」並點選「APIs」。接著往下捲動並開啟語音API。
  • 一樣在專題選單,點選左邊「APIS & AUTH」下方的「Credentials」,接著點選「Create new Key(建立新金鑰)」按鈕,並選取「Browser Key(瀏覽器金鑰)」。把允許的訪客來源文字欄位留白,並點選「Create」。新產生的API金鑰接著會顯示在選單上。
  • 在Raspberry Pi上開啟 text-to-translate.py檔案並找到
    key = ‘xxx’
    這行。用標單上的金鑰取代xxx。為了讓這個步驟更容易,可以啟動Raspberry Pi的桌面環境(用 startx),用網路瀏覽器Midori登入Google帳號,然後把金鑰複製貼上到檔案裡。也可以用電腦透過SFTP變更檔案。
  • 註:Google的語音API雖然是免費的,它每天只接受50個要求。

第五步:設定微軟翻譯API

  • Google也有翻譯API,但我們的專題會用微軟提供的服務,因為是免費的。用你的微軟帳號登入Azure Marketplace: https://datamarket.azure.com/developer/applications/
  • 點選「註冊」按鈕來建立新的應用程式。
  • 填入用戶ID、應用程式名稱和重新導向URI(任何URL都行)。
  • 點選「建立」。
  • 接下來和Google金鑰的做法很像,在PiTranslate.py正確的單引號之間填上用戶ID和用戶端密碼並儲存:
    args = { ‘client_id’: ”,#your client id here ‘client_secret’: ”,#your azure secret here ‘scope’: ‘http://api.microsofttranslator.com’, ‘grant_type’: ‘client_credentials’ }

第六步:使用宇宙翻譯機

  • 現在API金鑰已經建立完成,也輸入進程式碼中,就可以來測試宇宙翻譯機了。戴上耳機後,執行:
    ./stt.sh
  • 對耳機麥克風說話,說完之後按Ctrl-C
  • 接著可以從耳機聽到翻譯,還會在指令行看到回饋。
  • 預設設定會把英語翻譯成西班牙語。可以在text-to-translate.py 的最後一行輕鬆變更來源和目標語言,剩下的工作就交給程式碼。這樣的宇宙翻譯機支援數以千計的語言交互翻譯,你可以盡情嘗試!

DAVE CONROY
大維・康羅伊是現居於波士頓的西北大學研究生,對於所有科技的東西有著無可比擬的熱情。
daveconroy.com

(譯:張婉秦)
原文

Social media & sharing icons powered by UltimatelySocial