Stimmen
Skriptpfade sind relativ zu dieser SKILL.md-Datei, und speak.py wird aus dem Filmordner heraus ausgeführt. Dieser Schritt ist optional: Auch Aufnahmen oder Audio aus anderen Werkzeugen funktionieren. Lege sie unter audio/voice/<zeilen-id>.wav ab oder setze file in der Zeile.
Sprich mit der Person in ihrer eigenen Sprache.
Den Key einrichten (einmalig)
Die Kosten gehen auf das eigene Konto der Person. Bitte sie, dies in ihrem eigenen Terminal auszuführen:
python <dula-start-Ordner>/scripts/configure.py
In Claude Code können sie ! python <pfad>/configure.py eingeben.
Frage niemals nach dem Key im Gespräch und lies oder zeige niemals ~/.dula-craft/config.env. Verwende configure.py --status, um zu prüfen, ob einer gesetzt ist. Falls jemand einen Key im Gespräch einfügt, sage ihm, er soll ihn in der Konsole widerrufen und einen neuen erstellen.
Die Stimmen entwerfen
Füge voices auf der obersten Ebene von config/film.json hinzu:
"voices": {
"mochi": {"desc": "Ein etwa achtjähriger Junge, aufgeweckt und lebhaft, schnelles Tempo, leichter Atem"},
"gran": {"desc": "Eine Frau von etwa siebzig, warm und leicht heiser, langsam, sehr deutliche Aussprache"}
}
Zeilen können eine delivery haben:
{"id": "l03", "who": "mochi", "text": "W-wirklich?", "delivery": "Überrascht und erfreut, ein Zittern beim ersten Wort, am Ende ansteigend"}
Optionale Stimmenfelder: lang setzt die Sprache (standardmäßig die Sprache der Zeile); speaker setzt eine offizielle Volcano-Stimmen-ID; reference verweist auf Referenz-Audio, für das die Person die Rechte hat.
Schreibe desc und delivery auf Englisch oder in der Sprache der Zeilen. Beschreibe die Stimme selbst: Alter, Spannung, Atem, Tempo und Gewicht. Nur „glücklich“ reicht nicht, um eine Stimme zu verändern. Schreibe nicht „klingt wie ein bestimmter Schauspieler oder Charakter“ und wähle keine Stimmen, die bekannte Figuren oder echte Personen nachahmen. Stimmen bergen ebenfalls Ähnlichkeits- und Urheberrechtsrisiken.
Generieren
python <dieser Ordner>/scripts/speak.py --dry-run # Sieh die Prompts, ohne etwas auszugeben
python <dieser Ordner>/scripts/speak.py
Die erste Zeile jedes Charakters wird zur Stimmenreferenz für seine späteren Zeilen. Höre dir daher zuerst die erste Zeile an. Wenn sie nicht passt, ändere desc und wiederhole sie. Nachdem du eine erste Zeile geändert hast, verwende --only, um die späteren Zeilen dieses Charakters zu wiederholen, damit sie der neuen Stimme folgen.
Wenn du eine Zeile oder eine Stimme änderst und das Skript erneut ausführst, wird nur das Geänderte neu generiert.
Atmosphäre und Soundeffekte
python <dieser Ordner>/scripts/speak.py --sound "Ein ruhiger alter Raum, ab und zu ein Vogel in der Ferne" --seconds 10 --out audio/sfx/raum.wav
Gib immer --seconds an. Die Abrechnung richtet sich nach der Länge, und ohne Angabe kann ein Clip 30 Sekunden oder länger werden. Es ist ungefähr; sehr kurze Anfragen werden oft länger. Generierte Clips sind oft leise. Gib daher Story-Sounds in film.json einen level_db (siehe film.json-Referenz).
Generiere immer nur eine Sache auf einmal. Bitte nicht in einem Prompt nach Dialog, Effekten und Musik zusammen fragen – sonst kannst du die Lautstärken nicht getrennt anpassen und die Mundbewegungen stimmen nicht.
Das Ergebnis prüfen
- Höre zu, wenn du kannst. Wenn du es nicht kannst, sag der Person: „Dieses Audio wurde nicht nach Gehör geprüft.“
- Dinge, die du selbst prüfen kannst: Stelle sicher, dass die Längen sinnvoll sind (5 Sekunden für eine kurze Zeile sind problematisch). Falls ein Transkriptionswerkzeug wie Whisper verfügbar ist, vergleiche seinen Text mit dem Skript. Sehr leise Wörter können fehlen – ein Zeichen, sie zu wiederholen.
deliveryist ein Wunsch, keine exakte Steuerung. Besonders Pausenlängen sind nicht zuverlässig. Kürze die Zeile oder generiere neu, wenn das Tempo nicht stimmt.- Derselbe Prompt liefert jedes Mal ein anderes Ergebnis. Generiere bei Fehlern einfach neu.
Häufige Probleme
| Symptom | Lösung |
|---|---|
Key rejected, or Audio Generation 1.0 is not enabled | Prüfe, ob der Dienst aktiviert ist. Der Key muss aus der Sprach-Konsole stammen; Ark-Keys funktionieren nicht |
| Ein Wort wird falsch gelesen | Generiere neu oder formuliere die Zeile um |
| Zeilen klingen nicht wie eine Person | Stelle sicher, dass die erste Zeile richtig ist, wiederhole dann die späteren mit --only, oder setze einen speaker |
| Das Ende einer Zeile wird abgeschnitten | Bitte um eine langsamere delivery oder generiere neu |