openai/whisper

Robust Speech Recognition via Large-Scale Weak Supervision

Whisper – 오픈 소스 음성-텍스트 모델

개요 – Whisper는 오디오를 텍스트로 변환할 수 있는 트랜스포머 기반의 sequence-to-sequence 모델입니다. OpenAI가 방대한 다국어 오디오 데이터셋으로 학습시켜, 단일 모델로 다음을 수행할 수 있습니다:

  • 다양한 언어의 음성 전사(transcription),
  • 구어의 영어 번역,
  • 구어 언어 식별,
  • 음성 활동 감지(VAD) 수행.

중요성 – 별도의 구성 요소(VAD → 언어 식별 → ASR → 번역) 파이프라인 대신, Whisper는 한 번의 패스로 모든 것을 수행하므로 개발이 단순해지며 다양한 언어와 오디오 조건에서 즉시 사용하기에 적합합니다.


모델 크기

크기 파라미터 영어 전용 다국어 VRAM (약) 상대 속도*
tiny 39 M tiny.en tiny ~1 GB ~10× (vs large)
base 74 M base.en base ~1 GB ~7×
small 244 M small.en small ~2 GB ~4×
medium 769 M medium.en medium ~5 GB ~2×
large 1 550 M large ~10 GB
turbo 809 M turbo ~6 GB ~8×
*속도는 A100에서 영어를 전사할 때 측정된 값입니다. 실제 속도는 언어, 하드웨어 및 오디오에 따라 다릅니다.

팁: 영어 전용 (*.en) 모델은 특히 tiny 및 base 버전에서 영어에 대해 조금 더 정확합니다. turbo 모델은 약간의 정확도 트레이드오프가 있는 large-v3의 속도 최적화 버전입니다.


빠른 시작 (CLI)

# 패키지 및 ffmpeg 설치 (오디오 디코딩에 필요)
pip install -U openai-whisper
# Ubuntu/Debian의 경우 ffmpeg도 필요합니다:
sudo apt update && sudo apt install ffmpeg

# 하나 이상의 파일 전사 (기본적으로 빠른 "turbo" 모델 사용)
whisper audio.flac audio.mp3 audio.wav --model turbo

--language <Lang>를 사용하여 언어를 강제하거나, 다국어 모델에서 --task translate를 사용하여 영어 번역을 얻을 수 있습니다.


Python에서 Whisper 사용하기

import whisper
model = whisper.load_model("turbo")          # 모든 크기 이름 사용 가능
result = model.transcribe("audio.mp3")
print(result["text"])

더 낮은 수준의 제어를 위해서는 다음을 수행할 수 있습니다:

  1. whisper.load_audio / whisper.pad_or_trim으로 오디오 로드 및 패딩/트리밍.
  2. whisper.log_mel_spectrogram으로 로그-Mel 스펙트로그램으로 변환.
  3. model.detect_language(mel)로 언어 감지.
  4. whisper.decode(model, mel, whisper.DecodingOptions())로 디코딩.

설치 참고 사항

  • Python 3.8-3.11 및 최신 PyTorch 버전이 필요합니다.
  • 이 패키지는 OpenAI의 빠른 토크나이저인 tiktoken에 의존합니다. 일부 플랫폼에서는 빌드를 위해 Rust 툴체인 (rustc, cargo) 및 setuptools-rust가 필요할 수 있습니다.
  • CLI 및 Python 오디오 로딩을 위해 ffmpeg가 시스템 경로에 있어야 합니다.

라이선스

코드와 모델 가중치는 MIT License 하에 공개됩니다.


더 알아보기

관련

  • Dispatch
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch