生成AIを活用した学習用動画の作成
本記事は以下のアドカレ企画の記事になります。
知識のインプットにあたって、一般的には国家試験の問題をもとに作成された動画講義サービスを活用する人が多いです。(というかおそらく9割以上が利用していると想定されます。)
それら医師国家試験対策の動画講義のボリュームは、だいたい動画の合計時間で200時間程度と概算できるのですが、国試まで残り2~3か月となった今、そんなものを見ている時間はありません。
また、市販の嚙み砕いた説明の長めの動画講義は、体系的かつわかりやすく学べる半面、周回性に乏しいという欠点があります。
そこで、生成AIを活用して短時間で周回可能かつ網羅的・実際の問題ベースの動画を作成できないかと考え、今回biimシステム風の解説動画を作成するためのツールを作りました。
以下を参照
構成は以下
具体的には、上記リポジトリのprompt.txtの中身をGoogle AI Studioのシステムプロンプトに張り付け、チャット欄にナレッジのtxtファイルを張り付け、Marp構造のMarkdownと、指定形式の台本用Yamlを生成しています。
※APIを使わないのはgemini-2.5-proを使い倒すお金がないから
この最初のMarp+台本作成の部分はどうしてもgemini-2.5-proじゃないと厳しいです。
というのも、現在利用できるLLMの中でもコンテキスト長及び、長いコンテキストでのプロンプト追従度が圧倒的に高いため、2~30万トークン程度のナレッジを100枚超のスライドに破綻なくまとめてくれるからです。
Marpで作成したスライドをbiimシステム風の枠に配置し、台本YamlをパースしてAivisSpechで読み上げさせ、最終的にffmpegでまとめています。
以下のようなMarkdownを生成し
---
marp: true
paginate: true
---
<!-- class: title -->
# 循環器疾患 国家試験対策
## 解剖から治療までを網羅する120のポイント
---
<!-- class: -->
# 1. 心臓の解剖①:胸腔内の位置
心臓は胸腔の中央よりやや左に位置します。
- **前面**: 胸骨と肋骨の後ろにあり、`右心室`が最も前面に位置する。
- **後面**: 食道や下行大動脈に接する。
- **下面**: 横隔膜の上に乗っている。
- **側面**: 左右の肺に挟まれている。
> 胸部の刺創では、最も前面にある右心室が損傷されやすいです。
<!-- footer: 102B38 -->
---
<!-- class: -->
# 2. 心臓の解剖②:4つの部屋と大血管
心臓は2つの心房と2つの心室からなります。
- **右心房**: 上大静脈、下大静脈、`冠状静脈洞`が流入。
- **右心室**: 肺動脈へ血液を送り出す。
以下のようなYamlを生成し
slides:
- id: 1
script: |
皆様、こんにちは。本日は、循環器疾患の国家試験対策スライドをご覧いただきありがとうございます。
このスライドシリーズでは、解剖・生理といった基礎から、代表的な疾患の診断、治療まで、国家試験で問われる120の重要ポイントを解説していきます。
note_top: タイトルスライド
note_bottom: |
このスライドシリーズは、医師国家試験の循環器分野で頻出のテーマを網羅的に学習することを目的としています。
1枚のスライドで1つのテーマを簡潔にまとめ、視覚的に理解しやすい構成を目指しました。
- id: 2
script: |
まず、心臓の解剖から始めましょう。心臓は胸腔内のほぼ中央にありますが、やや左に傾いて位置しています。
重要なのは、胸骨のすぐ後ろ、最も体の前面に位置するのが右心室であるという点です。
このため、胸に鋭利なものが刺さるような外傷では、右心室が損傷を受けやすいという特徴があります。
note_top: 心臓の胸腔内での位置関係
note_bottom: |
以下のような動画を出力します。
これに医師国家試験を分野別に突っ込みまくって作成したのが以下の再生リストです。
1時間前後の動画が23本なので、2日もあれば1回通しである程度知識を総ざらいできる設計になっています。
とはいえ、これは自分の知識量が圧倒的に不足しているが故の着火剤的役割として作成したものであり、学習のメインは動画ではなく過去問サービスを活用した問題演習で進めていこうと考えています。
開発あれこれ
このBiimSlideMakerは、スライドpdfを1280*720の画像に切り出す、スライドに対応した台本チャンクの読み上げを生成する、それらをbiim枠に結合して動画としてエンコードする、の3手順で動画を作成します。
スライドや読み上げ台本のフォーマットさえ守れば、必ずしもmarkdownやyamlをAI生成で作る必要はありません。
とはいえ、gemini-2.5-proのコンテキスト理解度がバケモンなので、割とポン出しでいいものができます。(gemini-3シリーズが楽しみですね。)
16:9であれば、既存のパワーポイントスライドからyamlだけを生成してbiimシステム風の動画にする、といったことも可能です。
音声読み上げにはAivisSpechを利用しており、このスクリプトを使う際は、AivisSpechを起動しておく必要があります。話者選択はGUIでできるようになっています。
実はもともとはこのシステムはUnityで作成していました。
というのも、当初の計画ではVRMモデルにリップシンクをさせて、キャラクターが喋っている感を演出したかったのですが、UniVRMがわからなすぎて結局biimシステム風動画作成の機能だけが残りました。
しかし、エディタの録画機能を使って動画を作成していたことや、そもそもUnityエディタを開かないといけない点など、いつか作り直したいなと思っていたのを仕様だけcodexに丸投げしたら一瞬でできました。
ツールとしてもコンパクトになって見た目もよくなってよかったです(小並感)。
それでは。
