요약
- Whisper는 30초 단위 sliding window로 추론하며, faster-whisper(CTranslate2)로 가속 가능
- 긴 음성은 쪼개서 처리하되, init_prompt를 활용하면 품질 개선 가능
본문
30초 이상 음성 처리 방식
- Whisper는 오디오를 30초 길이의 Mel Spectrogram으로 변환해 모델에 입력함
- 30초 보다 길면 sliding window를 사용해서 30초씩 잘라서 여러번 추론하는데, overlap을 N초 기준으로
- 0~ 30s, 25 ~ 55s, 50 ~ 80s 이런식으로 겹치면서 추론함
- chunk 단위에서 attention이 작동해서, 30초 이상 장기 문맥을 모델이 직접 기억하지 못함
faster-whisper vs whisper
- CTranslate2를 활용해서 OpenAI Whisper 모델을 실행시킨 버전
- CTranslate2는 C++를 이용해서, 트랜스포머 추론을 가속화한 모델
- 구현 내용:
- weights quantization
- layers fusion
- batch reordering
음성 쪼개기 최적화
- https://github.com/openai/whisper/discussions/1913
- init_prompt에 직전 발화에 대한 정보를 넘겨주면 개선된다고 함
- 매우 짧은 세그먼트(1초 이하)의 경우, 권장하지 않음