Amazon Web Services ブログ

WebSocket で Amazon Transcribe を使用して、リアルタイムで音声をテキストに文字起こしする

Amazon Transcribe は、開発者が音声文字変換機能をアプリケーションに追加することを容易にする自動音声認識サービス (ASR) です。2018 年 11 月、HTTP/2 を介したストリーミングトランスクリプションを Amazon Transcribe に追加しました。これにより、ライブオーディオストリームをサービスに渡し、その代わりにリアルタイムで文字起こしテキストを受け取ることができるようになりました。最近、WebSocket プロトコルを介したリアルタイムの文字起こしのサポートを開始しました。WebSocket をサポートすることで、特にブラウザーやモバイルベースのアプリケーションを構築したい人にとって、Amazon Transcribe を介した音声文字変換のストリーミングをより幅広いユーザーベースに提供しやすくなります。

このブログ記事では、HTTP/2 で実行されるストリーミング文字起こしサービスは知っていることを前提として、WebSocket を介したリアルタイムサービスの使用方法を示すことに焦点を当てています。ただし、HTTP/2 の使用に関するリファレンスについては、以前のブログ記事技術ドキュメントをご覧ください。

WebSocket とは?

WebSocket は、TCP 上に構築された全二重通信プロトコルです。このプロトコルは、2011 年に RFC 6455 として IETF によって標準化されました。WebSocket は、サーバーとクライアントの両方が同じ接続を介して同時にデータを送信できる長期間有効な接続に適しています。クロスドメインの使用にも実用的です。ご覧ください! HTTP を使用する場合のように、クロスオリジンリソース共有 (CORS) を心配する必要はありません。

WebSocket で Amazon Transcribe ストリーミングを使用する

Amazon Transcribe の StartStreamTranscriptionWebSocket API を使用するには、まず IAM ユーザーに Amazon Transcribe Streaming WebSocket の使用を許可する必要があります。AWS マネジメントコンソールにアクセスし、Identity & Access Management (IAM) に移動して、AWS IAM コンソールで以下のインラインポリシーをユーザーにアタッチします。アクセス許可を追加する方法については、「ユーザーまたはロールのインラインポリシーを埋め込むには」を参照してください。

{
    "Version": "2012-10-17",
    "Statement": [
        "Sid": "transcribestreaming",
        "Effect": "Allow",
        "Action": "transcribe:StartStreamTranscriptionWebSocket",
        "Resource": "*"
    ]
}

アップグレードのリクエストには、AWS 署名バージョン 4 を使用して AWS 認証情報で事前署名する必要があります。リクエストには、必要なパラメータ、つまりサンプルレート、言語コード、メディアエンコーディングが含まれている必要があります。オプションで vocabulary-name を指定して、カスタムボキャブラリを使用することができます。The StartStreamTranscriptionWebSocket API は、Amazon Transcribe ストリーミングが現在サポートしているすべての言語をサポートしています。接続を WebSocket にアップグレードすると、バイナリ WebSocket フレームイベントストリームエンコーディングの AudioEvent としてオーディオチャンクを送信できます。取得される応答は文字起こし JSON であり、これもイベントストリームでエンコードされます。詳細については、技術ドキュメントを参照してください。

WebSocket を使用して Amazon Transcribe でアプリケーションをリアルタイムで強化する方法を示すために、サンプルの静的ウェブサイトを構築しました。このウェブサイトで、アカウント認証情報を入力し、優先言語のいずれかを選択して、ストリーミングを開始できます。完全なサンプルコードは GitHub で入手できます。とりわけ、JavaScript 開発者はこれが有益な出発点であると感じるかもしれません。WebSocket で Amazon Transcribe ストリーミングを使用して構築できるその他のクールなアプリケーションを楽しみにしています!


著者について

Bhaskar Bagchi は、Amazon Transcribe サービスチームのエンジニアです。余暇では、Bhaskar は写真と歌を楽しんでいます。

 

 

 

 

Karan Grover は、Amazon Transcribe サービスチームのエンジニアです。余暇では、Karan はハイキングを楽しみ、写真愛好家でもあります。

 

 

 

 

Paul Zhao は、AWS Machine Learning のプロダクトマネージャーです。彼は、Amazon Transcribe サービスを管理しています。余暇では、Paul はオートバイが大好きで、木工細工を熱心に楽しんでいます。