Login

CTranslate2 기반 Whisper 음성 인식 최적화 구현으로, 원본보다 4배 빠르고 메모리 사용량도 적습니다.

MITPython 17.0kSYSTRANfaster-whisper Last Updated: 2025-06-02

Faster-Whisper 프로젝트 상세 소개

프로젝트 개요

Faster-Whisper는 OpenAI Whisper 모델을 CTranslate2를 빠른 추론 엔진으로 사용하여 재구현한 것입니다. 원본 openai/whisper와 동일한 정확도를 유지하면서 최대 4배 빠른 속도를 제공하며, 메모리 사용량도 더 적습니다. 8비트 양자화 기술을 통해 CPU와 GPU에서 효율성을 더욱 높일 수 있습니다.

핵심 기능

🚀 성능 이점

  • 속도 향상: 원본 Whisper보다 4배 빠름
  • 메모리 최적화: 더 낮은 메모리 사용량
  • 양자화 지원: 8비트 양자화 지원으로 성능 추가 향상
  • 배치 처리: 배치 전사(transcription) 지원으로 처리량 증대

🛠️ 기술 특징

  • CTranslate2 추론 엔진 기반
  • GPU 및 CPU 실행 지원
  • 원본 Whisper 모델과 호환
  • 다양한 정밀도 모드 지원 (FP16, FP32, INT8)
  • 내장 오디오 디코딩 (FFmpeg 불필요)

성능 비교

GPU 벤치마크 (NVIDIA RTX 3070 Ti 8GB)

13분 오디오 전사 성능 비교:

구현 방식 정밀도 Beam Size 시간 GPU 메모리 사용량
openai/whisper fp16 5 2m23s 4708MB
whisper.cpp (Flash Attention) fp16 5 1m05s 4127MB
faster-whisper fp16 5 1m47s 3244MB
faster-whisper int8 5 1m33s 2926MB

CPU 벤치마크 (Intel Core i7-12700K)

구현 방식 정밀도 Beam Size 시간 메모리 사용량
openai/whisper fp32 5 6m58s 2335MB
whisper.cpp fp32 5 2m05s 1049MB
faster-whisper fp32 5 2m37s 2257MB
faster-whisper int8 5 1m42s 1477MB

설치 안내

시스템 요구 사항

  • Python 3.9 이상
  • GPU 실행을 위해 NVIDIA CUDA 라이브러리 지원 필요

기본 설치

pip install faster-whisper

GPU 지원 설치

NVIDIA 라이브러리 설치 필요:

  • CUDA 12.x
  • cuDNN 9.x
  • cuBLAS
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*
export LD_LIBRARY_PATH=`python3 -c 'import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__))'`

Docker 방식

# 공식 NVIDIA CUDA 이미지 사용
docker run --gpus all -it nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04

사용 가이드

기본 전사

from faster_whisper import WhisperModel

model_size = "large-v3"

# GPU 실행 (FP16)
model = WhisperModel(model_size, device="cuda", compute_type="float16")

# 또는 GPU 실행 (INT8)
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")

# 또는 CPU 실행 (INT8)
# model = WhisperModel(model_size, device="cpu", compute_type="int8")

segments, info = model.transcribe("audio.mp3", beam_size=5)

print("감지된 언어 '%s', 확률 %f" % (info.language, info.language_probability))

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

배치 전사

from faster_whisper import WhisperModel, BatchedInferencePipeline

model = WhisperModel("turbo", device="cuda", compute_type="float16")
batched_model = BatchedInferencePipeline(model=model)

segments, info = batched_model.transcribe("audio.mp3", batch_size=16)

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

단어 단위 타임스탬프

segments, _ = model.transcribe("audio.mp3", word_timestamps=True)

for segment in segments:
    for word in segment.words:
        print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))

음성 활동 감지 (VAD)

# VAD 필터 활성화
segments, _ = model.transcribe("audio.mp3", vad_filter=True)

# 사용자 정의 VAD 매개변수
segments, _ = model.transcribe(
    "audio.mp3",
    vad_filter=True,
    vad_parameters=dict(min_silence_duration_ms=500),
)

Distil-Whisper 지원

from faster_whisper import WhisperModel

model_size = "distil-large-v3"
model = WhisperModel(model_size, device="cuda", compute_type="float16")

segments, info = model.transcribe(
    "audio.mp3", 
    beam_size=5, 
    language="en", 
    condition_on_previous_text=False
)

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

모델 변환

Transformers에서 변환

pip install transformers[torch]>=4.23

ct2-transformers-converter \
    --model openai/whisper-large-v3 \
    --output_dir whisper-large-v3-ct2 \
    --copy_files tokenizer.json preprocessor_config.json \
    --quantization float16

사용자 정의 모델 로드

# 로컬 디렉토리에서 로드
model = WhisperModel("whisper-large-v3-ct2")

# Hugging Face Hub에서 로드
model = WhisperModel("username/whisper-large-v3-ct2")

활용 사례

  • 음성-텍스트 변환
  • 실시간 전사
  • 자막 생성
  • 다국어 번역
  • 음성 분석
  • 오디오 콘텐츠 색인

설정 및 최적화

로깅 설정

import logging

logging.basicConfig()
logging.getLogger("faster_whisper").setLevel(logging.DEBUG)

성능 최적화 팁

  • 최상의 성능을 위해 GPU 가속 사용
  • 하드웨어에 맞는 적절한 정밀도 모드 선택
  • 처리량 증대를 위해 배치 처리 사용
  • 처리 시간 단축을 위해 VAD 필터 활성화
  • beam size와 batch size를 적절히 설정

스레드 설정

# CPU 스레드 수 설정
OMP_NUM_THREADS=4 python3 my_script.py

기술 아키텍처

핵심 구성 요소

  • CTranslate2: 빠른 추론 엔진
  • PyAV: 오디오 디코딩 라이브러리
  • Silero VAD: 음성 활동 감지
  • Transformers: 모델 변환 지원

지원 모델

  • OpenAI Whisper 시리즈 (tiny, base, small, medium, large-v1/v2/v3)
  • Distil-Whisper 시리즈
  • 사용자 정의 미세 조정 모델

커뮤니티 및 지원

요약

Faster-Whisper는 최적화된 추론 엔진을 통해 원본 Whisper와 동일한 정확도를 유지하면서도 상당한 속도 향상을 이룬 고성능 음성 인식 솔루션입니다. 풍부한 기능, 우수한 생태계 지원, 사용하기 쉬운 API를 갖추고 있어 음성 인식 애플리케이션에 이상적인 선택입니다. 개발자든 연구원이든 Faster-Whisper를 통해 효율적인 음성 처리 애플리케이션을 빠르게 구축할 수 있습니다.

Star History Chart