fix(stt): processLocally-Feinschliff (Android-Bug "language not supported") + "Alles lokal"

- Geräte-STT prüft vor lokaler Erkennung das On-Device-Sprachpaket via
  SpeechRecognition.available(); fehlt es, install() im Hintergrund + Fallback auf
  Cloud (falls erlaubt) bzw. Server. processLocally wird nur bei "available" gesetzt
  -> behebt "language not supported" auf Android-Chrome.
- onerror/Start-Fehler (language-not-supported/network/service) -> sauberer
  Server-STT-Fallback statt Fehlermeldung.
- Schnellwahl "📴 Lokal": setzt STT + TTS gemeinsam auf Gerät (nur Text).
- Doku §6.3.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-20 20:32:17 +02:00
commit dc597bd77b
3 changed files with 69 additions and 8 deletions

View file

@ -1030,9 +1030,17 @@ Audio-Upload, keine Server-STT-Last. Gegenstück zum Geräte-TTS (§ 6.5.0), abe
- **Nur Fix-Sprache:** Geräte-STT braucht einen Sprach-Hint → es nutzt die im
Sprach-Dropdown gewählte feste Sprache. Im **Flex-Modus** fällt es automatisch auf
Server-STT (Whisper-Auto-Erkennung) zurück.
- **Fallback:** Ohne Unterstützung (z. B. Firefox) oder bei Erkennungsfehlern wird der
- **On-Device-Sprachpakete (Chrome):** Vor der lokalen Erkennung wird per
`SpeechRecognition.available()` geprüft, ob das Sprachpaket vorhanden ist. Fehlt es,
wird es im Hintergrund heruntergeladen (`install()`) und für **diesen** Turn auf
Cloud (falls erlaubt) bzw. Server zurückgefallen — so erscheint kein
„language not supported" mehr.
- **Fallback:** Ohne Unterstützung (z. B. Firefox), bei fehlendem Sprachpaket oder
Erkennungsfehlern (`language-not-supported`, `network` …) wird automatisch der
Server-STT-Pfad genutzt. Während der Erkennung erscheint der Text **live** im
Eingabefeld; erneutes Tippen aufs Mikrofon beendet und sendet.
- **Schnellwahl „📴 Lokal":** Setzt mit einem Tipp **STT + TTS** auf „Gerät" — dann
sendet/empfängt das Handy nur noch Text (maximale Daten-/Kostenersparnis).
---