YAML台本から、VOICEVOX音声、字幕、タイミング表、香盤表、カット、口パク、 ブラウザプレビュー、完成MP4までを再生成できる動画制作テンプレートです。
- 1行のセリフを1つのWAVとして生成し、字幕と映像の時刻を同じ正本からそろえます。
- 静止画と動画を同じ
draw(t, context)契約で作れます。 context.line_start()とcontext.cue()で、発話に合わせて要素を表示できます。- 不足カットを一覧化し、ドラフトだけプレースホルダーで完成形を確認できます。
- Range対応のローカルサーバーで、長い音声・動画も途中へシークできます。
- 生成物はすべて
build/に集め、Gitへコミットしません。
- Linux、macOS、またはWindows上のWSL
- Python 3.11以上と uv
ffmpegとffprobe(libass、H.264、ProRes、VP9対応)- 日本語フォント
IPAexGothic(Noto Sans CJK JPなどへ変更可能) - 起動中の VOICEVOX ENGINE
公式Dockerイメージを使う例です。
docker run --rm -p 127.0.0.1:50021:50021 voicevox/voicevox_engine:cpu-latestVOICEVOXと各音声ライブラリの規約は、利用前と公開前に必ず確認してください。 現在のVOICEVOXソフトウェア規約では、VOICEVOXを利用したことが分かるクレジットが 必要です。詳細は公式利用規約を参照してください。
uv sync --locked --all-groups
uv run video-pipeline doctor
uv run video-pipeline all
uv run video-pipeline serveブラウザで http://127.0.0.1:8765/preview.html を開きます。完成品は
build/final.mp4、クレジット文は build/credits.txt に出ます。
工程を分けて実行する場合:
uv run video-pipeline validate
uv run video-pipeline synthesize
uv run video-pipeline shotlist
uv run video-pipeline render --all
uv run video-pipeline characters
uv run video-pipeline preview
uv run video-pipeline buildbuild --draft は不足素材を仮カードで補います。通常の build は不足素材があれば失敗し、
未完成の動画を完成品として書き出しません。字幕を焼き込まない場合は --no-subs を使います。
project.yamlで解像度、FPS、話者のVOICEVOXスタイルID、色、クレジットを変更します。script/script.yamlの章とセリフを書き換えます。idとcutは文字列で記述します。- 読み間違いを
script/dictionary.yamlに追加します。 cuts/cutNN_name.pyのdraw()を動画の内容に合わせて実装します。
カットモジュールの最小契約:
from video_pipeline import style
CUT_ID = "01"
NAME = "cut01_title"
KIND = "still" # or "movie"
def draw(t, context):
fig, ax = style.new_frame(context.project)
style.title(fig, "タイトル")
return fig台本へ新しい cut を追加した後、uv run video-pipeline scaffold を実行すると不足分の
雛形を作れます。
project.yaml 動画・VOICEVOX・話者設定
script/ 台本と読み辞書
cuts/ 編集するカットモジュール
src/video_pipeline/ 再利用可能なパイプライン本体
assets/ 利用者が用意する素材
build/ 全生成物(Git対象外)
tests/ 単体テスト
変更提案はIssueまたはPull Requestで歓迎します。main は保護されており、外部PRは
CODEOWNERの承認と全CIチェックの成功が必要です。手順は CONTRIBUTING.md
を参照してください。
コードとオリジナルのサンプル設定はMIT Licenseです。VOICEVOX、各音声ライブラリ、 FFmpeg、利用者の素材、生成された音声・動画にはそれぞれ別の条件が適用されます。 NOTICE.mdも確認してください。