Intro rendern (M4-Pass)
Road-Movie-Opener: crumb_d + crumb_b unterwegs in den fremden Wald, Vektor
als Boombox/Rap-Traveller im Autoradio trĂ€gt die Crew â analog statt offline.
LĂ€uft vor dem Teaser (scripts/script.*.json), endet als Ăbergabe auf dessen
erste Zeile (âDust settles. Nakivale⊠again.").
SOT vs. Workdir
- SOT (getrackt):
scripts/intro.{en,de,fr}.jsonâ hier Text/slugs pflegen. - Workdir (gitignored):
raw_stems/alice_intro_{en,de,fr}/script.jsonâ
aus dem SOT generiert (lang-Suffix_en/_de/_fr+lang_code), Ziel der Stems.
SOT geÀndert? Workdirs neu erzeugen:
python - <<'PY'
import json, os
SOT="spinoffs/alice_in_nakivale/scripts"
for lang,suf in [("en","_en"),("de","_de"),("fr","_fr")]:
s=json.load(open(f"{SOT}/intro.{lang}.json")); s["lang"]=suf; s["lang_code"]=lang
d=f"raw_stems/alice_intro{suf}"; os.makedirs(d,exist_ok=True)
json.dump(s, open(f"{d}/script.json","w"), ensure_ascii=False, indent=2)
PY
Referenzen (Stimm-Kodex: nie TTS fĂŒr geliehene Stimmen)
vektorâspeaker_roles_stem/SE00EP00/vektor(vorhanden:vektor_spiegel.wav),
Maschinenstimme viarobotize_vektor.py(wie ep08/09).crumb_bââŠ/kruemel/kruemel00,crumb_dââŠ/kruemel/kruemel01
â fehlen noch, brauchen echte Takes. Bis dahin bricht ein echter Lauf im
Preflight ab (fail-fast);--dry-runmacht stille Platzhalter zum Testen.
Rendern (pro Sprache)
PY=~/workspace/crumcast/venv/bin/python
# 1) Stimm-Stems klonen (mlx-audio/OmniVoice, nur Apple Silicon M4)
$PY tts_stems.py raw_stems/alice_intro_en
# 2) Master mischen â Suffix ep00_en routet auf build_timeline_auto
$PY render_episode.py raw_stems/alice_intro_en alice_intro_en_master.wav ep00_en
_de â Suffix ep00_de, _fr â ep00_fr. Master + *.cues.json (Sync fĂŒr den
Hörraum-Player) landen im Aufrufordner.
Verifiziert auf der Linux-Kiste bis auf die echten Stimmen: Verdrahtung,
Auto-Timeline und Bett-Mix laufen (Dry-Run â 32-s-Master). mlx-audio ist hier
nicht installiert â der Stimm-Synth ist der M4-Schritt.