[블로그] [종이] [모델카드] [Colab 예시]
Whisper는 범용 음성 인식 모델입니다. 다양한 오디오의 대규모 데이터 세트에 대해 훈련되었으며 다국어 음성 인식, 음성 번역 및 언어 식별을 수행할 수 있는 멀티태스킹 모델이기도 합니다.
Transformer 시퀀스-시퀀스 모델은 다국어 음성 인식, 음성 번역, 음성 언어 식별, 음성 활동 감지 등 다양한 음성 처리 작업에 대해 학습됩니다. 이러한 작업은 디코더에서 예측할 일련의 토큰으로 공동으로 표시되므로 단일 모델이 기존 음성 처리 파이프라인의 여러 단계를 대체할 수 있습니다. 멀티태스킹 훈련 형식은 작업 지정자 또는 분류 대상 역할을 하는 특수 토큰 세트를 사용합니다.
우리는 모델을 학습하고 테스트하기 위해 Python 3.9.9 및 PyTorch 1.10.1을 사용했지만 코드베이스는 Python 3.8-3.11 및 최신 PyTorch 버전과 호환될 것으로 예상됩니다. 코드베이스는 또한 몇 가지 Python 패키지, 특히 빠른 토크나이저 구현을 위한 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
시스템에 설치되어 있어야 합니다.
# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg
# on Arch Linux
sudo pacman -S ffmpeg
# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg
# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg
# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg
tiktoken이 플랫폼에 사전 제작된 휠을 제공하지 않는 경우 rust
설치도 필요할 수 있습니다. 위의 pip install
명령 중에 설치 오류가 표시되면 시작하기 페이지에 따라 Rust 개발 환경을 설치하세요. 또한 PATH
환경 변수를 구성해야 할 수도 있습니다(예: export PATH="$HOME/.cargo/bin:$PATH"
. No module named 'setuptools_rust'
설치가 실패하는 경우 다음을 실행하여 setuptools_rust
설치해야 합니다.
pip install setuptools-rust
모델 크기는 6개이며, 4개는 영어 전용 버전으로 속도와 정확성의 균형을 제공합니다. 다음은 사용 가능한 모델의 이름과 대략적인 메모리 요구 사항, 대형 모델 대비 추론 속도입니다. 아래의 상대 속도는 A100에서 영어 음성을 전사하여 측정한 것이며, 실제 속도는 언어, 말하기 속도, 사용 가능한 하드웨어 등 다양한 요인에 따라 크게 달라질 수 있습니다.
크기 | 매개변수 | 영어 전용 모델 | 다국어 모델 | 필수 VRAM | 상대 속도 |
---|---|---|---|---|---|
매우 작은 | 39M | tiny.en | tiny | ~1GB | ~10배 |
베이스 | 74M | base.en | base | ~1GB | ~7배 |
작은 | 244M | small.en | small | ~2GB | ~4배 |
중간 | 769M | medium.en | medium | ~5GB | ~2배 |
크기가 큰 | 1550M | 해당 없음 | large | ~10GB | 1x |
터보 | 809M | 해당 없음 | turbo | ~6GB | ~8배 |
영어 전용 애플리케이션용 .en
모델은 특히 tiny.en
및 base.en
모델의 경우 더 나은 성능을 발휘하는 경향이 있습니다. 우리는 small.en
및 medium.en
모델에서 차이가 덜 중요해지는 것을 관찰했습니다. 또한 turbo
모델은 정확도 저하를 최소화하면서 더 빠른 전사 속도를 제공하는 large-v3
의 최적화된 버전입니다.
Whisper의 성능은 언어에 따라 크게 다릅니다. 아래 그림은 Common Voice 15 및 Fleurs 데이터세트에서 평가된 WER(단어 오류율) 또는 CER( 기울임꼴 로 표시된 문자 오류율)을 사용하여 언어별 large-v3
및 large-v2
모델의 성능 분석을 보여줍니다. 다른 모델 및 데이터세트에 해당하는 추가 WER/CER 측정항목은 문서의 부록 D.1, D.2 및 D.4와 부록 D의 번역에 대한 BLEU(Bilingual Evaluation Understudy) 점수에서 확인할 수 있습니다. 3.
다음 명령은 turbo
모델을 사용하여 오디오 파일의 음성을 텍스트로 변환합니다.
whisper audio.flac audio.mp3 audio.wav --model turbo
기본 설정( turbo
모델 선택)은 영어를 복사하는 데 적합합니다. 영어가 아닌 음성이 포함된 오디오 파일을 텍스트로 변환하려면 --language
옵션을 사용하여 언어를 지정할 수 있습니다.
whisper japanese.wav --language Japanese
--task translate
추가하면 음성이 영어로 번역됩니다.
whisper japanese.wav --language Japanese --task translate
사용 가능한 모든 옵션을 보려면 다음을 실행하십시오.
whisper --help
사용 가능한 모든 언어 목록은 tokenizer.py를 참조하세요.
Python 내에서도 전사를 수행할 수 있습니다.
import whisper
model = whisper . load_model ( "turbo" )
result = model . transcribe ( "audio.mp3" )
print ( result [ "text" ])
내부적으로 transcribe()
메서드는 전체 파일을 읽고 슬라이딩 30초 창으로 오디오를 처리하여 각 창에서 자동 회귀 시퀀스 간 예측을 수행합니다.
다음은 모델에 대한 하위 수준 액세스를 제공하는 whisper.detect_language()
및 whisper.decode()
의 사용 예입니다.
import whisper
model = whisper . load_model ( "turbo" )
# load audio and pad/trim it to fit 30 seconds
audio = whisper . load_audio ( "audio.mp3" )
audio = whisper . pad_or_trim ( audio )
# make log-Mel spectrogram and move to the same device as the model
mel = whisper . log_mel_spectrogram ( audio ). to ( model . device )
# detect the spoken language
_ , probs = model . detect_language ( mel )
print ( f"Detected language: { max ( probs , key = probs . get ) } " )
# decode the audio
options = whisper . DecodingOptions ()
result = whisper . decode ( model , mel , options )
# print the recognized text
print ( result . text )
?를 사용하세요. 웹 데모, 다른 도구와의 통합, 다양한 플랫폼용 포트 등과 같은 Whisper 및 타사 확장 프로그램의 더 많은 사용 예를 공유하기 위해 토론에 카테고리를 표시하고 알려줍니다.
Whisper의 코드와 모델 가중치는 MIT 라이선스에 따라 공개됩니다. 자세한 내용은 라이센스를 참조하세요.