名前の由来: Sheherazade
scenario.jsonc(仕様は spec_ja-JP/001_requirements/)から動画を生成する CLI です。実行環境は Babashka、JSON は Cheshire、入力検証は Malli、ffmpeg/ffprobe 呼び出しは babashka/process です。
- Babashka(プロジェクトルートの
bb.ednを利用) ffmpegとffprobeがPATHにあること
Please use bbin
bbin install https://github.com/neumann-tokyo/scheherazade.git
sche path/to/scenario.jsonc -o youtube.webm音声だけ先に生成する(generation があり、かつ path が未作成の Audio Object 向け):
sche --generate path/to/scenario.jsonc辞書ファイル(読みの置換。省略時はシナリオと同じディレクトリの dictionary.json)を明示する場合:
sche path/to/scenario.jsonc -o youtube.webm -d path/to/dictionary.jsongeneration.name ごとの環境変数:
voicevox:SCHE_VOICEVOX_URL(例:http://127.0.0.1:50021)elevenlabs:SCHE_ELEVENLABS_URL,SCHE_ELEVENLABS_API_KEYgemini:GEMINI_API_KEYまたはGOOGLE_API_KEY
Babashka: Running tests に沿い、test_runner.clj で clojure.test を実行します。
bb test- JSONC(
////* */、文字列外)→ Cheshire パース - Malli によるシナリオ検証
- タイムラインの論理尺の resolve(
:path->duration-msまたは:ffprobe-fnで差し替え可能) --generate/ レンダリング前処理で、generationがある Audio Object の音声ファイルを API 経由で自動生成dictionary.jsonによる読み置換(generation.props.textに適用)- 単一 Timeline: 画像/動画の scale+pad、任意 chroma 系
Effect、drawtext(先頭の Text の全表示)、VP9 または H.264 + AAC - ルート
timelineが複数ある場合はセグメントごとにエンコードし、concatで連結 childrenの親子 overlay /amix/ テキストの chank アニメは未実装(該当シナリオはエラーになります)