feat(1a): Flex-Sprachmodus vollständig entfernen
Sprache ist immer fest. Entfernt: language_mode aus Route/Schema/Config/
Runtime-Config, die Flex-Verzweigung in Orchestrator (effective_language =
language) und ws.py (immer normales transcribe), die "🔄 Flex"-Option im
Frontend samt zugehöriger app.js-Logik (langOverrides, loadMe, Turn-Sprache).
Die generische STT-Methode transcribe_detect bleibt als wiederverwendbare
Infrastruktur erhalten (nicht mehr aufgerufen). Test: Route trägt kein
language_mode mehr. 215 passed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
67a959c4b3
commit
be5206c7ed
10 changed files with 24 additions and 64 deletions
|
|
@ -50,7 +50,6 @@ async def chat(
|
|||
"input_endpoint": payload.input_endpoint,
|
||||
"output_endpoint": payload.output_endpoint,
|
||||
"language": payload.language,
|
||||
"language_mode": payload.language_mode,
|
||||
"stt_provider": payload.stt_provider,
|
||||
"llm_provider": payload.llm_provider,
|
||||
"tts_provider": payload.tts_provider,
|
||||
|
|
@ -106,7 +105,6 @@ async def chat(
|
|||
voice=voice,
|
||||
output=output,
|
||||
history=llm_context,
|
||||
language_mode=route.language_mode,
|
||||
text_only=bool(payload.text_only),
|
||||
)
|
||||
except Exception as exc:
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ _OVERRIDE_KEYS = (
|
|||
"input_endpoint",
|
||||
"output_endpoint",
|
||||
"language",
|
||||
"language_mode",
|
||||
"stt_provider",
|
||||
"llm_provider",
|
||||
"tts_provider",
|
||||
|
|
@ -67,7 +66,7 @@ async def _resolve(user, session_id, options):
|
|||
|
||||
async def _run_turn(
|
||||
websocket, store, user, session_id, route, orchestrator, output, text, options,
|
||||
detected_language: str | None = None, effective_voice: str | None = None,
|
||||
effective_voice: str | None = None,
|
||||
):
|
||||
"""Faehrt einen Antwort-Turn und streamt die Events an den Client."""
|
||||
conversation = (
|
||||
|
|
@ -158,8 +157,6 @@ async def _run_turn(
|
|||
history=llm_context,
|
||||
on_token=on_token,
|
||||
on_audio=on_audio,
|
||||
language_mode=route.language_mode,
|
||||
detected_language=detected_language,
|
||||
text_only=text_only,
|
||||
)
|
||||
else:
|
||||
|
|
@ -169,8 +166,6 @@ async def _run_turn(
|
|||
voice=voice,
|
||||
output=output,
|
||||
history=llm_context,
|
||||
language_mode=route.language_mode,
|
||||
detected_language=detected_language,
|
||||
text_only=text_only,
|
||||
)
|
||||
except Exception as exc:
|
||||
|
|
@ -228,21 +223,9 @@ async def _voice_turn(websocket, store, user, session_id, audio, fmt, options):
|
|||
return
|
||||
|
||||
try:
|
||||
if route.language_mode == "flex":
|
||||
# Flex: Sprache auto-erkennen, kein Übersetzen durch Whisper.
|
||||
transcript, detected_language = await orchestrator.stt.transcribe_detect(
|
||||
audio, fmt=fmt, language=None
|
||||
)
|
||||
# Stimme folgt der erkannten Sprache (Fallback: Routensprache).
|
||||
effective_voice = voice_for_route(
|
||||
route.tts_provider, detected_language or route.language, route.voice_gender
|
||||
)
|
||||
else:
|
||||
# Fix: konfigurierte Sprache an Whisper → Whisper übersetzt automatisch.
|
||||
transcript = await orchestrator.stt.transcribe(audio, fmt=fmt, language=route.language)
|
||||
detected_language = None
|
||||
# Stimme folgt der konfigurierten Sprache.
|
||||
effective_voice = voice_for_route(route.tts_provider, route.language, route.voice_gender)
|
||||
# Feste Sprache an Whisper → Whisper übersetzt automatisch.
|
||||
transcript = await orchestrator.stt.transcribe(audio, fmt=fmt, language=route.language)
|
||||
effective_voice = voice_for_route(route.tts_provider, route.language, route.voice_gender)
|
||||
except Exception as exc:
|
||||
await websocket.send_json({"type": "error", "status": 502, "detail": str(exc)})
|
||||
return
|
||||
|
|
@ -250,7 +233,6 @@ async def _voice_turn(websocket, store, user, session_id, audio, fmt, options):
|
|||
await websocket.send_json({
|
||||
"type": "transcript",
|
||||
"text": transcript,
|
||||
"detected_language": detected_language,
|
||||
})
|
||||
if not transcript or not transcript.strip():
|
||||
await websocket.send_json({
|
||||
|
|
@ -260,7 +242,7 @@ async def _voice_turn(websocket, store, user, session_id, audio, fmt, options):
|
|||
return
|
||||
await _run_turn(
|
||||
websocket, store, user, session_id, route, orchestrator, output, transcript, options,
|
||||
detected_language=detected_language, effective_voice=effective_voice,
|
||||
effective_voice=effective_voice,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue