menu
Webを活用してお客様のビジネス課題を解決します。札幌・東京を拠点にWebコンサルティングをコアにした、Web制作・システム開発・サーバ構築会社です。

アップロードした巨大な動画ファイルから Amazon Transcribe による字幕起こしを行うためのアーキテクチャ

シェア
ツイート
シェア
ブックマーク
タイトルとURLをコピー

公開日:2024/08/07

はじめに

AWSが提供するAmazon Transcribeを利用すると、音声ファイルや動画ファイルから文字起こしを行うことができます。このサービスは、生成した字幕データをvttファイル形式で提供し、このファイルを動画と組み合わせることで、動画再生時に字幕を付けることが可能です。詳細はWebVTT APIのドキュメントをご覧ください。

Amazon Transcribeは多様な音声・動画フォーマットに対応しています。 詳細は公式ドキュメントを参照してください。

一方、このサービスでは扱うデータにいくつかの制約があります。例えば、読み込み可能なファイルサイズは最大2GB、そして1ジョブで扱える音声の最大長は4時間となっています(参考リンク)。

弊社で開発した動画配信システムにおいて Amazon Transcribe を利用した字幕の自動生成の仕組みを作成しましたが、この時、2GB を超える動画ファイルを扱う必要がありました。 本記事では、どのような方法でこの問題に対処したかの具体的なアプローチを説明します。

 

採用したアプローチ

Amazon Transcribe は動画だけでなく音声ファイルも扱えるため、以下のアルゴリズムを採用して一定以上のサイズの動画ファイルを音声ファイルに変換して対応しました。

 

  • 動画ファイルのサイズが1GB以上かどうかを判定します
  • もし動画ファイルのサイズが1GB未満の場合、動画ファイルをそのままAmazon Transcribeに入力してジョブを起動します
  • もし動画ファイルのサイズが1GB以上の場合、Fargateジョブを呼び出して動画から音声をOGG形式に変換します
  • 変換した音声ファイルをAmazon Transcribeに入力してジョブを起動します

 

今回開発したアプリケーションで取り扱われる動画は、そのデータ容量のほとんどが映像に利用されているものです。 そのため、音声ファイルに変換することでファイルサイズを十分に削減できるという前提でこの方法を採用しました。

Fargateジョブは、S3上の動画ファイルパスを受け取り、変換後の音声ファイルをS3に出力します。この処理にはコンテナ上で実行されるffmpegが使用されています。Fargateを選んだのは、変換機能を常時稼働させておく必要はなかったためです。 もう一つの候補として AWS Lambda で動作させることも検討しましたが、Lambda で処理可能な15分の実行時間制限を超える可能性があったため、Fargate を採用しました。

生成した音声ファイルは S3 のライフサイクルルールによって自動的に消去される領域に保存するようにしています。 このような工夫をすることで、利用するリソースを最小限に抑えて、AWSの追加コストを最小限に抑えることができています。

 

おわりに

この記事では、データの性質を考慮した上で、既存のシステムを大きく変更することなく、巨大な動画ファイルからAmazon Transcribeを用いた字幕起こしを可能にするアーキテクチャの拡張方法について詳しく説明しました。当初はAmazon Transcribeの2GBの制限に気づかずに設計していましたが、その後の対応で、システムの根本的な変更を避けつつ、効果的に拡張することができました。

このプロジェクトを通じて、AWSのサービスを利用する際に疎結合なアーキテクチャを採用することの重要性とメリットを再認識しました。システムの各コンポーネントを独立させることで、一部に変更が必要な場合でも他の部分に影響を与えることなく、迅速かつ効率的に対応することが可能です。