1e51ef7def
- 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>
170 lines
7.5 KiB
Markdown
170 lines
7.5 KiB
Markdown
---
|
||
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
|