본문으로 건너뛰기

© 2026 Molayo

GH Trending릴리즈2026. 05. 14. 05:34

openai/whisper

요약

Whisper는 대규모 다국어 데이터셋으로 학습된 범용 음성 인식(speech recognition) 및 멀티태스킹 모델입니다. 이 모델은 음성 번역, 언어 식별 등 다양한 음성 처리 작업을 단일 아키텍처로 수행할 수 있습니다. 사용자는 `pip install openai-whisper` 명령어를 통해 최신 버전을 설치할 수 있으며, 시스템 환경 설정을 위해 `ffmpeg`와 같은 외부 도구 및 Python 의존성을 준비해야 합니다.

핵심 포인트

  • Whisper는 음성 인식 외에도 다국어 번역, 언어 식별 등 다양한 음성 처리 작업을 수행하는 멀티태스킹 모델이다.
  • 모델은 tiny부터 large까지 6가지 크기로 제공되며, 영어 전용(`.en`) 버전이 속도와 정확도의 절충안을 제공한다.
  • 설치 시 `ffmpeg` 같은 시스템 도구와 `openai-whisper` Python 패키지 설치가 필수적이며, 환경에 따라 Rust 개발 환경 설정이 필요할 수 있다.
  • 모델 크기별로 파라미터 수, 요구 VRAM, 상대적 추론 속도가 명시되어 있어 사용 목적에 맞는 모델 선택이 가능하다.

[블로그] [논문] [모델 카드] [Colab 예시]

Whisper는 범용 음성 인식 (speech recognition) 모델입니다. 다양한 오디오로 구성된 대규모 데이터셋으로 학습되었으며, 다국어 음성 인식 (multilingual speech recognition), 음성 번역 (speech translation), 언어 식별 (language identification)을 수행할 수 있는 멀티태스킹 (multitasking) 모델이기도 합니다.

Transformer 시퀀스 투 시퀀스 (sequence-to-sequence) 모델은 다국어 음성 인식, 음성 번역, 구어 언어 식별 (spoken language identification), 음성 활동 감지 (voice activity detection)를 포함한 다양한 음성 처리 작업에 대해 학습되었습니다. 이러한 작업들은 디코더 (decoder)에 의해 예측될 토큰 (token)의 시퀀스로 공동 표현되며, 이를 통해 단일 모델이 기존 음성 처리 파이프라인 (speech-processing pipeline)의 많은 단계들을 대체할 수 있습니다. 멀티태스크 학습 (multitask training) 형식은 작업 지정자 (task specifiers) 또는 분류 대상 (classification targets) 역할을 하는 일련의 특수 토큰 (special tokens)을 사용합니다.

모델을 학습하고 테스트하기 위해 Python 3.9.9와 PyTorch 1.10.1을 사용했지만, 코드베이스는 Python 3.8-3.11 및 최신 PyTorch 버전과 호환될 것으로 예상됩니다. 또한 코드베이스는 몇 가지 Python 패키지에 의존하며, 가장 눈에 띄는 것은 빠른 토크나이저 (tokenizer) 구현을 위한 OpenAI의 tiktoken입니다. 다음 명령어를 사용하여 Whisper의 최신 릴리스를 다운로드하고 설치(또는 업데이트)할 수 있습니다:

pip install -U openai-whisper

또는, 다음 명령어를 통해 이 저장소의 최신 커밋과 Python 의존성 패키지들을 가져와 설치할 수 있습니다:

pip install git+https://github.com/openai/whisper.git

이 저장소의 최신 버전으로 패키지를 업데이트하려면 다음을 실행하십시오:

pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

또한 시스템에 명령줄 도구인 ffmpeg가 설치되어 있어야 하며, 이는 대부분의 패키지 관리자에서 사용할 수 있습니다:

# Ubuntu 또는 Debian의 경우
sudo apt update && sudo apt install ffmpeg
# Arch Linux의 경우
...

tiktoken이 사용자의 플랫폼에 대해 사전 빌드된 휠 (wheel)을 제공하지 않을 경우를 대비해 rust가 설치되어 있어야 할 수도 있습니다. pip install 도중 설치 오류가 발생한다면

위 명령어를 실행해도 문제가 발생한다면, Getting started 페이지를 따라 Rust 개발 환경을 설치해 주세요. 또한, 다음과 같이 PATH 환경 변수를 설정해야 할 수도 있습니다.

export PATH="$HOME/.cargo/bin:$PATH"

만약 설치 중 No module named 'setuptools_rust' 오류가 발생한다면, 다음과 같이 setuptools_rust를 설치해야 합니다.

pip install setuptools-rust

