ローカルAIによる動画タイムライン、音声波形、BGM、LUT、HLS配信を抽象的に表したプライバシー安全なテックビジュアル

Article

写真と動画から自動Vlogを作る ローカルAI動画生成パイプライン

2026年6月5日
8 min read
ローカルAI
#ASUS Ascent GX10#Qwen#動画生成#ローカルAI#HLS#ffmpeg

GX10 Galleryで一番わかりやすく楽しい機能は、イベント動画の自動生成だ。

写真と動画を検索できるようにするだけでも便利だが、最終的にはイベント単位で1本の動画として見返したい。旅行イベント、水族館イベント、公園イベント、キャンプイベント。素材はたくさんある。ただ、毎回編集ソフトを開いて、クリップを選び、並べ、BGMを入れて書き出すのはそれなりに手間がかかる。

そこで、GX10 Galleryではインデックス済みの写真と動画から、自動でVlog風のダイジェストを作るようにした。

現時点では、プロの動画編集AIではない。テンポもストーリーもまだ改善したいところが多い。それでも、ローカルAIとルールベースを組み合わせると、「イベントをざっと見返す動画」としてはかなり面白いところまで来た。

全体の流れはこうだ。

GX10 Galleryの自動Vlog生成パイプライン

動画を中心に組む

最初は、写真と動画を混ぜながら短いダイジェストを作っていた。

ただ、見返してみると少し物足りなかった。クリップが少なすぎる。写真が途中に多く入りすぎる。似た場所の写真が何枚も続く。動画として見るなら、まず動画を中心にした方が自然だった。

そこで方針を変えた。

1. 動画クリップを中心に時系列で並べる
2. 良さそうな動画クリップはなるべく多めに入れる
3. 最後に写真を3から5枚ほど入れて余韻を作る
4. BGMを入れる
5. 元動画音声も残す
6. 4Kで書き出す

イベントによっては、少し長くなってもいいことにした。素材が多いのに無理に短くすると、見どころを落としすぎる。特に旅行イベントや一日イベントでは、多少長くても、ちゃんと場面が残っている方が見返しやすい。

クリップ候補を作る

動画生成では、まず候補クリップを作る。

動画ファイルごとに、何秒あたりから何秒使うかを決める。撮影日時があれば時系列を保つ。イベント内の動画をざっと並べ、その中から使えそうな区間を切り出す。

候補作成では、次のような信号を使っている。

  • 動画の長さ
  • キーフレームのQwen説明
  • 短い音声区間のSTT結果
  • 匿名化した人物ラベル
  • 撮影日時
  • ブレや向きの品質チェック
  • 似た場面が続かないか

完全にQwen任せにはしていない。短すぎる動画、真っ暗な場面、天地逆転している場面、明らかにブレが強すぎる場面は、ローカルなルールで落としたい。

一方で、何が良い場面かはルールだけでは決めにくい。子どもが反応している場面、家族メンバーの会話がある場面、イベントらしい風景がある場面は、QwenやSTTの方が手がかりを持っている。ここはルールとAIを混ぜた方が扱いやすかった。

Qwenで弱いクリップを落とす

実装中にわかりやすかったのが、横倒しや天地逆転のクリップだ。

スマホやカメラの向き、メタデータ、撮影中の動きによって、見返すと「これは使いたくない」というクリップが混ざる。人間なら一瞬でわかるが、単純なスコアでは拾いにくい。

そこで、採用候補になったクリップをQwenにレビューさせる。

レビューでは、次のような観点を見る。

  • 被写体が見えるか
  • ブレが強すぎないか
  • 暗すぎないか
  • 天地逆転や横倒しではないか
  • 同じような場面が続きすぎていないか
  • イベントの流れに対して意味があるか

Qwenの判断だけで全てを決めるわけではないが、「これはやめた方がよい」という候補を落とすにはかなり役立つ。

最初のころは、床が大きく写った横倒しのクリップが動画に入ってしまった。こういうものを人間が見つけて、ロジックに戻し、Qwenレビューを入れていく。ローカルAIなので、こうした試行錯誤を何度もできる。

STTで会話を拾う

動画の良し悪しは、映像だけでは決まらない。

家庭内動画では、音声がかなり大事だ。誰かの反応、笑い声、会話、イベントの音。映像としては地味でも、音があると残したくなる場面がある。

そこで、動画から短い音声窓を取り出し、STTにかける。文字起こしに会話や反応が入っていれば、クリップ候補として加点する。

もちろん、全動画の全音声を細かく解析するわけではない。まずは短い窓をいくつか見る。完璧ではないが、会話のある動画を拾うには十分に効く。

人物識別は公開情報にしない

イベント動画では、誰が写っているかも重要だ。

単に景色だけが続くより、家族メンバーが写っている方がVlogらしい。そこで、顔識別でラベルが付いた人物が写っているクリップを加点する。

ただし、公開記事では人物名は出さない。内部的には人物ラベルを使っていても、本文では人物A人物B家族メンバー子どものように丸める。今回も実スクリーンショットは使わず、ヘッダー画像と図はすべて生成または抽象化したものにした。

