終於到了這一步,要把所有功能整合在一起了。前面雖然很痛苦,但在我看來最痛苦的還是這一步。之前,教朋友處理的時候,很明顯這一個步驟看似最簡單,實際才是大魔王!首先,先定義好我們想要做到的功能:
整合時,最有可能會遇到的問題,電腦視覺的處理太久,畢竟圖片需要經過人臉辨識、OCR、物體偵測和影像描述,可能會讓處理的時間過長,處理的時間超過30秒,Line chatbot 會因為 timeout 無法回應使用者。所以,必須考慮先後順序,省略不必要的動作。我的做法是:
langdetect
這個套件偵測是否為韓文,若非韓文,則跳過翻譯與轉換語音的步驟。def resize_image(filename):
"""
Resize image: fix the max aspect
"""
base = 700
img = Image.open(filename)
ratio = base / float(max(img.size))
width = int((float(img.size[0]) * float(ratio)))
height = int((float(img.size[1]) * float(ratio)))
img = img.resize((width, height), Image.ANTIALIAS)
img.save(filename)
return img
整合的過程,千萬不要一口氣把全部功能做完才git push
到 Azure Web App,這樣不好除錯,錯誤很也可能會有如滔滔江水 連綿不絕 更有如黃河氾濫 一發不可收拾。之前幫朋友除錯時,往往只是一個打錯字的小錯誤,都有可能會因為錯誤太小,但程式碼太長,結果花了一兩個小時才解決一個小問題,建議可以用會幫忙偵測錯誤的編輯器來協助編輯,例如:Visial Studio Code。最好是,一個功能做完就git push
一次,以下是我實作的順序:
準備好config.json
:
{
"line": {
"line_secret": "your line secret",
"line_token": "your line token",
},
"azure": {
"cv_key": "your subscription key of computer vision",
"cv_end": "your endpoint of computer vision",
"blob_connect": "your connect string",
"blob_container": "your blob container name",
"trans_key": "your subscription key of translator",
"speech_key": "your subscription key of speech",
"face_key": "your subscription key of Azure Face service",
"face_end": "your endpoint of Azure Face service",
"mongo_uri":"your mongon uri",
"azureml_endpoint": "your endpoint url of service on azure service"
}
然後,我們就可以攻略大魔王了。所有的程式碼,我都放在 github 上,有興趣的人可以參考application.py
和requirements.txt
:https://github.com/KuiMing/triathlon_azure 。
看圖學英文
韓文翻譯機器人
非登入狀態 | 已登入狀態 |
終於,我們打完了大魔王,迎來終章。