feat(stt): bessere Spracherkennung — small-Modell, VAD, feste Sprache
Gegen "Blödsinn", v. a. an Handys: 1) Modell-Default base -> small + compute_type int8 (Benchmark auf der VM: base patzt schon bei sauberem Audio "an Dienstag und 10 Uhr", small korrekt "am Dienstag um 10 Uhr"; ~4 s/6-s-Clip, gecacht). 2) faster_whisper.transcribe mit vad_filter=True (+min_silence 500ms) und condition_on_previous_text=False -> weniger Stille-/Kontext-Halluzinationen. 3) stt_force_language (Default True): WS-Pfad gibt die feste Zielsprache vor statt Auto-Detect -> robust bei kurzen/verrauschten Clips. Auto-Detect + Fremdsprachen-Übersetzung jetzt opt-in (stt_force_language=False). Tests: Config-Defaults + VAD/Language-Durchreichung; test_ws-Übersetzung auf opt-in umgestellt. Suite 253 grün. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
21ab545d8a
commit
f30b9b56c7
5 changed files with 61 additions and 12 deletions
|
|
@ -42,7 +42,13 @@ class FasterWhisperProvider(STTProvider):
|
|||
self, audio_bytes: bytes, language: str | None
|
||||
) -> tuple[str, str | None]:
|
||||
model = _load_model(self.model_size, self.device, self.compute_type)
|
||||
segments, info = model.transcribe(io.BytesIO(audio_bytes), language=language)
|
||||
segments, info = model.transcribe(
|
||||
io.BytesIO(audio_bytes),
|
||||
language=language,
|
||||
vad_filter=True, # Stille/Rauschen entfernen -> weniger Halluzinationen
|
||||
vad_parameters={"min_silence_duration_ms": 500},
|
||||
condition_on_previous_text=False, # kurze Befehle: kein Kontext-Drift
|
||||
)
|
||||
text = "".join(segment.text for segment in segments).strip()
|
||||
detected = getattr(info, "language", None)
|
||||
return text, detected
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue