--- titel: Audio-Konzept Logistik — Level 1 stand: 2026-04-25 status: Entwurf, zur Review mit Thomas --- # Audio-Konzept Level 1 Ziel: Begleitende gesprochene Sprache fuer Level 1, um die Simulation immersiver und didaktisch zugaenglicher zu machen. Fuer Easy-Language eigene, kuerzere Zeilen. ## 1. Stil und Rolle **Eine Rolle: „Disponent*innen-Funk"** Stell sie dir vor wie eine Funk-Verbindung zur Spedition — ruhig, freundlich, knapp. Weder Radiomoderator*in noch Nachrichtensprecher*in. Keine Effekte-Flut, keine Dauerberieselung. **Stimme**: eine weibliche Stimme, 25-40, warm aber sachlich, neutrales Standarddeutsch, Easy-Variante dazu vom **selben** Sprecher*in (weniger Tempo, einfachere Satzstruktur). **Lautstaerke**: deutlich unter der Hintergrundmusik (-6 dB), sodass nicht ueberlagert wird. Bei Wichtigem (Event-Start, Fail) kurzer Duck der Musik. ## 2. Wann was gesprochen wird Kategorien nach Prioritaet — je hoeher, desto wichtiger / ununterdrueckbar. ### 2.1 Level-Einstieg (einmal pro Durchgang) | Trigger | Standard-Text | Easy-Text | |---|---|---| | nach Splash dismiss | „Willkommen bei Spedition Wien. Dein Lieferwagen steht bereit. Klick einen Auftrag an — los geht's." | „Guten Tag. Dein LKW ist da. Klick einen Auftrag." | ### 2.2 Auftrags-Lifecycle (pro Auftrag) | Trigger | Standard-Text | Easy-Text | |---|---|---| | Kontrakt angenommen (auto-loaded) | „Auftrag nach {ZIEL} — Ladung ist drin." | „Auftrag nach {ZIEL}." | | Beladung laeuft (LOADING start) | — optional, nur wenn Ladezeit > 10 min: „Beladung laeuft, {MIN} Minuten." | — stumm | | Lieferung angekommen, puenktlich | „Lieferung in {ZIEL} abgeschlossen. {BETRAG} Euro verdient." | „Fertig. Du hast {BETRAG} Euro." | | Lieferung angekommen, verspaetet | „Lieferung angekommen — leider zu spaet. Strafe {BETRAG} Euro." | „Zu spaet. Kostet {BETRAG} Euro." | **Kein Sound-Spam**: wenn mehrere Ereignisse innerhalb 5 Sek zusammenkommen, nur das wichtigste sprechen. ### 2.3 Events (wenn ausgeloest) | Trigger | Standard-Text | Easy-Text | |---|---|---| | Verfahren-Event start | „{NAME} hat sich verfahren. Klick die Stadt auf der Karte, wo der Auftrag hin soll." | „{NAME} hat sich verirrt. Klick die Stadt." | | Verfahren, richtiger Ort | „Gut — {NAME} faehrt weiter." | „Richtig!" | | Verfahren, falscher Ort | „Leider falsch — 1,5 Stunden verloren." | „Falsch. Zeit weg." | | Auto-Miete 2. LKW | „Konto ueber 10.000 Euro — zweiter Lieferwagen gemietet. Tagesmiete ist jetzt 1.000 Euro." | „Noch ein LKW. Miete jetzt hoeher." | | Pflicht-Pause start | „Lenkzeit-Pause — 45 Minuten." | „{NAME} macht Pause." | | Pflicht-Pause Ende | — stumm (nicht wichtig genug) | — stumm | | Einpark-Minispiel perfekt | „Sauber eingeparkt — Bonus fuer die naechste Ladung." | „Super! Bonus!" | | Einpark-Touchieren | „Kratzer — 1.000 Euro Reparatur." | „Au. Das kostet 1.000 Euro." | | Einpark-Game-Over (Zeit abgelaufen) | „Zu viel Zeit, Kollege uebernimmt." | „Zu langsam." | ### 2.4 Zeit-Meilensteine (optional, Hintergrundcharakter) | Trigger | Standard-Text | Easy-Text | |---|---|---| | Tag 1 Ende (24 h) | „Tag 1 vorbei. Stand: {BETRAG}." | „Ein Tag um. {BETRAG} Euro." | | Tag 2 Ende (48 h) | „Halbzeit. Stand: {BETRAG}." | „Halbzeit. {BETRAG} Euro." | | Tag 3 Ende (72 h) | „Nur noch ein Tag." | „Ein Tag bleibt." | | 1 h vor Ende | „Letzte Stunde." | „Gleich Schluss." | Pro Meilenstein nur einmal — keine Wiederholungen. ### 2.5 Level-Ende | Trigger | Standard-Text | Easy-Text | |---|---|---| | 5 Sterne | „Spitzenleistung — 5 Sterne! Endbilanz {BETRAG}." | „Top! 5 Sterne!" | | 4 Sterne | „Sehr gut — 4 Sterne. Endbilanz {BETRAG}." | „Toll! 4 Sterne." | | 3 Sterne | „Solide — 3 Sterne. Endbilanz {BETRAG}." | „Gut. 3 Sterne." | | 2 Sterne | „Knapp — 2 Sterne. Endbilanz {BETRAG}." | „Okay. 2 Sterne." | | 1 Stern | „Ueberlebt — 1 Stern. Endbilanz {BETRAG}." | „Geschafft. 1 Stern." | | Bankrott | „Das Konto ist leer. Simulation beendet." | „Kein Geld mehr. Aus." | ## 3. Nicht vertont Um Reiz-Overload zu vermeiden ausdruecklich **nicht** vertont: - Jede Routenplanung-Aktion - Offers die kommen/gehen (nur visuelle Cards) - LKW-Kilometerstand oder Zwischenzustaende - Bonus-Pills-Konsum (nur visuelle Flug-Animation) - Auto-Boost-Wechsel - Open/Close des Map-Popups ## 4. Platzhalter und Template-Syntax Pro Zeile in der Audio-Datei gehoeren die Platzhalter fest eingesprochen oder als Composite. Vorschlag fuer Erstellung: - Fixe Zeilen einmal pro Standard + Easy einsprechen - Platzhalter ({ZIEL}, {BETRAG}, {NAME}) separat aufnehmen fuer jede L1-Staedte-ID (wien, salzburg, muenchen, innsbruck, graz, mailand, berlin) und die zwei Fahrernamen (Anna, Tom) - Betraege werden als Zahlen-Samples (1-50 in 1.000-Schritten) gesampled oder via Web-Speech zur Laufzeit ausgegeben **Alternative ohne Platzhalter-Sampling**: alles ueber ElevenLabs-TTS bei Triggerung generieren (kurzer Fetch, Cache). Dann sind Platzhalter trivial. ## 5. Technische Integration ### Option A — Pre-generierte Dateien (statisch, DSGVO-sauber) - `App/sims/logistik/assets/audio/voice/de/` - Filenames: `[_easy].mp3` - Platzhalter: `city_salzburg.mp3`, `betrag_1500.mp3`, etc. - Ausspielung: Web Audio API, stacked je Trigger - Vorteil: offline-faehig, schnell, kein externer Call - Nachteil: Sampling-Komplexitaet bei Zahlen/Staedten ### Option B — ElevenLabs-TTS on-demand - Engine ruft `POST /api/tts?text=...&voice=de-anna&cache_key=...` - Server cached, liefert mp3 - Vorteil: beliebige Platzhalter, keine Sampling-Logik - Nachteil: API-Kosten (~0.0001 €/Char), Netzwerk-Abhaengigkeit, Latenz beim Erstaufruf ### Option C — Web-Speech-API (Browser-nativ) - `speechSynthesis.speak(new SpeechSynthesisUtterance(text))` - Vorteil: kostenlos, offline, variabel - Nachteil: Qualitaet maessig, variiert je OS/Browser, iPad-Safari oft mittelmaessig **Empfehlung**: Option A fuer alle fixen Lines + L1-Staedte + Fahrernamen (pre-generiert zur Release-Zeit). Betraege entweder diskret („zweistellig", „dreistellig") oder via Web-Speech (Option C) dynamisch drauflegen. Das mischt die Staerken. ## 6. User-Kontrolle Ein Toggle im Header: - 🔊 **an** (default? — nein, **aus** als Default fuer Klassenumgebung) - 🔇 **aus** Getrennter Toggle fuer: - Stimme (Sprachausgabe) - Sound-Effekte (Motor, Crash, Bonus-Pings) — existiert bereits ## 7. Produktions-Pipeline 1. **Phase 1 — Konzept (dieses Dokument) reviewen**: Thomas bestaetigt oder veraendert die Texte / Stil. 2. **Phase 2 — Sprecher*in auswaehlen**: Atlas hat ElevenLabs-Pipeline (siehe inbox/logistik/2026-04-22-1230-elevenlabs-sound-pipeline.md). Kann die gleiche Stimme genutzt werden wie fuer Heli? 3. **Phase 3 — Texte generieren**: ca. 40 fixe Lines × 2 Sprachen = 80 samples. + 7 Staedte × 2 + 2 Namen × 2 = 18 Platzhalter-samples. Gesamt ~100 Dateien, ~15 MB. 4. **Phase 4 — Integration**: Audio-Manager im game.html, getriggert von den bereits vorhandenen Notification-Types. 5. **Phase 5 — A/B-Test mit echter Klasse**: messen, ob Stimme die Behalten-Rate der didaktischen Info erhoeht. ## 8. Fragen an Thomas - Stimmen-Geschlecht: weiblich fix, oder auch maennliche Variante waehlbar? - Easy-Language: separat einspielen oder im Code aus Standard ableiten (kuerzen)? - Defaults: Stimme von Anfang an an, oder Opt-in? - Musik-Duck: bei Sprachausgabe Musik auf -6 dB senken — OK? - Budget ElevenLabs: 100 Samples à 20 Zeichen = 2.000 Zeichen, bei ElevenLabs Creator Plan ~5 € Einmalaufwand. OK? — Logistik