my_voice_assistant_v3_jamulix/app
dschlueter e814b5548d fix(tts): Geräte-TTS-Regression für Sprachen ohne Geschlechtsstimme beheben
Commit 5c63f7b hatte deviceGenderReady als harte Bedingung eingeführt: das
Gerät musste eine Stimme des WAHLgeschlechts haben, sonst Server-Fallback.
Die konservative Geschlechts-Heuristik liefert für viele Geräte-Stimmen null
(z.B. NL am iPhone: nur eine Stimme ohne erkennbares Geschlecht) -> der
Server-Fallback griff und lieferte eine schlechte/fremdsprachige Aussprache.
Für NL kam (im noch nicht neu gestarteten Prozess) die deutsche Default-
Stimme -> "deutscher Akzent".

Lösung: deviceGenderReady -> deviceVoiceReady. Eine sprachrichtige Stimme
reicht (pickVoice wählt cands[0] als Best-Effort-Fallback). Die m/f-Wahl
wirkt am Gerät nur für Sprachen mit mehreren Stimmen (DE, EN), sonst
folgenlos — aber eine falsche Sprache ist schlechter als ein folgenloser
Schalter.

+ Test: NL in test_piper_single_voice_languages_ignore_gender aufgenommen
(serverseitige Komplementär-Logik; sichert voice_for_route NL-Auflösung).
Der client-seitige app.js-Fix ist mangels JS-Test-Framework manuell
verifiziert (Geräte-TTS für NL spricht niederländisch, DE/EN behalten
Geschlechtswahl).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 16:15:04 +02:00
..
api fix(notruf): ehrlicher Status, wenn niemand verständigt werden kann 2026-06-27 16:50:03 +02:00
audio feat: Barge-in/Turn-Manager und VAD-Aeusserungserkennung (#4 Ausbau) 2026-06-17 05:06:58 +02:00
core perf(stream): TTS-Synthese vom Token-Streaming entkoppeln (Bubble läuft voraus) 2026-06-26 11:33:04 +02:00
pipeline feat(tts): Emojis/Markdown beim Vorlesen entfernen + Autostart/GPU-Doku 2026-06-20 18:25:45 +02:00
providers feat(stt): bessere Spracherkennung — small-Modell, VAD, feste Sprache 2026-06-25 19:36:17 +02:00
safety feat(i18n): Niederländisch (nl) als Sprache aufnehmen 2026-06-28 15:13:29 +02:00
utils Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament 2026-06-17 01:48:56 +02:00
web fix(tts): Geräte-TTS-Regression für Sprachen ohne Geschlechtsstimme beheben 2026-06-28 16:15:04 +02:00
__init__.py release(v0.2.0): Marke „Alexis" + sichtbare Versionsnummer 2026-06-27 07:02:02 +02:00
admin_llm.py feat(menu): nicht nutzbare TTS-Provider ausblenden + GPU-Erkennung 2026-06-27 04:16:21 +02:00
audit.py feat(admin): Audit-Logging schreibender Admin-Aktionen — Plan-Schritt 5 2026-06-20 18:50:55 +02:00
auth.py feat(2-Schritt2): Login-Link + persistentes is_admin-Flag pro Nutzer 2026-06-25 04:33:33 +02:00
capabilities.py feat(menu): nicht nutzbare TTS-Provider ausblenden + GPU-Erkennung 2026-06-27 04:16:21 +02:00
config.py feat(menu): nicht nutzbare TTS-Provider ausblenden + GPU-Erkennung 2026-06-27 04:16:21 +02:00
dependencies.py feat(i18n): Niederländisch (nl) als Sprache aufnehmen 2026-06-28 15:13:29 +02:00
errors.py Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament 2026-06-17 01:48:56 +02:00
main.py release(v0.2.0): Marke „Alexis" + sichtbare Versionsnummer 2026-06-27 07:02:02 +02:00
metrics.py feat: Resilienz (Fallback-Ketten) und Metriken (#5) 2026-06-17 05:19:07 +02:00
model_presets.py feat(admin): Dropdown „Zentrales KI-Modell" — erprobte Presets ruck-zuck umstellen 2026-06-26 20:02:44 +02:00
quota.py feat(admin): Phase 3 — Laufzeit-Konfiguration ohne Server-Neustart 2026-06-19 01:39:36 +02:00
runtime_config.py feat(notruf): Wiederauslöse-Sperre + grüner Hinweis; "Neues Gespräch" in die Kopfzeile 2026-06-26 15:58:17 +02:00
schemas.py fix(tts): voice_gender im UserPrefs-Schema -> Stimmwahl wirkt endlich 2026-06-27 03:13:27 +02:00
store.py feat(notruf): Wiederauslöse-Sperre + grüner Hinweis; "Neues Gespräch" in die Kopfzeile 2026-06-26 15:58:17 +02:00