Files
geograsim/App/sims/logistik/audio-konzept-l1.md
T
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/
- 12 code-workspace-Files
- STATUS-*.md
- viele M/D/R-Änderungen an bereits getrackten Files
- .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:27:02 +02:00

170 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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: `<event-id>[_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