はじめに

これは ドリコム Advent Calendar 2021 の2日目です。
1日目は小川光典さんのAPI 専用 Rails における session_store redis の設定方法です。

自己紹介

こんにちは。AROW エンジニアの広井です。
わたしは「AROW」というプロジェクトで活動しています。AROW では3Dリアルマップの研究開発を行っていて、没入感のある新しいゲーム体験の実現を目指すために現在開発中です。

今回の記事について

今回は台本YAMLというデータファイルを書くだけで動画を作れるスクリプトを作ってみた、というのを書きたいと思います。
先日 Tech Inside Drecom で公開した動画、アドベントカレンダーの紹介動画「【お祭り】AdventCalendar 2021 今年もやります!【Tech Inside Drecom】」は実際にGUIツールを利用せず、のみで作成した動画です。スクリプト以外に用意したのは台本YAMLと画像アセットのみです。
どうしてスクリプトで作るようにしたのか、どのように作ることができたか、また、作った上で感じたことを今後として書いていきます。

今回作成した動画の概要

キャラクターが2人で AdventCalendar についておしゃべりする動画です。音声字幕付きです。

どうしてスクリプトで作るようにしたのか

GUI ツールを利用しないことで、今後動画作成者のツールの習熟によらず一定のクオリティの動画を作成できることを期待したからです。前提条件を説明すると、「Tech Inside Drecom の運営メンバーは持ち回りで動画を作成しておりツールの習熟がしにくい環境」と「作成する動画はキャラクター同士がしゃべる定型な部分が多い」というものがあります。
これまではGUIツールである Adobe Premiere Pro を利用して各位が動画を作成していました。GUIツールでの動画作成はプレビューがしやすかったり、一般的な動画作成に利用される編集機能が豊富だったりでとてもいいものです。ですが、初めて利用するメンバーにとってはある程度学習コストがかかります。また、キャラクター同士が話す定型部分に画像や音声の配置は手動での操作が必要です。以前作成したプロジェクトから必要な部分を流用はできますが、新規作成部分については各位が調整するようになっています。
対してコマンドラインのみでの動画作成は、メンバーがGUIツールでの調整ができない代わりに、GUIツールの習熟によらない動画作成が期待できます。
またデータのみで作れるということは、設定をデータに残すことで前回の定型の流用がかんたんにできます。複雑な編集を必要としない定型の動画作成の場合に役に立つのではないかと考えています。

どのようなものが出来たか

メンバーは台本ファイルと画像リソースを用意し、スクリプトを実行すれば完成した動画ができるようになりました。
台本ファイルとは、主にセリフ部分が書かれたYAMLファイルです。セリフ以外にも情報をもたせる必要があるため、情報が追加しやすいファイル形式としてYAMLを採用しました。以下のようにセリフ部分を書きます。

  - text: お、 アドベントカレンダーの 季節だね。
    voice-id: Takumi
    background: tmp/waku_with_kaiwa.png
    font-style: PrimaryColour=&H7B7B7B,OutlineColour=&HFFFFFF

このセリフ部分だけで、音声ファイルの作成、動画の作成、字幕付与を行います。
具体的には以下を行います。
  • text データを voice-id を文章音声変換の Amazon Polly の API を利用することで音声ファイルにします。voice-id は Amazon Polly のキャラクター指定です。
  • background で示された画像ファイルを背景に、音声ファイルと合わせてffmpeg で動画にします。
  • text データと font-style を利用し、作成した動画に対し ffmpeg で字幕付与を行います。font-style でえん丸先輩とカリンちゃんそれぞれの文字色を設定しています。
上記を最後のセリフまで繰り返し、できた動画ファイルを ffmpeg で結合したら完成です。
メンバーはテキストエディタで YAML のセリフ部分のデータさえ作ればいいため、ツールの学習コストはかなり低いと考えています。意図通りのスクリプトが作成できました!

ここで紹介したまでのスクリプトは github にリポジトリを公開しています。実際のスクリプトに興味がある方はリポジトリをご覧ください。スクリプトは1つの ruby ファイルだけなので、見通しはいいと思います。今回公開した動画は実際には ImageMagick を利用して背景画像の作成もしていたのですが、記事やリポジトリには含められていないです。

作った上で感じたこと & 今後

台本だけで動画作成ができるということを確認できました。
動画作成で大変なところは動画編集部分だと感じていました。ちょっとセリフを変えるだけでも「セリフ音声」「字幕」「セリフの長さに応じた動画時間の調整」が必要で編集に対して気が重かったです。
しかし、スクリプトができたことでこの編集の手間がなくなり動画ってこんなかんたんに作れるんだと自分で驚きました。必要なものは台本YAMLだけで、超気軽に動画が作れるようになりました。目標としていたツールの習熟によらない一定のクオリティの動画を作成できることも達成できました。
YouTubeでキャラクター会話動画とかを見ていると喋っているキャラクターをゆらゆら揺らしたり、カメラワークや効果音が使われていたりでとても高クオリティのものがあります。今回のスクリプトは一定のクオリティを目標としていたのですが、高クオリティのものも作ってみたいです。
高クオリティを目指す場合現在のスクリプトに対して拡張で実現できるのか(今回ffmpegのドキュメントがとても充実していて強力なツールだと感じたので使いこなせるようになりたい)、 Adobe Premiere Pro を利用することになるのか、別のものを検討になるのか。今後の課題として取り組んでいこうと考えています。
本記事がどなたかのお役に立てればうれしいです。

さいごに

3日目はmendさんです。
ドリコムでは一緒に働くメンバーを募集しています!募集一覧はコチラを御覧ください!