目標
將 Cloud Vision API 的文字辨識結果傳送至 Cloud Translation API。
建立及使用 Cloud Translation 詞彙表,依需求自訂 Cloud Translation API 翻譯。
使用 Text-to-Speech API,根據譯文建立語音。
費用
每個 Google Cloud API 都有不同的定價結構。如需定價詳情,請參閱 Cloud Vision 定價指南、Cloud Translation 定價指南和 Text-to-Speech 定價指南。
事前準備
請確認您已完成下列步驟:- 在 Google Cloud 控制台中建立專案,並啟用 Vision API、Cloud Translation API 和 Text-to-Speech API
- 對 Python 或 NodeJS 程式設計有基本的瞭解
設定用戶端程式庫
本教學課程使用 Vision、Translation 和 Text-to-Speech 用戶端程式庫。
如要安裝相關用戶端程式庫,請在終端機執行下列指令。
Python
pip install --upgrade google-cloud-vision pip install --upgrade google-cloud-translate pip install --upgrade google-cloud-texttospeech
Node.js
npm install @google-cloud/vision npm install @google-cloud/translate npm install @google-cloud/text-to-speech
設定詞彙表建立權限
必須使用具備「Cloud Translation API 編輯者」權限的服務帳戶金鑰,才能建立 Translation 詞彙表。
如要設定具有 Cloud Translation API 編輯者權限的服務帳戶金鑰,請按照下列步驟操作:
建立服務帳戶:
前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
選取專案。
點按「 Create Service Account」(建立服務帳戶)。
在「Service account name」(服務帳戶名稱) 欄位中輸入名稱。Google Cloud 控制台會將這個名稱填入「Service account ID」(服務帳戶 ID) 欄位。
(選用) 在「Service account description」(服務帳戶說明) 欄位中輸入服務帳戶的說明。
點按「Create and continue」(建立並繼續)。
點按「Select a role」(選取角色) 欄位,然後依序選取「Cloud Translation」>「Cloud Translation API Editor」(Cloud Translation API 編輯者)。
點按「Done」(完成),完成服務帳戶建立作業。
請勿關閉瀏覽器視窗,後續步驟會用到。
為您剛才建立的服務帳戶下載 JSON 金鑰:
- 在 Google Cloud 控制台中,點按您建立的服務帳戶電子郵件地址。
- 點按「Keys」(金鑰)。
- 依序點按「Add key」(新增金鑰) 和「Create new key」(建立新的金鑰)。
點按「Create」(建立),系統會將 JSON 金鑰檔案下載至您的電腦。
請務必妥善保存金鑰檔案,因為此檔案可當做服務帳戶進行驗證。您可以任意移動及重新命名此檔案。
點按「Close」(關閉)。
在終端機中,使用下列指令設定 GOOGLE_APPLICATION_CREDENTIALS 變數。將 path_to_key 替換為下載的 JSON 檔案路徑,其中包含新的服務帳戶金鑰。
Linux 或 macOS
export GOOGLE_APPLICATION_CREDENTIALS=path_to_key
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path_to_key
匯入程式庫
本教學課程使用下列系統匯入和用戶端程式庫匯入。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱「Cloud Translation Python API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱「Cloud Translation Node.js API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
設定專案 ID
您必須將 Google Cloud 專案與傳送至 Google Cloud API 的每項要求建立關聯。請從終端機設定 GCLOUD_PROJECT 環境變數,指定 Google Cloud 專案。
在下列指令中,將 project-id 替換為您的 Google Cloud 專案 ID, 然後在終端機中執行下列指令。
Linux 或 macOS
export GCLOUD_PROJECT=project-id
Windows
set GCLOUD_PROJECT=project-id
使用 Vision 偵測圖片中的文字
使用 Vision API 偵測及擷取圖片中的文字。
Vision API 使用光學字元辨識 (OCR) 技術,支援兩種文字偵測功能:偵測密集文字 (DOCUMENT_TEXT_DETECTION) 和偵測稀疏文字 (TEXT_DETECTION)。
下列程式碼說明如何使用 Vision API DOCUMENT_TEXT_DETECTION 功能,偵測相片中的密集文字。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱「Cloud Translation Python API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱「Cloud Translation Node.js API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
使用詞彙表進行翻譯
從圖片擷取文字後,可以使用 Translation 詞彙表,依需求自訂擷取文字的翻譯結果。詞彙表提供預先定義的翻譯,可覆寫 Cloud Translation API 對指定字詞的翻譯。
詞彙表可用於下列項目:
產品名稱:例如指定「Google Home」必須翻譯為「Google Home」。
有多種語義的字詞:例如「bat」一詞可以指運動器材,也可以指動物。 如果您知道要翻譯的字詞與運動有關,就可以使用詞彙表,將「bat」的運動意涵翻譯提供給 Cloud Translation API,而非動物意涵翻譯。
外來語:舉例來說,法文的「bouillabaisse」翻譯成英文也是「bouillabaisse」,英文是從法文借用「bouillabaisse」這個字。 如果英文使用者不熟悉法國文化,可能不知道 bouillabaisse 是指法國魚湯料理。詞彙表可以覆寫翻譯結果,指定將法文的「bouillabaisse」翻譯成英文的「fish stew」。
建立詞彙檔案
Cloud Translation API 可接受 TSV、CSV 或 TMX 檔案。本教學課程會使用上傳至 Cloud Storage 的 CSV 檔案,定義同義字詞集。
如要製作詞彙 CSV 檔案,請按照下列步驟操作:
使用 ISO-639 或 BCP-47 語言代碼,在 CSV 檔案的第一列中指定資料欄的語言。
fr,en,
在 CSV 檔案的每一列中列出對應的同義詞, 並使用半形逗號分隔字詞。 以下範例定義了幾個法文烹飪用語的英文翻譯。
fr,en, chèvre,goat cheese, crème brulée,crème brulée, bouillabaisse,fish stew, steak frites,steak with french fries,
定義字詞的變體。Cloud Translation API 會區分大小寫,且能辨識特殊字元,例如帶有重音符號的字詞。請明確定義字詞的不同拼法,確保詞彙檔案涵蓋字詞的變化形式。
fr,en, chevre,goat cheese, Chevre,Goat cheese, chèvre,goat cheese, Chèvre,Goat cheese, crème brulée,crème brulée, Crème brulée,Crème brulée, Crème Brulée,Crème Brulée, bouillabaisse,fish stew, Bouillabaisse,Fish stew, steak frites,steak with french fries, Steak frites,Steak with french fries, Steak Frites,Steak with French Fries,
將詞彙檔案上傳至 Cloud Storage bucket。在本教學課程中,您不需要將詞彙檔案上傳至 Cloud Storage bucket,也不需要建立 Cloud Storage bucket。請改用本教學課程建立的公開詞彙檔案,以免產生任何 Cloud Storage 費用。將 Cloud Storage 中詞彙表檔案的 URI 傳送至 Cloud Translation API,即可建立詞彙表資源。本教學課程的公開詞彙表檔案 URI 為 gs://cloud-samples-data/translation/bistro_glossary.csv。如要下載詞彙表檔案,請點按上方 URI 連結,但不要在新分頁中開啟。
建立詞彙表資源
您必須使用 Cloud Translation API 建立詞彙資源,才表能使用詞彙表檔案。如要建立詞彙表資源,請將 Cloud Storage 中詞彙表檔案的 URI 傳送至 Cloud Translation API。
請確認您使用的服務帳戶金鑰具備「Cloud Translation API 編輯者」權限,且已從終端機設定專案 ID。
下列函式會建立詞彙表資源。有了這個詞彙表資源,您就能在教學課程的下一個步驟中,自訂翻譯要求。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱「Cloud Translation Python API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱「Cloud Translation Node.js API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
使用詞彙表翻譯
建立詞彙表資源後,您可以使用該資源,自訂傳送至 Cloud Translation API 的文字翻譯作業。
下列函式會使用您先前建立的詞彙表資源,依您的需求設定文字翻譯作業。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱「Cloud Translation Python API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱「Cloud Translation Node.js API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
搭配語音合成標記語言使用 Text-to-Speech
現在您已取得圖片偵測文字內容的自訂翻譯結果,可以開始使用 Text-to-Speech API。Text-to-Speech API 會根據譯文生成合成語音。
Text-to-Speech API 會從純文字字串或以語音合成標記語言 (SSML) 標記的文字字串,生成合成音訊。SSML 是一種標記語言,支援使用 SSML 標記為文字加上註解。您可以使用 SSML 標記,調整 Text-to-Speech API 生成合成語音的格式。
以下函式會將 SSML 字串轉換為合成語音的 MP3 檔案。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱「Cloud Translation Python API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱「Cloud Translation Node.js API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
整合應用
在先前的步驟中,您在 hybrid_glossaries.py 中定義了使用 Vision、Translation 和 Text-to-Speech 的函式。現在您已完成前置準備,可使用這些函式從下列相片生成譯文的合成語音。

