fix(voice): răspuns în engleză pe voice turns când vocea activă e pocket-tts
Instrucțiunea „engleză pentru audio" nu ajungea la model: VOICE_MODE.md nu avea nicio regulă de limbă, iar condiția din TOOLS.md („când generez pentru o voce pockettts") era neevaluabilă — modelul nu știa ce voce e activă. Rezultat: mirroring pe română → filtrul de diacritice bloca sinteza → tăcere. - tools/tts.py: helper public engine_for_voice() (catalog → tts.default_engine) - src/router.py: injectează [tts-lang:en] în prefixul voice când vocea activă e pockettts (config citit fresh — vede swap-ul live /voice setvoice); anti-jailbreak strip extins la [tts-lang:...] - personality/VOICE_MODE.md: regulă de limbă gated pe marker - tests/test_router.py: 5 teste noi pentru marker + strip Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
10
tools/tts.py
10
tools/tts.py
@@ -94,6 +94,16 @@ def _catalog_entry(voice: str) -> dict | None:
|
||||
return catalog.get(voice) or catalog.get(voice.upper())
|
||||
|
||||
|
||||
def engine_for_voice(voice: str) -> str:
|
||||
"""Engine-ul rezolvat pentru o voce: catalog → fallback `tts.default_engine`.
|
||||
|
||||
Aceeași regulă de rutare ca `synthesize()` — folosită de router ca să știe
|
||||
dinainte dacă răspunsul va fi sintetizat de un engine English-only.
|
||||
"""
|
||||
entry = _catalog_entry(voice) or {}
|
||||
return entry.get("engine") or _config_get("tts.default_engine", DEFAULT_ENGINE)
|
||||
|
||||
|
||||
def list_voice_names(engine: str | None = None) -> list[str]:
|
||||
"""Nume de voci din tts_voices.json, opțional filtrate pe `engine`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user