
Whisper 오디오 청킹: 긴 오디오를 효율적으로 전사하는 방법
Eric King
Author
소개
Whisper는 강력한 음성-텍스트 모델이지만 입력 길이에 대한 엄격한 제한이 있습니다.
팟캐스트, 회의, 콜센터 오디오처럼 긴 녹음에서는 오디오 청킹이 필요하며, 정확하고 확장 가능한 전사를 위해 필수입니다.
팟캐스트, 회의, 콜센터 오디오처럼 긴 녹음에서는 오디오 청킹이 필요하며, 정확하고 확장 가능한 전사를 위해 필수입니다.
이 글에서는 다음을 다룹니다.
- Whisper 오디오 청킹이 무엇인지
- 청크 크기가 중요한 이유
- 긴 오디오와 실시간 전사를 위한 모범 사례
- 흔한 청킹 실수를 피하는 방법
Whisper에서 오디오 청킹이란?
오디오 청킹은 Whisper로 보내기 전에 긴 오디오 파일을 더 작은 구간으로 나누는 것을 말합니다.
필요한 이유:
- Whisper는 한 번에 약 30초 분량의 오디오를 처리합니다
- 더 긴 오디오는 반드시 분할해야 합니다
- 청킹은 메모리 사용과 지연 시간을 제어하는 데 도움이 됩니다
각 청크는 독립적으로 전사된 뒤 전체 텍스트로 병합됩니다.
청크 크기가 중요한 이유
잘못된 청크 크기는 전사 품질을 크게 떨어뜨립니다.
너무 짧은 청크
❌ 문맥 손실
❌ 문장 단절 증가
❌ 단어 오류율 상승
❌ 문장 단절 증가
❌ 단어 오류율 상승
너무 긴 청크
❌ GPU 메모리 문제
❌ 추론 속도 저하
❌ 잘림(truncation) 위험
❌ 추론 속도 저하
❌ 잘림(truncation) 위험
권장 청크 길이
| 사용 사례 | 청크 길이 |
|---|---|
| 배치 전사 | 20–30초 |
| 스트리밍 / 실시간 | 5–10초 |
| 잡음 많은 통화 오디오 | 10–15초 |
고정 길이 청킹과 VAD 기반 청킹
1️⃣ 고정 길이 청킹
N초마다 오디오를 나눕니다.
장점
- 단순함
- 예측 가능
단점
- 문장 중간에서 잘림
- 대화에서 정확도가 떨어짐
2️⃣ VAD 기반 청킹(권장)
**음성 활동 검출(VAD)**로 무음 구간에서 나눕니다.
장점
- 더 자연스러운 문장 경계
- 더 높은 정확도
- 더 읽기 쉬운 전사
인기 VAD 도구
- WebRTC VAD
- Silero VAD
- pyannote.audio
청크 오버랩: 핵심 요령
청크 경계에서 단어가 빠지지 않도록 겹치는 청크를 사용합니다.
예
- 청크 길이: 20초
- 오버랩: 2–3초
이렇게 하면 Whisper가 경계 단어를 두 번 “듣게” 됩니다.
이후:
- 겹치는 텍스트를 중복 제거
- 가장 신뢰도 높은 구간을 유지
예: Python으로 긴 오디오 청킹
import librosa
audio, sr = librosa.load("long_audio.wav", sr=16000)
chunk_size = 20 * sr
overlap = 3 * sr
chunks = []
start = 0
while start < len(audio):
end = start + chunk_size
chunk = audio[start:end]
chunks.append(chunk)
start += chunk_size - overlap
각 청크는 독립적으로 Whisper에 넘길 수 있습니다.
청킹을 사용한 Whisper 스트리밍
실시간 음성 인식에서는:
- 작은 청크(2–5초) 사용
- VAD와 결합
- 롤링 버퍼 사용
일반적인 스트리밍 파이프라인:
Microphone → VAD → Buffer → Whisper → Partial Result
⚠️ 트레이드오프:
- 청크가 작을수록 지연 시간은 낮아짐
- 청크가 클수록 정확도는 좋아지기 쉬움
청크 간 맥락 처리
Whisper는 기본적으로 이전 청크를 기억하지 않습니다.
해결책:
- 이전 텍스트를 프롬프트로 전달
- 겹치는 청크 사용
- 후처리 언어 모델 적용
예:
result = model.transcribe(chunk, initial_prompt=previous_text)
흔한 청킹 실수
❌ 피할 것:
- 청크 간 오버랩 없음
- 단어 중간에서 분할
- 한 청크에 여러 화자 혼합
- 무음 검출 무시
✅ 모범 사례:
- VAD 사용
- 오버랩 추가
- 지능적으로 병합
성능 팁
- 오디오를 모노 16kHz로 변환
- 볼륨 정규화
- GPU 효율을 위해 청크 배치 처리
- fp16 추론 사용
대규모 전사 시스템에서 이런 최적화가 큰 차이를 만듭니다.
프로덕션 시스템의 청킹
대규모에서는 청킹이 다음과 함께 쓰이는 경우가 많습니다.
- 메시지 큐(RabbitMQ / Kafka)
- 비동기 워커
- 실패한 청크에 대한 재시도 로직
- 타임스탬프 정렬
이를 통해 수 시간짜리 오디오와 엔터프라이즈 워크로드에도 Whisper를 적용할 수 있습니다.
마무리
Whisper 오디오 청킹은 단순한 우회책이 아니라 신뢰할 수 있는 음성-텍스트 시스템을 만드는 핵심 설계 패턴입니다.
적절한 청크 크기, 오버랩, VAD가 있으면:
- 길이 제한 없는 오디오 전사
- 지연 시간 감소
- 정확도 크게 향상
청킹, 스트리밍, 최적화를 한 번에 다루는 솔루션이 필요하다면 SayToWords 같은 도구가 전체 파이프라인을 단순화할 수 있습니다.
FAQ
Q: Whisper가 긴 오디오를 네이티브로 지원하나요?
A: 아니요. 긴 오디오는 약 30초 단위로 나눠야 합니다.
Q: Whisper에 가장 좋은 청크 크기는?
A: 배치는 20–30초, 스트리밍은 5–10초가 일반적입니다.
Q: 오버랩을 써야 하나요?
A: 네. 2–3초 오버랩을 강력히 권장합니다.
