---
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
