[ Linkit Smart 7688 ] 透過 Python 使用 Google Speech Recognition 語音辨識服務

語音相關的雲端服務為數眾多,例如:IBM WatsonGoogle Cloud PlatformMicrosoft Bing 等,其中的服務大至分成 Speech To Text、Conversation、Text To Speech,而本文透過 Linkit Smart 7688 Duo 將語音傳送給 Google,並透過 Google Speech Recognition 的服務將語音轉換為文字後傳送回 Linkit Smart 7688 。


前置準備作業

  1. 準備一片 Linkit Smart 7688 開發板

  2. 將 Linkit Smart 7688 連接至電腦

  3. 更新 Firmware 為 0.9.3
    http://goo.gl/dVLQ2Y

  4. 將 USB 音效卡透過 OTG Cable 安裝於 Linkit Smart 7688

  5. 安裝 MIC 與 Speaker 於外接 USB 音效卡上

  6. 安裝 USB 音效卡相關套件
    REF: http://goo.gl/D5rHtu


Linkit Smart 7688 與 USB 外接音效卡連接圖


Google 端

Step 1. 到 Google 網站申請帳號

https://cloud.google.com/


Step 2. 登入 Google Cloud Speech API 網站

https://cloud.google.com/speech/


Step 3. 點擊 VIEW MY CONSOLE


Step 3. 建立專案


Step 4. 輸入 專案名稱


Step 5. 點擊 使用 Google API


Step 6. 點擊 啟用 API


Step 7. 搜尋 Speech Recognition


Step 8. 點擊 啟用


Step 9. 點擊左邊 憑證


Step 10. 點擊 建立憑證


Step 11. 選擇 服務帳戶金鑰


Step 12. 選擇 服務帳戶新增服務帳戶


Step 13. 輸入 服務帳戶名稱


Step 14. 選取 角色


Step 15. 點選 建立


Linkit Smart 7688 端

Step 1. SSH 進入 Linkit Smart 7688 中

Imgur


Step 2. 將 arecord 產生的 wav 檔轉換成 flac 格式
ffmpeg -i file.wav -ar 16000 -acodec flac file.flac  

Step 3. 安裝 Google 套件
pip install --upgrade gcloud  
pip install --upgrade google-api-python-client  

Step 4. 於 Linkit Smart 7688 中建立 Google Speech Recognition 的 Python Code
import argparse  
import base64  
import json

from googleapiclient import discovery  
import httplib2  
from oauth2client.client import GoogleCredentials

speech_file = '/robot/resources/file.flac'  
encoding = 'FLAC'  
sampleRate = 16000  
languageCode = 'en-US'

DISCOVERY_URL = ('https://{api}.googleapis.com/$discovery/rest?'  
                 'version={apiVersion}')

def get_speech_service():  
    credentials = GoogleCredentials.get_application_default().create_scoped(
        ['https://www.googleapis.com/auth/cloud-platform'])
    http = httplib2.Http()
    credentials.authorize(http)

    return discovery.build(
        'speech', 'v1beta1', http=http, discoveryServiceUrl=DISCOVERY_URL)


def main(speech_file):  
    with open(speech_file, 'rb') as speech:
        speech_content = base64.b64encode(speech.read())

    service = get_speech_service()
    service_request = service.speech().syncrecognize(
        body={
            'config': {
                'encoding': encoding,
                'sampleRate': sampleRate,  
                'languageCode': languageCode,  
            },
            'audio': {
                'content': speech_content.decode('UTF-8')
                }
            })
    response = service_request.execute()
    print(json.dumps(response))

if __name__ == '__main__':

    main(speech_file)


Step 5. 將剛下載的 GOOGLE APPLICATION CREDENTIALS JSON 檔傳送到 Linkit Smart 7688 中

參考 傳送檔案與登入到開發板 Blog


Step 6. export GOOGLE_APPLICATION_CREDENTIALS 與 GCLOUD_PROJECT
export GOOGLE_APPLICATION_CREDENTIALS=/robot/google/Robot-Speech-To-Text-f1b0c6df2745.json

export GCLOUD_PROJECT=robot-speech-to-text-144208  

Step 7. 執行 Python Code
python google_Speech_Recognition.py  


參考資料
List of blogs

Archer

Having being a full stack engineer. Experience with C, Python, Objective-C, Swift, Node.js, Lua, Linkit Smart 7688, Raspberry Pi, ARM mbed, Arduino, IoT solutions. Contact us : [email protected]

ALL RIGHTS RESERVED. COPYRIGHT © 2016. Designed and Coded by Makee.io