모델 크기는 총 6가지이며, 그 중 4가지는 영어 전용 (English-only) 버전을 제공하여 속도와 정확도 사이의 절충안 (tradeoff)을 제공합니다. 아래는 사용 가능한 모델의 이름과 대략적인 메모리 요구 사항, 그리고 large 모델 대비 상대적인 추론 속도 (inference speed)입니다. 아래의 상대적 속도는 A100에서 영어 음성을 전사 (transcribing)하여 측정한 것이며, 실제 속도는 언어, 말하기 속도, 사용 가능한 하드웨어 등 여러 요인에 따라 크게 달라질 수 있습니다.

크기 (Size)파라미터 (Parameters)영어 전용 모델 (English-only model)다국어 모델 (Multilingual model)요구 VRAM상대적 속도
tiny39 Mtiny.entiny~1 GB~10x
base74 Mbase.enbase~1 GB~7x
small244 Msmall.ensmall~2 GB~4x
medium769 Mmedium.enmedium~5 GB~2x
large1550 MN/Alarge~10 GB1x
turbo809 MN/Aturbo~6 GB~8x

영어 전용 애플리케이션을 위한 .en 모델들은 특히 tiny.enbase.en 모델에서 더 나은 성능을 보이는 경향이 있습니다. small.enmedium.en 모델에서는 그 차이가 덜 유의미해지는 것을 확인했습니다.
추가적으로, turbo 모델은 large-v3의 최적화된 버전으로, 정확도의 미세한 저하와 함께 더 빠른 전사 속도를 제공합니다.

Whisper의 성능은 언어에 따라 크게 달라집니다. 아래 그림은 large-v3large-v2의 성능 세부 분석을 보여줍니다.

Common Voice 15 및 Fleurs 데이터셋에서 평가된 WER (word error rates, 단어 오류율) 또는 이탤릭체로 표시된 CER (character error rates, 음절 오류율)을 사용하여 언어별 모델 성능을 보여줍니다. 다른 모델 및 데이터셋에 해당하는 추가 WER/CER 지표는 논문의 부록 D.1, D.2, D.4에서 확인할 수 있으며, 번역에 대한 BLEU (Bilingual Evaluation Understudy) 점수는 부록 D.3에서 확인할 수 있습니다.

다음 명령어를 사용하면 turbo 모델을 사용하여 오디오 파일의 음성을 전사(transcribe)할 수 있습니다:

whisper audio.flac audio.mp3 audio.wav --model turbo

기본 설정(turbo 모델을 선택함)은 영어 전사에 잘 작동합니다. 하지만, turbo 모델은 번역(translation) 작업을 위해 학습되지 않았습니다. 만약 영어가 아닌 음성을 영어로 번역해야 한다면, turbo 대신 다국어 모델 (multilingual models) (tiny, base, small, medium, large) 중 하나를 사용하십시오. 예를 들어, 영어가 아닌 음성이 포함된 오디오 파일을 전사하려면 언어를 지정할 수 있습니다:

whisper japanese.wav --language Japanese

음성을 영어로 번역하려면 다음을 사용하십시오:

whisper japanese.wav --model medium --language Japanese --task translate

참고: turbo 모델은 --task translate가 지정되더라도 원래 언어를 반환합니다. 최상의 번역 결과를 얻으려면 medium 또는 large 모델을 사용하십시오.

사용 가능한 모든 옵션을 보려면 다음을 실행하십시오:

whisper --help

사용 가능한 모든 언어 목록은 tokenizer.py를 참조하십시오.

전사는 Python 내에서도 수행할 수 있습니다:

import whisper
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
...

내부적으로 transcribe() 메서드는 파일 전체를 읽고 30초 단위의 슬라이딩 윈도우(sliding window)로 오디오를 처리하며, 각 윈도우에 대해 자기회귀적 시퀀스 투 시퀀스 (autoregressive sequence-to-sequence) 예측을 수행합니다.

아래는 모델에 대한 더 낮은 수준의 접근(lower-level access)을 제공하는 whisper.detect_language()whisper.decode()의 사용 예시입니다.

import whisper
model = whisper.load_model("turbo")
# 오디오를 로드하고 30초에 맞게 패딩/트리밍(pad/trim)합니다
...

Whisper의 더 많은 사용 예시와 웹 데모(web demos), 다른 도구와의 통합(integrations), 다양한 플랫폼을 위한 포트(ports) 등과 같은 서드파티 확장(third-party extensions)을 공유하려면 Discussions의 🙌 Show and tell 카테고리를 사용해 주세요.

Whisper의 코드와 모델 가중치(model weights)는 MIT License 하에 공개됩니다. 자세한 내용은 LICENSE를 참조하세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0