Amazon Web Services ブログ
AWS サービスを使用した独自のリアルタイム音声翻訳アプリケーションの構築
ある言語で何かを言うと、ツールが即時にそれを他の言語に翻訳することを想像してみてください。AWS のサービスを使って独自のリアルタイム音声翻訳アプリケーションを構築できればますます素晴らしいと思いませんか? そのアプリケーションは銀河ヒッチハイク・ガイドに登場するバベルフィッシュに匹敵するものになるでしょう。
「小さくて黄色の、蛭みたいな恰好で、これは宇宙で最も奇怪な道具だけど、このバベルフィッシュを耳に装うだけで世界中のどんな言葉も聞き取ることができる」
ダグラス・アダムス、銀河ヒッチハイク・ガイド
この記事では、AWS の複数のサービスを接続して、バベルフィッシュのように機能する独自のアプリケーションを構築する方法をご紹介します。
このブログ記事について | |
読む時間 | 15 分 |
完了するまでの時間 | 30 分 |
完了するためのコスト | 1 USD 未満 |
学習レベル | 中級 (200) |
AWS のサービス | Amazon Polly、Amazon Transcribe、Amazon Translate、AWS Lambda、Amazon CloudFront、Amazon S3 |
概要
このアプリケーションの中核は、以下の AI 言語サービスをつなげる AWS Lambda 関数で構成されています。
- Amazon Transcribe – 完全マネージド型で継続的に訓練されるこの自動音声認識 (ASR) サービスは、音声を取り込み、正確なトランスクリプトを自動で生成します。Amazon Transcribe はリアルタイムの文字起こしをサポートし、これはほぼリアルタイムでの変換の実現に役立ちます。
- Amazon Translate – このニューラル機械翻訳サービスは、高速、高品質、かつ低価格の言語翻訳を提供します。
- Amazon Polly – このテキスト読み上げサービスは、人の声のように聞こえる音声を合成するために、高度な深層学習テクノロジーを使用します。
以下のイラストは、これら 3 つのサービスがどのように関連するかを表す図式です。
このプロセスを少し簡単にするため、アプリケーションを開始する AWS CloudFormation テンプレートを使用することができます。以下の図はこのプロセスのすべてのコンポーネントを示したものです。これらについては、この後で詳しく説明します。
サービスの相互作用の流れは以下のとおりです。
- Amazon CloudFront を使ってサイトへのアクセスを許可する。これは、サイトのページに対する HTTPS リンクの取得を可能にします。一部のブラウザでは、音声を録音するために HTTPS リンクが必要になります。
- Amazon S3 でページをホストする。こうすることで、ソリューションの全体がシンプルになります。また、ブラウザで録音された入力オーディオファイルを保存する場所にもなります。
- Amazon Cognito を使って、ブラウザから S3 と Lambda へのセキュアなアクセスを確保する。
- S3 に入力オーディオファイルを保存して、Lambda 関数を呼び出す。関数の入力にオーディオファイル (先ほど Amazon S3 に保存したもの) の名前を提供し、ソース言語とターゲット言語のパラメータを渡す。
- Amazon Transcribe を使って音声をテキストに変換する。
- Amazon Translate を使って、文字に起こされたテキストを別の言語に翻訳する。
- Amazon Polly を使って、新たに翻訳されたテキストを音声に変換する。
- Lambda 関数を使って出力オーディオファイルを S3 に保存しなおしてから、ファイル名をページに返す (JavaScript 呼び出し)。オーディオファイル自体を返すこともできますが、簡略化のため、ファイルは S3 に保存して名前だけを返します。
- 翻訳された音声をユーザーに自動で再生する。
- CloudFront を使ってファイルの配信速度を上げる。
開始方法
先ほどお話したとおり、必要なリソースすべてを作成するための AWS CloudFormation テンプレートが作成されています。
- コンソールにサインインして、Launch Stack を選択します。これによって、お使いの AWS アカウントで CloudFormation スタックが起動されます。このスタックは US-East-1 (バージニア北部) リージョンで起動されます。
- デフォルト値を受け入れてウィザードを完了し、スタックを作成します。ウィザードの最後のステップで、CloudFormation が IAM を作成することを承諾してください。10~15 分後にスタックが作成されます。
- 以下のスクリーンショットに表示されているスタックの Outputs セクションには、以下の 4 つのパラメータがあります。
- VoiceTranslatorLink – ウェブページへのリンク。
- VoiceTranslatorLambda – ウェブアプリケーションから呼び出される Lambda 関数の名前。
- VoiceTranslatorBucket – アプリケーションをホストし、オーディオファイルが保存される S3 バケット。
- IdentityPoolIdOutput – ID プールの ID。S3 と Lambda にセキュアに接続することを可能にします。
- 以下の zip ファイルをダウンロードして、解凍します。この中には 3 つのファイルがあります。
- ダウンロードした voice-translator-config.js という名前のファイルを開き、スタックの 4 つの出力値に基づいて編集します (ステップ 3)。編集後は以下のようになります。
- S3 コンソールで S3 バケット (CloudFormation テンプレートによって作成されたもの) を開きます。編集したバージョンの voice-translator-config.js を含めた 3 つのファイルをすべてアップロードします。
テスト
ステップ 3 で提供されたリンクからアプリケーションを開きます。Voice Translator App インターフェイスで、以下のステップを実行してプロセスをテストします。
- ソース言語を選択します。
- ターゲット言語を選択します。
- 言いたいことを考えてから、[START RECORDING] を選択して話し始めます。
- 話し終えたら、[STOP RECORDING] を選択して数秒間待ちます。
すべてが問題なく機能していれば、アプリケーションが自動的にターゲット言語での音声を再生します。
結論
ご覧いただいたように、AWS にある既存の統合された AI 言語サービスに基づいた独自のユニークな音声翻訳アプリケーションを作成には 1 時間もかかりません。さらに、プロセスの全体がサーバーなしで実行されます。
このアプリケーションは現在、米国英語と米国スペイン語の 2 つの入力言語をサポートしていますが、Amazon Transcribe は最近、英国英語、フランス語、カナダフランス語でのリアルタイムのテキスト読み上げのサポートを開始しました。これらの言語を使用して、アプリケーションを自由に拡張してみてください。
アプリケーションのソースコード (JavaScript で記述された Lambda 関数を含む) は、voice-translator-app GitHub リポジトリでご覧いただけます。今回は、音声を録音するためのブラウザの使用に加えて、Matt Diamond によるこの recorder.js スクリプトも使用しました。
著者について
Tomasz Stachlewski は AWS のソリューションアーキテクトで、(スタートアップからエンタープライズ規模まで) あらゆるサイズの企業のクラウド展開を支援しています。彼はサーバーレスアーキテクチャといったイノベーティブなテクノロジーの信奉者です。こうしたテクノロジーは企業がデジタル変革を推進するのに役立ちます。