[レポート]AIM337 – AWS AIサービスを利用して多言語対応の動画字幕・音声読み上げを作成 #reinvent

2018.11.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

本記事はAWS re:Invent 2018の Chalk Talk セッション「AIM337 - Powering Multilingual Video Transcription, Translation, and Search」のレポートです。

AWS の AI サービス

  • Amazon Polly
  • Amazon Transcribe
  • Amazon Translate

を組み合わせて

  • 多言語対応の字幕動画
  • 多言語対応のポッドキャスト

の作成方法を学びます。

スピーカー

  • Rob Dachowski - Partner Solutions Architect, AWS

セッション概要

Automatic video transcription and translation can help make videos more available and accessible to a global audience in many languages, enabling your employees or customers to access, understand, and benefit from your content. In this chalk talk, we discuss how to transcribe videos, translate them in the required languages in a multilingual application, and enable video search in the viewer’s preferred language—all in an automated and cost-effective manner.

セッション資料

多言語字幕の動画デモ

最初に、昨年の re:invent の Andy Jassy のキーノートを題材に

  • オリジナルの動画
  • 英語字幕付与
  • 他言語の字幕付与
  • 音声と字幕を他言語に変更

のデモを行います。

パブリックプレビュー提供されているドイツ語が早速使われていました。

この動画をどうやって作るのか学びます

利用サービス

EC2 上の作業は不要で、すべてフルマネージドサービスです。

主要サービスの機能を確認します。

Amazon Transcribe:自動音声認識サービス

  • 音声・動画を文字起こし
  • S3 の出力先がカスタマイズ可能
  • 各発話の時刻・確度もわかる
  • チャンネル別文字起こし可能
  • GDPR 準拠
  • 句読点も正しく付与
  • 専門用語を認識させるための語彙登録機能
  • 状態遷移時に CloudWatch Events でイベント発火
  • 話者の識別
  • 複数の言語に対応(現在は英語・フランス語・スペイン語)

Amazon Transcribe:バッチ・ストリーム実行

Amazon Transcribe には2種類の実行モードがあります。

  • バッチモードは保存済み音源に向いています
  • 2018年11月に発表されたストリームモードはライブ配信などリアルタイム性の必要な文字起こしに向いています

Amazon Translate:ニューラル機械翻訳サービス

Amazon Translateはニューラルネットワークベースの機械翻訳サービスです。

文章を翻訳する際は、単語帳のような word for word の翻訳を行なうと不自然になり、コンテキストを理解した翻訳が必要です。

Amazon Translate はそのような翻訳に対応しています。

現在は21言語に対応し、対応言語はどんどん増える予定です。

Polly:テキスト読み上げサービス

Amazon Pollyは人工知能を活用したテキスト読み上げサービスです。

  • 27 言語
  • 57 音声(男性・女性・なまりなどが異なる)

に対応しています。

読み上げはストリームされるので、 mp3/ogg といった音源に簡単に保存することができます。

設計時に考慮すべきこと

  • バッチなのかリアルタイムなのか
    • コールセンターの対応作業分析では、リアルタイム性は不要
    • 音声データのテキスト化・インデックス化のようなアーカイビングもリアルタイム性は不要
  • 文字起こしだけなのか?翻訳も必要か?
  • 動画と連動してどうやって字幕を表示するか?
    • 短い単位で時間と連動して字幕が更新されるのが好ましい
    • 長い時間、長い文章が画面下部を支配するのは好ましくない
  • テキスト読み上げも必要か?

動画字幕に必要な SubRip(.SRT) ファイル形式

動画に字幕をかぶせる際には、 SubRip(拡張子は .srt) のファイル形式がスタンダード。

この形式は YouTube 動画でも利用可能です。

サポートされる字幕ファイル - YouTube

次のように

  • シーケンス番号
  • 字幕表示時間帯
  • 字幕表示内容

を記載します。

