[Blog] [Kertas] [Kartu model] [Contoh Colab]
Whisper adalah model pengenalan suara untuk tujuan umum. Ini dilatih pada kumpulan data besar dari beragam audio dan juga merupakan model multitasking yang dapat melakukan pengenalan ucapan multibahasa, terjemahan ucapan, dan identifikasi bahasa.
Model urutan-ke-urutan Transformer dilatih dalam berbagai tugas pemrosesan ucapan, termasuk pengenalan ucapan multibahasa, terjemahan ucapan, identifikasi bahasa lisan, dan deteksi aktivitas suara. Tugas-tugas ini secara bersama-sama direpresentasikan sebagai rangkaian token yang akan diprediksi oleh decoder, sehingga memungkinkan satu model untuk menggantikan banyak tahapan saluran pemrosesan ucapan tradisional. Format pelatihan multitask menggunakan sekumpulan token khusus yang berfungsi sebagai penentu tugas atau target klasifikasi.
Kami menggunakan Python 3.9.9 dan PyTorch 1.10.1 untuk melatih dan menguji model kami, tetapi basis kodenya diharapkan kompatibel dengan Python 3.8-3.11 dan versi PyTorch terbaru. Basis kodenya juga bergantung pada beberapa paket Python, terutama tiktoken OpenAI untuk implementasi tokenizer yang cepat. Anda dapat mengunduh dan menginstal (atau memperbarui) rilis terbaru Whisper dengan perintah berikut:
pip install -U openai-whisper
Alternatifnya, perintah berikut akan menarik dan menginstal komit terbaru dari repositori ini, beserta dependensi Python-nya:
pip install git+https://github.com/openai/whisper.git
Untuk memperbarui paket ke versi terbaru repositori ini, jalankan:
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
Ini juga memerlukan alat baris perintah ffmpeg
untuk diinstal pada sistem Anda, yang tersedia di sebagian besar manajer paket:
# 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
Anda mungkin perlu memasang rust
juga, jika tiktoken tidak menyediakan roda yang sudah dibuat sebelumnya untuk platform Anda. Jika Anda melihat kesalahan instalasi selama perintah pip install
di atas, ikuti halaman Memulai untuk menginstal lingkungan pengembangan Rust. Selain itu, Anda mungkin perlu mengonfigurasi variabel lingkungan PATH
, misalnya export PATH="$HOME/.cargo/bin:$PATH"
. Jika instalasi gagal dengan No module named 'setuptools_rust'
, Anda perlu menginstal setuptools_rust
, misalnya dengan menjalankan:
pip install setuptools-rust
Ada enam ukuran model, empat dengan versi bahasa Inggris saja, menawarkan pengorbanan kecepatan dan akurasi. Di bawah ini adalah nama model yang tersedia dan perkiraan kebutuhan memori serta kecepatan inferensinya dibandingkan dengan model besar. Kecepatan relatif di bawah ini diukur dengan menyalin ucapan bahasa Inggris pada A100, dan kecepatan sebenarnya dapat bervariasi secara signifikan tergantung pada banyak faktor termasuk bahasa, kecepatan berbicara, dan perangkat keras yang tersedia.
Ukuran | Parameter | Model hanya dalam bahasa Inggris | Model multibahasa | VRAM yang diperlukan | Kecepatan relatif |
---|---|---|---|---|---|
kecil | 39 M | tiny.en | tiny | ~1 GB | ~10x |
basis | 74 M | base.en | base | ~1 GB | ~7x |
kecil | 244 M | small.en | small | ~2 GB | ~4x |
sedang | 769 M | medium.en | medium | ~5 GB | ~2x |
besar | 1550 M | T/A | large | ~10GB | 1x |
turbo | 809 M | T/A | turbo | ~6 GB | ~8x |
Model .en
untuk aplikasi berbahasa Inggris cenderung berperforma lebih baik, terutama untuk model tiny.en
dan base.en
Kami mengamati bahwa perbedaannya menjadi kurang signifikan untuk model small.en
dan medium.en
. Selain itu, model turbo
adalah versi large-v3
yang dioptimalkan yang menawarkan kecepatan transkripsi lebih cepat dengan penurunan akurasi minimal.
Performa Whisper sangat bervariasi bergantung pada bahasanya. Gambar di bawah menunjukkan perincian performa model large-v3
dan large-v2
berdasarkan bahasa, menggunakan WER (tingkat kesalahan kata) atau CER (tingkat kesalahan karakter, ditampilkan dalam huruf miring ) yang dievaluasi pada kumpulan data Common Voice 15 dan Fleurs. Metrik WER/CER tambahan yang sesuai dengan model dan kumpulan data lainnya dapat ditemukan di Lampiran D.1, D.2, dan D.4 makalah ini, serta skor BLEU (Bilingual Evaluation Understudy) untuk terjemahan di Lampiran D. 3.
Perintah berikut akan mentranskripsikan ucapan dalam file audio, menggunakan model turbo
:
whisper audio.flac audio.mp3 audio.wav --model turbo
Pengaturan default (yang memilih model turbo
) berfungsi dengan baik untuk menyalin bahasa Inggris. Untuk menyalin file audio yang berisi ucapan non-Inggris, Anda dapat menentukan bahasa menggunakan opsi --language
:
whisper japanese.wav --language Japanese
Menambahkan --task translate
akan menerjemahkan pidato ke dalam bahasa Inggris:
whisper japanese.wav --language Japanese --task translate
Jalankan yang berikut ini untuk melihat semua opsi yang tersedia:
whisper --help
Lihat tokenizer.py untuk daftar semua bahasa yang tersedia.
Transkripsi juga dapat dilakukan dengan Python:
import whisper
model = whisper . load_model ( "turbo" )
result = model . transcribe ( "audio.mp3" )
print ( result [ "text" ])
Secara internal, metode transcribe()
membaca seluruh file dan memproses audio dengan jendela geser 30 detik, melakukan prediksi urutan-ke-urutan autoregresif pada setiap jendela.
Di bawah ini adalah contoh penggunaan whisper.detect_language()
dan whisper.decode()
yang menyediakan akses tingkat rendah ke model.
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 )
Silakan gunakan ? Tampilkan dan beri tahu kategori di Diskusi untuk berbagi lebih banyak contoh penggunaan Whisper dan ekstensi pihak ketiga seperti demo web, integrasi dengan alat lain, port untuk platform berbeda, dll.
Kode Whisper dan bobot model dirilis di bawah Lisensi MIT. Lihat LISENSI untuk rincian lebih lanjut.