본문 바로가기

일상

패스터위스퍼(faster-whisper)로 한국어 음성을 텍스트로 (GPU 메모리 부족까지 잡기)

반응형

한국어 회의나 통화 녹음을 텍스트로 받아 적어야 할 때(전사), OpenAI Whisper보다 빠르고 가벼운 faster-whisper로 처리하는 방법입니다. 특히 파일을 여러 개 연속으로 돌리면 GPU 메모리가 터지는(CUDA out of memory) 함정까지 같이 잡아보겠습니다.


1. 설치와 모델 선택
설치는 pip install faster-whisper 한 줄이면 됩니다. 한국어는 large-v3 모델이 정확도가 가장 좋은데, 대신 GPU 메모리를 꽤 먹습니다.



- large-v3: 한국어 정확도 best (GPU 권장, VRAM 약 10GB)
- medium / small: 메모리가 부족하면 차선책
- compute_type: float16(GPU 표준) / int8(메모리 절약)


2. 기본 전사 코드
모델을 한 번 로드하고, language="ko"를 명시해 전사합니다. 결과는 구간(segment)별로 시작/끝 시간과 텍스트가 나옵니다.



3. GPU 메모리 부족(CUDA OOM) 잡기
파일을 여러 개 연속으로 돌리면 "CUDA out of memory"가 뜨는 경우가 많습니다. 원인은 매 파일마다 모델을 새로 로드하거나, 처리 후 GPU 캐시가 안 풀려 메모리가 누적되기 때문입니다.


- 모델은 루프 밖에서 한 번만 로드해 재사용 (매 파일마다 새로 로드 금지)
- 파일 사이에 gc.collect() + torch.cuda.empty_cache()로 캐시 정리
- 그래도 부족하면 compute_type을 int8로 낮추거나 모델 크기를 줄임



4. 정확도 올리는 팁
도메인 단어가 많은 녹음이면 initial_prompt로 힌트를 주고, 무음이 긴 녹음은 vad_filter로 잘라내면 더 빠르고 깔끔해집니다.


- language="ko": 언어 자동감지 대신 한국어로 고정(엉뚱한 언어 오인식 방지)
- initial_prompt="회의록, 제품명 등": 전문용어 인식률 향상
- vad_filter=True: 무음 구간 자동 제거로 속도/정확도 개선


5. 더 나아가기: 화자 분리
누가 말했는지까지 나누려면 pyannote.audio를 붙이면 됩니다. 별도 토큰(Hugging Face)이 필요하고, 전사 결과의 타임스탬프와 화자 구간을 매칭하는 방식입니다.


함께 보면 좋은 글:
- faster-whisper + pyannote로 화자 분리까지 (누가 말했는지 나누는 STT) - 화자 분리 편
- Windows에서 faster-whisper GPU로 돌리기 (CUDA/cuDNN 세팅) - GPU 세팅 편
- 장시간 GPU 작업 발열 잡기 (nvidia-smi 온도 모니터링) - 발열 가드 편
- 성별로 화자분리 더 정확하게? (피치 F0와 HF 성별 모델) - 성별/피치 실험 편
- faster-whisper vs OpenAI Whisper 직접 비교 (속도·VRAM·정확도) - 엔진 비교 편
- 긴 음성 무음(VAD) 잘라 빠르게 전사하기 (+화자별 대본) - VAD 무음 제거 편
- 수백 개 음성 파일 밤새 무인 STT 배치 (재개 가능) - 무인 배치 편
- 윈도우11(Windows 11) 모바일 장치 연결로 폰 파일 다룰 때 주의할 점 (삭제 전파, 온라인 전용 파일) - 폰에서 녹음 가져올 때 주의 편


여기까지 faster-whisper로 한국어 음성을 전사하고 GPU 메모리 부족까지 잡는 방법에 대해서 작성해봤습니다. 여기까지 읽어주셔서 감사합니다!

반응형