画像・音声・翻訳・文書の AI サービスを 6 つまとめて触る
記事の「実践」を 1 項目ずつ進めるためのページです。AWS マネジメントコンソールで操作したら、右の一覧にチェックを入れてください。チェックはこのブラウザに保存されます。
前提条件
- リージョン:
ap-northeast-1(東京)。Textract のみap-northeast-2(ソウル)を使います(Textract は東京リージョンで提供されていないため) - AWS マネジメントコンソールにログイン済みであること
- Rekognition、Polly、Translate、Comprehend、Textract、Transcribe、S3、CloudShell を操作できる権限があること
- 英文のメモ画像(PNG)を 1 枚用意していること。PC のメモ帳などに以下の 4 行を入力し、その部分のスクリーンショットを PNG で保存したもので構いません(自分で作った画像なので、権利の心配がありません)
ORDER FORM
Name: Cloud Osaru
Item: Banana
Quantity: 12
本記事で使う文章は、以下の日本語の 1 文です。Comprehend・Translate・Polly で共通して使います。
東京リージョンで AWS のハンズオンを体験しました。手順がわかりやすく、とても楽しかったです。
作成するリソース一覧
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| S3 バケット | ai-services-handson-<アカウントID> | Polly で作った音声ファイル(speech.mp3)の置き場所。Transcribe の入力 |
| Transcribe 文字起こしジョブ | ai-services-handson-job | speech.mp3 を日本語で文字起こしする |
その他のサービスはデモ画面や API の呼び出しだけで、リソースは作成しません。
Comprehend で文章の感情とエンティティを読み取る
- AWS マネジメントコンソールにログインし、リージョンが
ap-northeast-1(東京)であることを確認します - 上部の検索バーに
Comprehendと入力し、表示された「Amazon Comprehend」を選択します - 初めて開く場合はトップ画面の「Launch Amazon Comprehend」をクリックします。左側ナビゲーションの「Real-time analysis」を選択します(Comprehend のコンソールは英語表記です)
- 「Analysis type」が「Built-in」になっていることを確認します
- 「Input text」の入力欄に、前提条件の日本語の文章を貼り付けます
- 「Analyze」をクリックします
- 「Insights」の「Entities」タブを選択し、
東京(Location)とAWS(Title)がエンティティとして検出され、種類(Type)と信頼度(Confidence)が表示されていることを確認します - 「Sentiment」タブを選択し、感情(Neutral・Positive・Negative・Mixed)ごとの信頼度スコアを確認します。この文章では Positive が 0.99 で、ほかは 0.00 と表示されます
「Syntax」タブは日本語に対応していないため、この文章では結果が得られません。日本語で使えるのはエンティティ、キーフレーズ、主要言語、感情です。
Translate で日本語を英語に訳す
- 上部の検索バーに
Translateと入力し、表示された「Amazon Translate」を選択します - 左側ナビゲーションの「リアルタイムでの翻訳」を選択します
- 「Text」タブが選択されていることを確認し、「ソース言語」で
日本語(ja)、「ターゲット言語」で英語(en)を選択します(初期値はソースが英語、ターゲットがスペイン語です) - 「テキストの入力」欄に前提条件の日本語の文章を貼り付けます
- 右側の「翻訳済みテキスト」欄に英訳(
I experienced AWS hands-on in the Tokyo region. The steps were easy to understand and I had a lot of fun.のような文)が表示されることを確認します
ソース言語は「自動」にもできますが、その場合は Translate が Amazon Comprehend を呼び出して言語を判定します。ここでは言語がわかっているので、日本語を明示しています。
Polly で文章を読み上げる
- 上部の検索バーに
Pollyと入力し、表示された「Amazon Polly」を選択します - 「テキスト読み上げ機能」の画面が開きます(左側ナビゲーションはありません)
- 「エンジン」で「ニューラル」を選択します(初期値は「生成」です)
- 「言語」で
日本語を選択すると、「音声」がKazuha, 女性になり、サンプルテキストも日本語に変わります。別の音声になっている場合はKazuha, 女性を選択します - 「SSML」はオフのまま、「入力テキスト」の欄にあるサンプルテキストを消して前提条件の日本語の文章を貼り付けます
- 右上の「音声を聴く」をクリックし、文章が読み上げられることを確認します
CloudShell で Polly の音声を S3 に置く
Transcribe のバッチ文字起こしは、S3 バケットにあるメディアファイルを入力にします。そこで、同じ文章を CloudShell から Polly の API で音声ファイルにし、S3 バケットにアップロードします。
- コンソール上部の CloudShell アイコンをクリックし、CloudShell を開きます(リージョンが
ap-northeast-1であることを確認します) - 以下のコマンドを実行し、アカウント ID 入りのバケット名で S3 バケットを作成します
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
BUCKET=ai-services-handson-${ACCOUNT_ID}
aws s3 mb s3://${BUCKET} --region ap-northeast-1
- Polly の
synthesize-speechで、ニューラル音声 Kazuha の MP3 ファイルを作成します
aws polly synthesize-speech \
--engine neural \
--voice-id Kazuha \
--output-format mp3 \
--text '東京リージョンで AWS のハンズオンを体験しました。手順がわかりやすく、とても楽しかったです。' \
speech.mp3
"ContentType": "audio/mpeg"と"RequestCharacters"(合成した文字数)が表示されることを確認します- 作成した
speech.mp3を S3 バケットにアップロードし、S3 URI を表示します
aws s3 cp speech.mp3 s3://${BUCKET}/speech.mp3
echo s3://${BUCKET}/speech.mp3
最後に表示された s3://ai-services-handson-<アカウントID>/speech.mp3 を、次の Transcribe で使います。
Transcribe で音声を日本語の文章に戻す
- 上部の検索バーに
Transcribeと入力し、表示された「Amazon Transcribe」を選択します - 左側ナビゲーションの「トランスクリプションジョブ」を選択し、「ジョブを作成」をクリックします
- 「ジョブの詳細を指定」ページで以下を設定します
- 名前:
ai-services-handson-job - 言語設定: 「特定の言語」を選び(初期値)、「言語」で
日本語、日本 (ja-JP)を選択 - 入力データの S3 URI:
s3://ai-services-handson-<アカウントID>/speech.mp3(「Browse S3」から選択しても構いません) - 出力データ: 「サービスマネージド S3 バケット」(デフォルト)
- 名前:
- その他の項目はデフォルトのままにし、画面下部の「次へ」をクリックします
- 「ジョブを設定」ページはデフォルトのまま「ジョブを作成」をクリックします
- 「トランスクリプションジョブ」の一覧で、
ai-services-handson-jobのステータスが「進行中」から「完了」になるまで待ちます(1〜2 分ほどかかります) - ジョブ名をクリックし、ジョブの詳細ページの「トランスクリプションのプレビュー」に日本語の文章が表示されることを確認します。Polly の読み上げ文とほぼ同じ文章が表示されますが、
AWSが「エーダブリューエス」と書き起こされるなど、表記が少し変わることがあります
出力にサービスマネージドバケットを選ぶと、コンソールでトランスクリプトのプレビューを表示できます。独自の S3 バケットを出力先にした場合はプレビューが表示されない場合があり、バケットから JSON ファイルを開いて確認します。
Rekognition でメモ画像の文字を検出する
- 上部の検索バーに
Rekognitionと入力し、表示された「Amazon Rekognition」を選択します(リージョンはap-northeast-1のまま) - 左側ナビゲーションの「デモ」配下にある「イメージ内のテキスト」を選択します
- 画面下部の「自前の画像を使用」にある「アップロード またはドラッグアンドドロップ」から、前提条件で用意した英文のメモ画像を選択します
- 画像上で検出された文字が枠で囲まれ、右側の「結果」に
ORDER、FORM、Name:、Cloud、Osaruなど、単語ごとに文字が並ぶことを確認します
Rekognition のテキスト検出が返すのは、画像内の行と単語、その位置です。Name と Cloud Osaru が「項目名と値」の関係にあることまでは返しません。
Textract でメモ画像からキーと値を取り出す
- 画面右上のリージョンセレクターで「アジアパシフィック (ソウル)
ap-northeast-2」に切り替えます - 上部の検索バーに
Textractと入力し、表示された「Amazon Textract」を選択します - 左側ナビゲーションの「デモ」配下にある「文書を分析する」を選択します
- 「ドキュメントのアップロード」の「ドキュメントを選択」から、Rekognition で使ったのと同じメモ画像をアップロードします
- 右側に「ドキュメントを設定」の「データ出力」が開くので、「フォーム」にチェックを入れて「設定を適用」をクリックします
- 結果のタブ(「生のテキスト」「フォーム」)で「フォーム」を選択し、
Name:→Cloud Osaru、Item:→Banana、Quantity:→12のように、キーと値のペアが表示されることを確認します
同じ画像でも、Textract は文書として読み、項目名と値の対応まで取り出せることが確認できます。