168
00:20:41,150 --> 00:20:45,109
- How did he do that?
- Made him an offer he couldn't refuse.

残念ながら、 Amazon Transcribe の JSON 出力を SRT に変換する公式ツールは存在しません。OSS の利用や自作が必要です。

SubRip のウェブ配信への応用

SubRip フォーマットはウェブにも利用出来ます。

ウェブに特化した VTT ファイルは厳密には SRT ファイルとは異なりますが、非常に似通っています。

Web Video Text Track(WebVTT) と呼ばれ、次のような HTML タグを書きます。

<video width="640" height="480" controls>
  <source src="video.mp4" type="video/mp4" />
  <track src="engligh.vtt" kind="subtitles" srclang="en" label="English" />
</video>

各言語用の VTT ファイルを用意することで多言語対応も可能です。

バッチアーキテクチャー

紹介したようなサービスを実現するための、アーキテクチャーを考えます。

まずはバッチベースの場合です。

マルチメディアを S3 バケットに PUT に、その時のイベントで Lambda 関数を発火しパイプラインを呼び出します。

パイプライン全体を Step Functions で状態管理しても良いですし、各ステップごとに Lambda でつなげることも可能です。

この図のアプローチは、コールセンターでの音声対応分析を想定しており、右側のアウトプットには

  • QuickSight の分析
  • Comprehend でセンチメント分析

なども行っています。

図では Transcribe から直接 Translate を呼び出しているように見えます。

実際は、 Transcribe ジョブの実行結果(JSONファイル)から本文を抽出し、Translate に API を投げる必要があります。

そのような細かい処理は、アプローチ図からは端折られている点にご注意ください。

リアルタイムアーキテクチャー

Amazon Transcribe の 2018年11月アップデートにより、リアルタイムも可能になりました。

流れてくる音声をリアルタイムで文字起こしし、そのレスポンスのブロック単位で後続処理を行います。

非常に重要な点として、リアルタイム transcribe は HTTP/2 プロトコルを利用します。 HTTP/2 に対応してない SDK はこの機能を利用できません。

質問まとめ

chalk session のため、参加者は疑問点を随時質問します。

パイプライン全体のレイテンシー

Transcribe のレイテンシーが大きい。バッチは分単位、リアルタイムも500ms程度。

Translate は早い。

翻訳時の言語ペア

Amazon Translate の翻訳では、対応言語のほとんどの言語間の翻訳(スペイン語を日本語日本訳)が可能です。 特定言語(例えば英語)に一度訳した上で再翻訳しなくて大丈夫です。

ただし、日本語↔ロシア語のように、特定の言語ペアでは直接翻訳ができないため、一度他言語を中継してください。

文字起こし時の性別の識別

Amazon Transcribe は話者を識別することが出来ます。

あくまでも、音声レベルで話者を識別しているだけであり、性別・年齢・地方のような他のメタ情報も復元することはできません。

複数言語が混ざった言語の場合は?

音声に複数言語が混ざっているケースがあります。

そのようなケースでは、文字起こし時に指定した言語として文字起こしされます。

そのため、英語音声にフランス語が混ざっている場合、フランス語部分は意味不明となります。

動画編集

スピーカーはエンジニアバックグラウンドがあるため、自分が使いやすい GitHub : MoviePy を利用。 商用サービスであれば、プロユースなツールを利用すること。

チョークセッションについて

チョークセッションではスピーカーの参加者がリアルタイムで質問を行い、インタラクティブに進行します。 部屋のサイズも30人程度のキャパシティしかありません。

参加者が主体のワークショップと一方通行なセッションの交差点です。

具体的な利用経験を持っているサービスについては、この形式のセッションを利用すると、より楽しめるのではないでしょうか?

ユースケース

小学校の日報ポッドキャストで

  • 耳の聞こえない生徒向けの文字起こし
  • 英語が苦手なヒスパニックの生徒向けのスペイン語音声

を利用しているケースもあるとのことでした。

参考