下列程式碼會呼叫 hybrid_glossaries.py 中定義的函式,執行這些操作:
建立 Cloud Translation API 詞彙表資源
使用 Vision API 偵測上圖中的文字
使用 Cloud Translation API 詞彙表翻譯偵測到的文字
生成譯文的 Text-to-Speech 合成語音
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱「Cloud Translation Python API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 Cloud Translation 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱「Cloud Translation Node.js API 參考文件」。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
執行程式碼
如要執行程式碼,請在程式碼所在的目錄中,於終端機輸入下列指令:
Python
python hybrid_tutorial.py
Node.js
node hybridGlossaries.js
畫面會出現以下輸出結果:
Created glossary bistro-glossary. Audio content written to file resources/example.mp3
執行程式碼後,請從 hybrid_glossaries 目錄前往 resources 目錄,檢查資源目錄是否有 example.mp3 檔案。
聆聽下列音訊片段,確認 example.mp3 檔案的音質是否一致。
錯誤訊息疑難排解
403 IAM permission 'cloudtranslate.glossaries.create' denied.
如果服務帳戶金鑰沒有「Cloud Translation API 編輯者」權限,就會引發這項例外狀況。
KeyError: 'GCLOUD_PROJECT'
如果未設定 GCLOUD_PROJECT 變數,就會產生這項錯誤。
400 Invalid resource name project id
如果使用的詞彙表名稱包含小寫字母、數字、半形句號、半形冒號或連字號以外的字元,或是使用的服務帳戶金鑰沒有「Cloud Translation API 編輯者」權限,就會引發這項例外狀況。
File filename was not found.
如果將 GOOGLE_APPLICATION_CREDENTIALS 變數設為無效的檔案路徑,就會引發這項例外狀況。
Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application
如果未設定 GOOGLE_APPLICATION_CREDENTIALS 變數,就會引發這項例外狀況。
Forbidden: 403 POST API has not been used or is disabled
如果未啟用 API,就呼叫 Cloud Translation API、Cloud Vision API 或 Text-to-Speech API,就會產生這項警告。
AttributeError: 'module' object has no attribute 'escape'
Python 2.7.10 以下版本與
HTML不相容。如要修正這項錯誤,請使用 Python 虛擬環境,虛擬環境會使用最新版本的 Python。UnicodeEncodeError
Python 2.7.10 以下版本與
HTML不相容。如要修正這項錯誤,請使用 Python 虛擬環境,虛擬環境會使用最新版本的 Python。
清除所用資源
使用 Google Cloud 控制台刪除不需要的專案,這麼做可避免系統根據您在本教學課程中使用的資源,向您的 Cloud Billing 帳戶收取額外費用。
刪除專案
- 前往 Google Cloud 控制台的「Projects」(專案) 頁面。
- 在專案清單中選取要刪除的專案,然後點按「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後點按「Shut down」(關閉) 刪除專案。
後續步驟
恭喜!您使用了 Vision OCR 偵測圖片中的文字,然後建立翻譯詞彙表,並使用該詞彙表進行翻譯。最後,您使用 Text-to-Speech 根據譯文生成了合成音訊。
想進一步瞭解 Vision、Translation 和 Text-to-Speech,請參閱下列內容:
- 自行建立詞彙表。瞭解如何建立 Cloud Storage bucket,以及如何將詞彙表 CSV 檔案上傳至 bucket。
- 嘗試其他使用翻譯詞彙表的方式。
- 瞭解如何搭配使用 Cloud Storage 和 Cloud Vision OCR。
- 進一步瞭解如何搭配 Text-to-Speech 使用 SSML。
- 瞭解如何運用 Vision API
imageContext欄位,在使用 Vision OCR 時傳遞相片的其他背景資訊。 - 探索社群教學課程。