目標
將 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
設定詞彙表建立權限
如要建立 Translation 詞彙表,必須使用具備「Cloud Translation API 編輯者」權限的服務帳戶金鑰。
如要設定具有 Cloud Translation API 編輯器權限的服務帳戶金鑰,請按照下列步驟操作:
建立服務帳戶:
前往 Google Cloud 控制台的「Service Accounts」(服務帳戶) 頁面。
選取專案。
按一下「建立服務帳戶」
。在「Service account name」(服務帳戶名稱) 欄位中輸入名稱。Google Cloud 控制台會根據這個名稱填入「服務帳戶 ID」欄位。
選用:在「服務帳戶說明」欄位中,輸入服務帳戶的說明。
按一下「建立並繼續」。
按一下「Select a role」(請選擇角色) 欄位,然後依序選取「Cloud Translation」>「Cloud Translation API Editor」(Cloud Translation API 編輯者)
按一下「Done」(完成),即完成建立服務帳戶。
請勿關閉瀏覽器視窗。您將在下一個步驟中使用此項目。
下載您剛建立的服務帳戶的 JSON 金鑰:
- 在 Google Cloud 控制台中,按一下您建立的服務帳戶電子郵件地址。
- 點選「金鑰」。
- 依序點選「新增金鑰」和「建立新的金鑰」。
按一下「建立」,系統會將 JSON 金鑰檔案下載至您的電腦。
請務必妥善保存金鑰檔案,因為此檔案可當做服務帳戶進行驗證。您可以任意移動及重新命名這個檔案。
按一下 [關閉]。
在終端機中,使用下列指令設定 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
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Cloud Translation Python API 參考說明文件。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
在試用這個範例之前,請先按照Node.js使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 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
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Cloud Translation Python API 參考說明文件。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
在試用這個範例之前,請先按照Node.js使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Cloud Translation Node.js API 參考說明文件。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
使用詞彙表翻譯
從圖片擷取文字後,可以使用翻譯詞彙表,自訂擷取文字的翻譯結果。詞彙表提供預先定義的翻譯,可覆寫 Cloud Translation API 對指定字詞的翻譯。
詞彙表用途包括:
產品名稱:例如「Google Home」必須翻譯為「Google Home」。
含糊不清的字詞:例如「蝙蝠」一詞可以指運動器材,也可以指動物。 如果您知道要翻譯的字詞與運動有關,不妨使用字彙表,讓 Cloud Translation API 翻譯「bat」時,採用運動相關的譯文,而非動物相關的譯文。
借用字:舉例來說,法文的「bouillabaisse」翻譯成英文也是「bouillabaisse」; 英文是從法文借用「bouillabaisse」這個字。 如果英語使用者不瞭解法國文化背景,可能不知道馬賽魚湯是法國的魚類燉湯。詞彙表可以覆寫翻譯結果,因此法文的「bouillabaisse」會翻譯成英文的「fish stew」。
建立詞彙表檔案
Cloud Translation API 接受 TSV、CSV 或 TMX 字彙表檔案。本教學課程會使用上傳至 Cloud Storage 的 CSV 檔案,定義同義詞集。
如要製作詞彙表 CSV 檔案,請按照下列步驟操作:
在 CSV 檔案的第一列中,使用 ISO-639 或 BCP-47 語言代碼指定資料欄的語言。
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 值區。在本教學課程中,您不需要將字彙表檔案上傳至 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
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Cloud Translation Python API 參考說明文件。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
在試用這個範例之前,請先按照Node.js使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Cloud Translation Node.js API 參考說明文件。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
使用詞彙表翻譯
建立詞彙表資源後,您就可以使用該資源,自訂傳送至 Cloud Translation API 的文字翻譯結果。
下列函式會使用您先前建立的字彙表資源,個人化文字翻譯內容。
Python
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Cloud Translation Python API 參考說明文件。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
在試用這個範例之前,請先按照Node.js使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 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
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Cloud Translation Python API 參考說明文件。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
在試用這個範例之前,請先按照Node.js使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 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 詞彙表翻譯偵測到的文字
生成譯文的文字轉語音合成語音
Python
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Cloud Translation Python API 參考說明文件。
如要向 Cloud Translation 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
在試用這個範例之前,請先按照Node.js使用用戶端程式庫的 Cloud Translation 快速入門導覽課程中的操作說明進行設定。詳情請參閱 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 控制台的「專案」頁面。
- 在專案清單中選取您要刪除的專案,並按一下 [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 時傳遞相片的其他背景資訊。 - 探索社群教學課程。