目標
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 の料金ガイドをご覧ください。
始める前に
以下の準備を行います。- Vision API、Cloud Translation API、Text-to-Speech API が有効化されている Google Cloud Console のプロジェクト
- Python プログラミングに関する基本的な知識
コードサンプルのダウンロード
このチュートリアルでは、Python 用 Cloud クライアント ライブラリの samples/snippets/hybrid_glossaries
ディレクトリのコードを使用します。
このチュートリアルのコードをダウンロードし、そのコードに移動するには、次のコマンドをターミナルから実行します。
git clone https://github.com/googleapis/python-translate.git cd samples/snippets/hybrid_glossaries/
クライアント ライブラリの設定
このチュートリアルでは、Vision、Translation、Text-to-Speech の各クライアント ライブラリを使用します。
関連するクライアント ライブラリをインストールするには、次のコマンドをターミナルから実行します。
pip install --upgrade google-cloud-vision pip install --upgrade google-cloud-translate pip install --upgrade google-cloud-texttospeech
用語集の作成権限を設定する
翻訳用語集を作成するには、「Cloud Translation API 編集者」の権限が付与されたサービス アカウント キーを使用する必要があります。
Cloud Translation API 編集者権限を持つサービス アカウント キーを設定するには、次の手順に従います。
サービス アカウントの作成:
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
プロジェクトを選択します。
[
サービス アカウントを作成] をクリックします。[サービス アカウント名] フィールドに名前を入力します。Google Cloud コンソールでは、この名前に基づいて [サービス アカウント ID] フィールドに値が設定されます。
省略可: [サービス アカウントの説明] 欄に、サービス アカウントの説明を入力します。
[作成して続行] をクリックします。
[ロールを選択] フィールドをクリックし、[Cloud Translation] > [Cloud Translation API 編集者] を選択します。
[完了] をクリックして、サービス アカウントの作成を完了します。
ブラウザ ウィンドウは閉じないでください。次のステップでこれを使用します。
作成したサービス アカウントの JSON キーをダウンロードします。
- Google Cloud コンソールで、作成したサービス アカウントのメールアドレスをクリックします。
- [キー] をクリックします。
- [鍵を追加]、[新しい鍵を作成] の順にクリックします。
[作成] をクリックします。JSON キーファイルがパソコンにダウンロードされます。
鍵ファイルは、サービス アカウントとしての認証で使用できるため、安全な場所に保管してください。このファイルは任意の場所に移動できます。名前の変更も可能です。
[閉じる] をクリックします。
ターミナルの
hybrid_glossaries
フォルダから、次のコマンドを使用してGOOGLE_APPLICATION_CREDENTIALS
変数を設定します。path_to_key
は、新しいサービス アカウント キーが含まれている、ダウンロードした JSON ファイルへのパスに置き換えます。Linux または macOS
export GOOGLE_APPLICATION_CREDENTIALS=path_to_key
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path_to_key
ライブラリのインポート
このチュートリアルでは、次のシステム インポートとクライアント ライブラリ インポートを使用します。
プロジェクト ID の設定
Google Cloud API へのリクエストごとに Google Cloud プロジェクトを関連付ける必要があります。GOOGLE_CLOUD_PROJECT
環境変数をターミナルから設定して、Google Cloud プロジェクトを指定します。
次のコマンドで、PROJECT_NUMBER_OR_ID を Google Cloud プロジェクト番号または ID に置き換えます。次のコマンドをターミナルから実行します。
Linux または macOS
export GOOGLE_CLOUD_PROJECT=PROJECT_NUMBER_OR_ID
Windows
set GOOGLE_CLOUD_PROJECT=PROJECT_NUMBER_OR_ID
このチュートリアルでは、次のグローバル プロジェクト ID 変数を使用します。
Vision を使用して画像からテキストを検出する
Vision API を使用して、画像からテキストを検出して抽出します。Vision API は光学式文字認識(OCR)を採用し、高密度テキスト検出機能(DOCUMENT_TEXT_DETECTION
)とスパース テキスト検出機能(TEXT_DETECTION
)の 2 つのテキスト検出機能をサポートします。
次のコードは、Vision API の DOCUMENT_TEXT_DETECTION
機能を使用して高密度テキストを含む写真からテキストを検出する方法を示しています。
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 ファイルの 1 行目で使用します。
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 バケットへのアップロードや、Cloud Storage バケットの作成を行う必要はありません。代わりにこのチュートリアルのために作成された一般公開の用語集ファイルを使用して、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 をターミナルから設定したことを確認してください。
次の関数は、用語集リソースを作成します。このチュートリアルの次のステップでは、この用語集リソースを使用して、翻訳リクエストをカスタマイズします。
用語集を使用して翻訳する
用語集リソースを作成したら、この用語集リソースを使用して Cloud Translation API に送信するテキストの翻訳をカスタマイズできます。
次の関数は、前に作成した用語集リソースを使用してテキストの翻訳をカスタマイズします。
音声合成マークアップ言語を利用して 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 ファイルに変換されます。
すべてを組み合わせる
前のステップでは、Vision、Translation、Text-to-Speech を使用する関数を hybrid_glossaries.py
に定義しました。これで、これらの関数を使用して次の写真から翻訳テキストの合成音声を生成する準備ができました。
次のコードは hybrid_glossaries.py
で定義された関数を呼び出して以下を行います:
Cloud Translation API の用語集リソースの作成する
Vision API を使用して上記画像からテキストを検出する
Cloud Translation API の用語集を使用して検出されたテキストを翻訳する
翻訳されたテキストのテキスト読み上げ合成音声を生成する
コードの実行
コードを実行するには、ターミナルでクローンされた hybrid_glossaries ディレクトリに次のコマンドを入力します。
python hybrid_tutorial.py
次の出力が表示されます。
Created glossary bistro-glossary. Audio content written to file resources/example.mp3
hybrid_glossaries.py
の実行後、hybrid_glossaries ディレクトリから resources ディレクトリに移動します。resources ディレクトリで example.mp3
ファイルを調べます。
次の音声クリップを聴いて example.mp3
ファイルが同じように聞こえることを確認します。
エラー メッセージのトラブルシューティング
403 IAM permission 'cloudtranslate.glossaries.create' denied.
この例外は、「Cloud Translation API 編集者」権限がないサービス アカウント キーを使用した場合に発生します。
KeyError: 'GOOGLE_CLOUD_PROJECT'
このエラーは、GOOGLE_CLOUD_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
この警告は、Cloud Translation API、Cloud Vision API、Text-to-Speech API を呼び出すときにそれぞれの 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 請求先アカウントにこのチュートリアルで使用したリソースに対する追加料金は発生しません。
プロジェクトの削除
- Google Cloud コンソールでプロジェクト ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログ ボックスで、プロジェクト ID を入力して、[シャットダウン] をクリックしてプロジェクトを削除します。
次のステップ
これで完了です。Vision OCR を使用して画像からテキストを検出しました。次に、翻訳用語集を作成し、その用語集を使った翻訳を行いました。その後、Text-to-Speech を使用して翻訳テキストの合成音声を生成しました。
Vision、Cloud Translation、テキスト読み上げの知識を活かすには:
- 自分の用語集を作成します。Cloud Storage バケットを作成する方法と用語集 CSV ファイルをバケットにアップロードする方法をご覧ください。
- 翻訳用語集の他の使用方法を試してみましょう。
- Cloud Vision OCR で Cloud Storage を使用する方法をご覧ください。
- テキスト読み上げで SSML を使用する方法の詳細をご覧ください。
- Vision API の
imageContext
フィールドを使用して Vision OCR を使用するときに、写真に関する追加コンテキストを渡す方法をご覧ください。 - コミュニティ チュートリアルをご覧ください。