顔識別は、動画から切り出したフレームにも適用できる。写真と動画で基本的には同じだ。動画もフレームを切り出せば、顔検出の対象になる。

写真は最後に入れる

写真の扱いも調整した。

最初は、動画の途中に写真を差し込んでいた。ただ、写真が何枚も続くとテンポが変わる。しかも、同じ場所で画角違いの写真が続くと、ダイジェストとしては少し退屈になる。

そこで、写真は基本的に最後に入れることにした。

イベントの最後に、良さそうな写真を3から5枚入れる。集合写真、印象的な表情、イベントらしいカット、明るく見やすい写真を選ぶ。RAWとJPGが同名で両方ある場合は、動画生成にはJPGを採用する。RAWそのものを動画に使うより、既に現像されたJPGの方が見た目が自然だからだ。

似た写真が続かないように、多様性ガードも入れた。同じ場所、同じ構図、同じ被写体が連続しすぎないようにする。

BGMと元音声

BGMはローカルの音楽ライブラリから選ぶ。

最初は単純に1曲をループしていた。これでもそれなりに見られるが、イベントの雰囲気に合う曲を選びたい。そこで、BGM候補のメタデータやイベントの説明をQwenに渡して、合いそうな曲を選ぶようにした。

元動画の音声も残す。

ただし、クリップ自体にすでにBGMが乗っている場合がある。たとえば、イベント会場の音楽が大きく入っている動画だ。そこに別のBGMを強く重ねると音が濁る。現時点では完全ではないが、元音声の状態に応じてBGM音量を下げる、あるいはそのクリップでは控えめにする方向で調整している。

クリップの切り替わりで音がブチッと聞こえることもあった。これは音声のフェード不足や切り出し位置の問題で起きる。短いaudio fadeを入れて、つなぎ目をなめらかにするようにした。

S-Log3とLUT

SONY FX3で撮った動画には、S-Log3とS-Cinetoneが混ざっている。

S-Log3のまま使うと、生成動画の色が眠く見える。そこで、動画メタデータからS-Log3かS-Cinetoneかを判定し、S-Log3にはSony LUTを当てるようにした。

方針は単純だ。

S-Log3:
  LUTを当てる

S-Cinetone:
  そのまま使う

これだけで、生成動画の見た目はかなり良くなった。AIで全部を決めるより、カメラプロファイルのように確実に取れる情報は普通のルールで処理した方が安定する。

HLSでWebから見る

生成した動画はWeb UIから見たい。

単純にMP4を返すだけでも再生はできるが、長い4K動画ではHLSの方が扱いやすい。そこで、生成後にHLSも作るようにした。

Web UI側ではHLSを優先して再生する。HLSがない場合にMP4へその場で逃がすより、生成キューに入れてHLSを作る方針に寄せた。動画生成後は、MP4とHLSをセットで揃える。

動画生成は重い。4Kで書き出すし、ffmpegも走る。だから、Webからキューに入れて、順番に実行する方式にした。

また、生成した動画を次回の素材に混ぜないようにする必要がある。イベント配下にoutputoutputsのようなディレクトリがある場合、その中の動画は次の動画生成のクリップ候補から外す。これを忘れると、前回生成したダイジェスト動画が素材として再利用され、変な再帰が起きる。

ローカルAIでよかったこと

この機能は、実装中に何度も再処理した。

クリップが少なすぎる。写真が続きすぎる。BGMが合わない。色が眠い。横倒しクリップが入る。顔識別の結果をもっと使いたい。場所名を説明文に反映したい。Render途中のイベントではボタンを押せないようにしたい。

こういう改善をするたびに、Qwen、STT、embedding、顔検出を使う。

クラウドAPIでやっていたら、かなり気を使ったと思う。処理量も多いし、個人メディアでもある。ただし、ここでは正確なコスト計算はしていないので、金額として何円得をしたとは書かない。実感として大きいのは、失敗しても何度でも回せることと、家庭内メディアを外に出さずに済むことだ。

実際、バックフィルは数百イベント、数万メディア規模で走っている。すぐには終わらない。でも、AIが常に限界というより、丁寧に直列で処理している部分が多い。ローカルで回し続けられるので、少しずつ改善しながら育てられる。

まだ完成ではない

まだやりたいことは多い。

  • イベントの写真フォルダと動画フォルダのマッチング補正
  • クリップ選定のテンポ改善
  • もっと自然な場面転換
  • 既存BGM入りクリップの検出精度向上
  • 人物ごとの登場バランス調整
  • 旅行イベントのような長い素材の章立て
  • Web UIからの再生成設定

ただ、土台はできた。

写真と動画を検索できる。人物や場所で探せる。イベントを開いてプレビューできる。ボタンを押すと、自動でVlog風の動画ができる。

ローカルAI専用機としてのGX10は、こういう用途にかなり向いていると思う。ベンチマークよりも、生活の中にある大量データを相手にした時の方が、価値がわかりやすい。