STT VAD 빈 오디오 에러 방어: VAD가 전체 제거 시 VAD 없이 재시도

- faster-whisper VAD가 짧은 오디오를 전부 무음 처리 → max() empty sequence 에러
- catch 후 vad_filter=False로 재시도하여 최소한 빈 텍스트 반환
This commit is contained in:
Yun Chan 2026-04-05 10:16:10 +09:00
parent eed225c8d4
commit 9d5594e848

View file

@ -222,7 +222,16 @@ async def transcribe(
transcribe_kwargs["initial_prompt"] = initial_prompt
# faster-whisper 전사 실행
segments_iter, info = _model.transcribe(audio_array, **transcribe_kwargs)
# VAD가 전체 오디오를 제거하면 max() 에러 발생 → VAD 없이 재시도
try:
segments_iter, info = _model.transcribe(audio_array, **transcribe_kwargs)
except ValueError as ve:
if "empty sequence" in str(ve) and transcribe_kwargs.get("vad_filter"):
logger.warning("VAD가 전체 오디오를 제거함 → VAD 없이 재시도")
transcribe_kwargs["vad_filter"] = False
segments_iter, info = _model.transcribe(audio_array, **transcribe_kwargs)
else:
raise
# 세그먼트 수집
segments_list: list[dict] = []