GW前~GW中に、CoC「フラッシュバック・ブルー」のTRPGセッションに混ぜてもらいました。
のんびり楽しませてもらおうと思っていたら、卓が始まる前から立ち絵が出来ていたり(!?)進行中にすごい数のSSが生み出されたり(!?)したので、「私も何か……何か……」と思ってポケットを探ったところ、「そういえば、合成音声系の動画がAIで作れるようになったらしいんだよなあ……」と思い立って、リプレイセッションのゆっくり動画化にチャレンジしました。
当記事は技術記事であり、シナリオのネタバレは含まれていません。ただ、リプレイ動画は当然のごとくネタバレなのでご注意ください。
完成したリプレイ動画
人による動画編集ソフトの操作、なし
今回は動画の編集作業を AI にやらせました。
ffmpegを使用して、動画を編集してもらいました。
FFmpegはコマンドの書き方がとても難解だという話なのですが、AI にお任せすれば知らなくても大丈夫ってわけです。
必要なもの(アーキテクチャ)
| 用途 | ツール |
|---|---|
| 音声合成 | AquesTalk Player |
| 動画/音声処理 | FFmpeg |
| 画像合成 | Pillow (PIL) |
| ソフトの言語 | Python |
| 入力 | ココフォリア HTML ログ |
このうち AquesTalk Player は、商用利用にはライセンスの購入が必要ですので注意。
それ以外のソフト(FFmpeg、Pillow、Python など)はいずれも無料で、商用利用も可能なライセンスで配布されています。
BGM・効果音・背景画像・立ち絵などの素材は、それぞれの提供元の利用規約に従ってください。
シナリオを TRPG リプレイ動画として公開する場合は、シナリオ作者の二次創作ガイドラインにも従う必要があります。
そして、これらをまとめて動かすために Claude Code を使用しました。
ただし、パイプラインの構築をしてしまえば、つまり一度仕組みを作ってしまえば、Claude Codeは基本的に必要なくなります。
いうなれば自力でノベルアドベンチャーのエンジンを作っているようなものなので、いちどエンジンを作りきればあとは用済みです。
もっとも、人力でタグをつけたり、背景をつけたり、BGM を入れたり、フェードアウトの場所を指定したりといった作業をやりたくないので、この辺も手伝ってもらっています。
(下書きだけでも自動でやってくれればありがたいんじゃないかなと思います。)
台本の清書や、読み間違いを直したい場合は引き続きお世話になって、下処理をしてもらったり、小麦粉をつけて揚げたりしてやるといいと思います。
全体としてやっていること
ココフォリアに残るセッションのログを、1 行ずつ整理した台本にして、ゆっくり(AquesTalk)に喋らせ、立ち絵と背景と字幕と BGM を組み合わせて動画にする、という流れです。
① ココフォリアのログを台本に整理する
HTML のセッションログから、1 行ずつ CSV の台本に整理していきます。CSV はこんな形をしています。
番号,話者,ゆっくり役,立ち絵,背景,表示テキスト,読み上げ,編集メモ
14,KP,KP,kp_icon.png,classroom_day.jpg,11月下旬。探索者たちの通う学校では、二学期の期末試験が行われていた。,11月下旬。探索者たちの通う学校でわ、二学期の期末試験が行われていた。,
20,虎之助,虎之助,tora_waist.png,classroom_day.jpg,お休みか。開放感がありますね。,おやすみか。開放感がありますね。,
22,逢空,逢空,aiku_waist.png,classroom_day.jpg,あー終わった終わった。,あー終わった終わった。,
「画面に出す字幕」と「AquesTalk に渡す読み」を別の列にしているのがポイントで、字幕は漢字で、読みはひらがな寄りで、と別物として扱えます。
編集メモには サムネ・転移SE・不思議BGM のような演出タグを書いておきます。
② 読みを直す
合成音声は漢字を変なふうに読んでしまうことがあるので、対応表で事前に直します。
common_speech_fixes.py の冒頭はこんな感じです。
"""TRPG 共通の読み修正パターン。
どの CoC セッションでも有効そうな汎用ルールのみを置く。
セッション固有名詞は session_speech_fixes.py に分離する。
"""
COMMON_REPLACEMENTS = [
# ── 数字・略語(CoC で頻出) ──────
("DEX", "デックス"),
("SAN", "サン"),
("KP", "キーパー"),
("1日目", "いちにちめ"),
# ……
]
「どの卓でも使えそうな汎用読み(STR、SANなど)」と「このシナリオに出てくる固有名詞だけの読み(キャラクター名など)」のファイルを分けてあります。
③ ゆっくりに喋らせる
AquesTalk Player に、行ごとのテキストを渡して .wav を作ってもらいます。中で打っているコマンドはおおむねこんな形です。
AquesTalkPlayer-CLI -k 0 -text "おはようございまーす" -o line_006.wav
④ 画面を組み立てて動画にする
立ち絵・背景・字幕を Pillow(Python の画像ライブラリ)で 1 枚ずつフレームに合成して、FFmpeg で連結します。最後に効果音と BGM を重ねて mp4 が出来上がります。
ここの「立ち絵を貼る/字幕を載せる/音を重ねる」あたりは、本来は動画編集ソフトで作業するところですね。FFmpeg と Pillow にコマンドを打って同じことをやらせている、ということになります。
工夫
ゆっくりの読みの修正
合成音声に台詞を読ませると、漢字を変なふうに読んでしまうことがあります。
- 「鍵開け」 → 「けんあけ」
- 「1日目」 → 「ついたちめ」
こういうのは「鍵開け→かぎあけ」のように、対応表を持っておけばある程度直せます。
助詞の「は(→わ)」「へ(→え)」のような、文法ルールで決まる読みは、あまりにも誤読しすぎて大変だったので、形態素解析をかけてある程度ルールベースで処理できるようにしました。
(それでもやはり、ヘンな読みになってしまいます。)
ダイスを振る場面の演出
ダイスは字幕で結果を一瞬出すだけだと味気ないので、3段階に分けています。
- 「聞き耳。あいく技能20。マリン技能70。とらのすけ技能20。」 + ダイスがコロンと転がる音 + 少し溜め
- 「あいく、出目56、失敗。」 + 失敗の効果音
- 「マリン、出目42、成功。」 + 成功の効果音
字幕は最初に技能値だけ並べておいて、結果が出た人ぶんを順番に書き足していくよう、フレームを差し替えていきます。
BGMの切り替え
BGM は「学校」「ホラー(じわじわ)」「ホラー(クライマックス)」「チェイス」「感動」と、気分(mood)ごとに 1 曲ずつ用意するかたちにしました。
各場面の BGM は、台本の「背景がどんな場所か」「どんな雰囲気の演出メモが書かれているか」から自動で決まるようになっています。
連続して同じ気分が続いたらひとつのシーンにまとめて、切り替わるところだけクロスフェードします。
これで、場面が変わったら勝手に BGM が切り替わる動画になります。
AIに任せたこと
ワークフローは全てやってもらいました。つまり動画を作る仕組みを作ってと頼んで、自動的に動画を作れるようにしてもらいました。Pythonやらなにやら自分で用意してくれます。
おおまかな HTML ログからの抜き出しと、BGM、SE、ゆっくりボイスの割り当てなどは AI にお任せしました。
ただ、言ってもいないことをログから抜き出してしまうのは絶対にやってほしくないので、「改変したい点は理由を付記して私に相談して見せること」と言い含めておきました。言い含めておいてもたまに命令違反をやらかすわけなんですが、まあ、マシにはなるかと思います。
たとえば、動画の切れ目の前回のあらすじパートなどは、アドリブ・改変で付け足さなくてはならない部分になります。
きちんと台本から要点を抜いてくるように言ったんですが、だんだんと後になるにつれて結構サボっていて、とくに KP の丁寧な説明や処理なんかを省略してしまっていて前後が合わなくなってしまいました。デバッグにご協力いただいた白杜さん、ありがとうございます。また、このあたりはruder さんのテキストセッションのリプレイログが丁寧なので、ネタバレを気にしない方は是非ともご参照ください。
BGMは動画に使用しても権利的に問題がない有料素材を渡して、「クレジットに控えつつ、使った素材を明記してほしい」としました。いくらか平穏な時なのにシリアス BGM だったりして、その都度指摘しました。
SEは、今回はクレジットしながらいくらか入れてもらいましたが、ダッシュの音がバイクの音になっていたり、ところどころヘンだったので、自力でこれと指定する場面が多かったですね。
もう少し頑張ればもっとリッチにもできたと思いますが、最低限になっています。
なお、今回はSEはAIにフリーのものを探してもらって、規約を確かめつつ配置しました。 一式ローカルに置いておいて(クレジット付きで)ここからと指定するのもよさそうですね。
ボイスについて、SIZが大きく、強面のアイちゃんがしっかり低い声になっていたのは面白かったです。
おわりに
「よし! Claude Code でずいぶん楽をしたぞ!」と言いたいところなんですが、動画編集は、編集した後も大変で、30 分の動画を作ると 30 分(2 倍速でも 15 分)の確認が発生して、遠い目になりました。
あとから効果音を付け足したくなったり、フェードアウトを入れたりしたいときはレンダリングのし直しが発生したりして、非常にしんどかったです。
誤字をあとから直せない媒体、大変すぎるんですけど、なんとかなりませんか……???
動画を作っている人たちは、ほんとうにすごい。
とはいえ、これで TRPG リプレイ動画の基礎が習得できたと思います。
ワークフローとして使いまわせば、次回はもっと楽になりそうです。
みなさんも、ぜひ、Claude Codeにゆっくり動画を作ってもらいましょう。
関連リンク
あきらさんの記事
ruderさんのテキストリプレイ、およびイラスト
白杜さんのSS
なお、KPのうさぎさんは拙作、ムーンショットハンターに書いていただいたうさぎさんです!