fix: Voice-Transkription erzwingt kein "small" mehr — nutzt geladenes Modell
f5tts/bridge.py: das hardcoded model="small" in request_transcription war
ein Fehler — whisper-bridge hat dadurch stumm zwischen Modellen geswappt.
Wenn User large-v3 in Diagnostic eingestellt hatte:
- f5tts Voice-Transkribierung triggerte Swap zu "small" (+~500MB Laden)
- Danach aria-bridge schickte naechsten stt_request mit large-v3
(+~3GB Laden weil small jetzt im RAM war)
Doppelter Load, unnoetiger Traffic.
Fix:
- f5tts: kein model mehr im payload, whisper-bridge entscheidet
- whisper: wenn kein payload.model UND bereits ein Modell geladen →
das behalten. Nur wenn gar nichts da ist fallback auf WHISPER_MODEL
env default.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
4f494daffb
commit
58fd8721e3
|
|
@ -374,7 +374,10 @@ async def request_transcription(ws, wav_path: Path, language: str = "de") -> Opt
|
||||||
"requestId": request_id,
|
"requestId": request_id,
|
||||||
"audio": audio_b64,
|
"audio": audio_b64,
|
||||||
"mimeType": "audio/wav",
|
"mimeType": "audio/wav",
|
||||||
"model": "small", # klein reicht fuer Voice-Referenz
|
# KEIN hardcoded model — whisper-bridge nimmt das bereits
|
||||||
|
# geladene. Sonst wuerde hier ein Swap auf 'small' passieren und
|
||||||
|
# danach muesste das in Diagnostic konfigurierte Modell (z.B.
|
||||||
|
# large-v3) wieder geladen werden → doppelter Download.
|
||||||
"language": language,
|
"language": language,
|
||||||
})
|
})
|
||||||
return await asyncio.wait_for(fut, timeout=_STT_TIMEOUT_S)
|
return await asyncio.wait_for(fut, timeout=_STT_TIMEOUT_S)
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,11 @@ async def handle_stt_request(ws, payload: dict, runner: WhisperRunner) -> None:
|
||||||
request_id = payload.get("requestId", "")
|
request_id = payload.get("requestId", "")
|
||||||
audio_b64 = payload.get("audio", "")
|
audio_b64 = payload.get("audio", "")
|
||||||
mime_type = payload.get("mimeType", "audio/mp4")
|
mime_type = payload.get("mimeType", "audio/mp4")
|
||||||
model = payload.get("model") or WHISPER_MODEL
|
# Modell-Auswahl:
|
||||||
|
# payload.model gesetzt → nimm das (aria-bridge sendet's basierend auf Config)
|
||||||
|
# sonst + Modell geladen → behalt das aktuelle (kein sinnloser Swap)
|
||||||
|
# sonst → fallback auf ENV-Default
|
||||||
|
model = payload.get("model") or (runner.model_size if runner.model is not None else WHISPER_MODEL)
|
||||||
language = payload.get("language") or WHISPER_LANGUAGE
|
language = payload.get("language") or WHISPER_LANGUAGE
|
||||||
|
|
||||||
if not audio_b64:
|
if not audio_b64:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue