AWS関連2023.10.30Written by ふなっしーcolumn No.10
Amazon Transcribeを使って動画の文字起こしをして、字幕を付けてみる
動画に字幕を付ける必要がある場合、皆さんはどのように字幕を付けていますでしょうか?数分程度の動画であれば、動画を再生しながら手打ちで字幕を書き起こすことも出来ますが、長い尺の動画の場合は、文字起こしだけでも多くの時間と労力を取られてしまいます。
例えば、弊社でもデジタルサイネージサービスの「KAWARA板ネット」を提供しておりますが、お客様から、「サイネージは音が出ないので流す動画に字幕を付けなければならないが、動画を文字起こしをして字幕を付けるのが一苦労」というお声を良く聞きます。
そこで今回は、大変な文字起こしの作業の負荷を少しでも軽減するために、AWSのサービス「Amazon Transcribe」を使って、動画の文字起こしと字幕の生成を行ってみようと思います。
動画に字幕を付けるのにあたり、準備する必要のあるもの
動画の文字起こしをして、動画ファイルに文字起こしをした字幕ファイルを埋め込むには、下記のものが必要となります。
- 字幕を付ける対象の動画 (mp4ファイル)
- AWSアカウント
- Amazon S3
文字起こしをする動画 (mp4ファイル)を、Amazon S3のバケットにアップロードします。
- Amazon Transcribe
動画ファイルの音声から文字起こしをして、字幕ファイルとして出力してくれるAWSのサービスです。
- FFmpeg
- FFmpegは、動画や音声を加工したり、変換することができる無料ツールです
- 今回は、FFmpegを使って、mp4ファイルにAmazon Transcribeで生成した字幕ファイル (srt) を埋め込みます
- FFmpegの導入方法など、詳細については、下記の記事をご参照ください
コラムffmpeg記事
字幕を付ける対象の動画 (mp4ファイル)をS3に格納
まずは、Amazon S3に任意のバケットを作成します。そして、作成したバケットに文字起こしをする対象のmp4ファイルをアップロードします。
Amazon Transcribeのジョブを設定し、実行
すると、トランスクライブのジョブが新規に作成され、文字起こしの処理が始まります。
処理中は、ステータスの欄が「進行中」となるので、処理が完了するまでしばらく待ちます。
(処理の長さは動画の尺によって変わりますが、数分程度になります。)
Amazon Transcribeより出力された字幕テキスト情報をダウンロード
Amazon Transcribeのジョブの処理が完了すると、ステータスが「完了」となるので、ジョブの名前(今回であれば、”funassy-transcribe”) をクリックします。
すると、ジョブの詳細画面が表示されるので、「ダウンロード」から「SRT形式」の字幕ファイルをダウンロードします。ダウンロードしたsrtファイルは、文字起こしをする対象の動画ファイルと同じフォルダに格納するようにしてください。
FFmpeg を使い、mp4 ファイルに字幕の挿入を行う
下記のコマンドを使って、動画ファイルに字幕の挿入を行います。
字幕を付ける元の動画だいると字幕用のファイル (SRTファイル)は同じディレクトリ階層に置くようにしてください。
FFmpegの使い方については、下記の記事をご参照ください。
コラムffmpeg
FFmpegで動画ファイルに字幕を挿入するには、主に下記の2つの方法があるので、その両方を説明します。
方法① 動画自体に字幕を焼きこむ方法 (ハードサブ)
この方法では、映像の中に字幕をそのまま印字するため、字幕を消すことは出来なくなりますが、どのデバイスでも、字幕が同じように表示されるようになります。また、弊社のサイネージサービス「KAWARA板ネット」で字幕付きの動画を表示させる場合は、こちらの方法をお使いください。
字幕を動画に焼きこむためは、動画ファイルと字幕ファイルが格納されているフォルダがカレントディレクトリとなっている状態で、下記のコマンドを実行します。
コマンド①: SRT形式の字幕ファイルをASS形式の字幕ファイルへ変換
ffmpeg -i SRT形式の字幕ファイル.srt 出力するASSファイル名.ass
ASSファイルをいじってフォントや文字のサイズを指定
動画に焼きこむ字幕のフォントや文字の大きさ、色を変更するには、出力されたassファイルを編集する必要があります。assファイルをテキストエディタで開き、[V4+ Styles]のStyleの部分のパラメータを変更します。
今回は、デフォルトではフォントが「Arial」となっているのを、「Meiryo UI」へ書き換え、フォントサイズを「16」から「25」へ書き換えました。
ASSファイルの書き換えが完了したら、下記のコマンドを実行して、動画に字幕を焼きこみます。
コマンド②: 指定した動画にASSファイルから字幕を焼きこむ
ffmpeg -i 字幕を挿入する動画.mp4 -vf ass='ASSファイル名.ass' 出力する動画ファイル名.mp4
方法①の動作確認
実際にコマンドを実行した例
方法② 動画ファイルに字幕トラックを追加する方法 (ソフトサブ)
この方法では、動画ファイル内に字幕データを付与するため、視聴者側で字幕の表示・非表示を操作することが可能です。また、複数の字幕トラックを追加することも可能となります。
字幕トラックを動画ファイルに挿入するには、動画ファイルと字幕ファイルが格納されているフォルダがカレントディレクトリとなっている状態で、下記のコマンドを実行します。
コマンド①: 指定した動画ファイルに指定の字幕ファイルから字幕トラックを追加する
ffmpeg -i 字幕を挿入する動画.mp4 -i 字幕ファイル.srt -c copy -c:s mov_text -metadata:s:s:0 language=jpn 出力する動画ファイル名.mp4
※コマンド内のファイル名は適宜変更して実行してください。
実際にコマンドを実行した例
方法②の動作確認
このように、AWSの文字起こしサービス「Amazon Transcribe」を用いることにより、手間のかかる大変な動画の字幕作成の作業を軽減することができます。
Amazon TranscribeはAWSの無料利用枠の対象で、AWSアカウントを開設してから12か月間、1か月あたり60分以内の文字起こしは無料ですので、お気軽にお試しいただけます。
また、弊社ではAmazon Chime SDKを活用したビデオ会議開発サービス「Scadp」や、AWSメディアサービス系のソリューションなど、AWSにまつわる開発・構築サービスをご提供しておりますので、ご関心のある方は、お気軽に弊社までお問い合わせください。
ふなっしー2022年9月にイノコスへ入社。元々「IT」と「映像配信」の分野に強い興味があり、両方の分野で仕事ができるイノコスに惹かれて入社。イノコスに入る前はアメリカで学生をやっており、高校から大学までアメリカで過ごしたイノコスのU.S.逆輸入ファイター。営業チームのメンバーではあるが、技術の仕事もよく任される。社内での愛称は「ふなっしー」。好きな食べ物は寿司。