# M-064 — ElevenLabs Hörspiel: Voice-Settings & Trimm-Logik
**Status:** STABLE — abgenommen 2026-06-01 (Watson v4)
**Referenz-Script:** `dispatcher/cockpit/watson_v4_gen.py`

---

## Das Problem
ElevenLabs-Klonstimmen produzieren störende Atemgeräusche. Clips werden mitten im Atmer abgeschnitten.

## Die Lösung

### 1. Kein SSML
```python
# FALSCH — Break-Tags lösen Atempausen aus:
text = f"<speak><break time='600ms'/>{text}<break time='600ms'/></speak>"

# RICHTIG:
payload["text"] = text  # direkt, ohne SSML
```

### 2. Voice Settings

**Kontrollierte Stimme (Holmes-Typ):**
```python
{"stability": 0.95, "similarity_boost": 0.30, "style": 0.0, "use_speaker_boost": False}
```

**Emotionale Stimme (Watson-Typ):**
```python
{"stability": 0.28–0.65, "similarity_boost": 0.41–0.44, "style": 0.14–0.75, "use_speaker_boost": False}
```

Warum: `speaker_boost=False` + niedrige `similarity_boost` reduziert Übernahme von Atemlastigkeit aus dem Klon-Sample.

### 3. Trimm-Parameter
```python
LEAD_MS     = 30    # Vorlauf vor erstem Sprachzeichen
TAIL_MS     = 600   # Großzügig — Atmer kommt NACH letztem Sprachzeichen
FADE_OUT_MS = 80    # Weicher Abschluss selbst bei hartem Schnitt
```

### 4. SSML-Filter für Timestamps
```python
def get_speech_bounds(alignment, audio_len_ms):
    chars, starts, ends = alignment["characters"], alignment["character_start_times_seconds"], alignment["character_end_times_seconds"]
    in_tag, real = False, []
    for c, s, e in zip(chars, starts, ends):
        if c == '<': in_tag = True
        if not in_tag: real.append((c, s, e))
        if c == '>': in_tag = False
    if not real: return 30, audio_len_ms - 30
    return int(real[0][1] * 1000), int(real[-1][2] * 1000)
```

### 5. Prosodie-Kontext
```python
payload["previous_text"] = texts[i-1]
payload["next_text"]     = texts[i+1]
```

## Test-Protokoll
Atemtest A–F (2026-05-31): Varianten D (high stability, low similarity) und F (kein SSML) als beste bewertet. V4 kombiniert beide Erkenntnisse.

## Bibel-Eintrag blockiert
Hook blockiert Write zu `Methoden/bibel/` weil M-064 noch nicht in Registry (Bootstrapping-Problem).
Victor muss einmalig einen Stub anlegen oder die Registry manuell entsperren.
