faster-whisper large-v3는 greedy + VAD + 이어받기 끔이 가장 빠르면서 정확도도 뒤지지 않는다
·수정 1회
요약
- 한국어 대화 녹음에서 greedy + VAD +
condition_on_previous_text=False조합이 가장 빨랐다. 기본값(이어받기 켬)보다 1.8배 빨랐고, 결과가 매번 같았고, CER은 가장 낮은 조합과 0.002 차이였다 - (추론) 이어받기를 끄면 한 창의 오류가 다음 창으로 번지지 않고 fallback도 덜 일어나는 것으로 보인다. 직접 확인하지는 않았고, 관측된 건 반복 실행 결과가 매번 같았다는 것이다
- 이어받기 끔 조건은 4파일 × 3회로만 쟀다. 서비스 기본값으로 굳히기 전에 파일을 더 늘려 확인해야 한다
본문
네 조합 비교 (large-v3, GPU L4 fp16, VAD 켬, 4파일 × 3회)
| 조합 | 평균 CER | 파일당 시간 | 재현성 (실행 간 CER 편차) |
|---|---|---|---|
| greedy + 이어받기 끔 | 0.131 | 40초 | 결정적 (0) |
| beam5 + 이어받기 끔 | 0.129 | 58초 | 결정적 (0) |
| greedy + 이어받기 켬 (기본값) | 0.139 | 72초 | 매번 다름 (0.017) |
| beam5 + 이어받기 켬 | 0.165 | 152초 | 매번 다름 (0.052) |
- 정확도: 이어받기를 끄면 greedy 기준 0.139 → 0.131이 됐다. 4파일 중 1파일(A0051_S0001_0_G0101)만 켠 쪽이 나았다(0.100~0.120 vs 0.127)
- 속도: 이어받기를 끈 greedy는 기본값보다 1.8배, 켠 beam5보다 3.8배 빨랐다. (추론) 루프와 fallback 재디코딩으로 헛도는 시간이 줄어서다
세 요소가 각각 하는 일
- VAD: 켜야 한다. GPU에서 3파일을 VAD를 끄고 돌렸더니 CER이 0.25
0.33(반복·환각)이었다. 같은 3파일을 VAD를 켜고 돌리면 0.0760.214였다. 22파일 전체를 VAD를 켜고 돌린 CER은 0.076~0.353이었다. CPU 3파일에서는 VAD만으로 beam5 속도가 1.8배 빨라졌다 - 이어받기 끔: 이전 창 텍스트를 다음 창 힌트로 넘기지 않는다(문서에 나온 동작). (추론) 그래서 한 창에서 생긴 오류나 루프가 다음 창으로 번지지 않는 것으로 보인다. 자세한 근거는 faster-whisper 결과가 실행마다 달라지는 건 temperature fallback 샘플링이 이전 텍스트 이어받기로 번지는 탓으로 보인다
- greedy: 이어받기를 끄면 beam5와 CER이 0.002 차이로 사실상 같은데 시간은 1.45배 덜 든다. beam 이득이 없는 이유는 Whisper large-v3에서 beam search는 greedy보다 정확도 이득이 거의 없다
트레이드오프
- faster-whisper 문서는 이어받기를 끄면 이렇게 될 수 있다고 한다:
disabling may make the text inconsistent across windows
- 해석: 창 사이의 띄어쓰기나 고유명사 표기 같은 일관성이 떨어질 수 있다는 뜻으로 본다. 문서에 구체적인 항목은 없다. 이번 CER 평가는 띄어쓰기와 문장부호를 지우고 글자만 비교해서 이 효과는 재지 못했다
- 이어받기가 문맥을 잘 이어 주는 파일에서는 켠 쪽이 나을 수 있다(A0051_S0001_0_G0101 사례)
한계
- 이어받기 끔 조건은 4파일(3개 세션 그룹)뿐이다. 22파일 전체로 확인하지 않았다
- 한국어 대화 녹음(kcsc)만 썼다. 다른 언어나 도메인, 잡음 조건은 미검증이다
- GPU 시간은 두 워커가 GPU를 동시에 나눠 쓴 값이라 비율로만 봐야 한다
참고
- WhisperX는 VAD로 청크 의존성을 제거해 배치 추론을 가능하게 한다 — WhisperX도 VAD + 이어받기 끔 조합을 쓴다
- faster-whisper BatchedInferencePipeline은 production blocker급 미해결 이슈가 다수 있다 — 그 노트의 우회책은 VAD를 끄는 쪽이라 이 노트의 'VAD는 켜야 한다'와 다르다(BatchedInferencePipeline 문맥)
- 정답 전사가 없어도 변형 간 이탈 패턴으로 오디오 열화를 판별할 수 있다
- Whisper 음성 처리와 최적화 방식
- faster-whisper 결과가 실행마다 달라지는 건 temperature fallback 샘플링이 이전 텍스트 이어받기로 번지는 탓으로 보인다
- Whisper large-v3에서 beam search는 greedy보다 정확도 이득이 거의 없다
- faster-whisper 1.2.1
transcribe.py—condition_on_previous_textdocstring