OpenAI Whisper - Tutorial Lengkap Speech-to-Text
Daftar Isi
Pendahuluan
OpenAI Whisper adalah model pengenalan suara serbaguna yang dilatih dengan 680.000 jam data terawasi multibahasa dan multitugas yang dikumpulkan dari web. Model ini mampu melakukan pengenalan suara multibahasa, penerjemahan suara, dan identifikasi bahasa. Tutorial ini akan memandu Anda dari transkripsi dasar hingga deployment tingkat produksi menggunakan FastAPI.
Whisper sangat cocok untuk berbagai skenario penggunaan di Indonesia, mulai dari transkripsi rapat, pembuatan subtitle video YouTube, hingga sistem customer service otomatis yang memerlukan konversi suara ke teks.
Prasyarat
- Python 3.9 atau lebih tinggi
- GPU yang kompatibel dengan CUDA (disarankan untuk model yang lebih besar)
- Pemahaman dasar tentang Python dan konsep machine learning
Pasang dependensi utama:
pip install openai-whisper
pip install faster-whisper
pip install fastapi uvicorn python-multipart
pip install torch torchaudio
pip install datasets transformers
Memahami Ukuran Model Whisper
Whisper hadir dalam beberapa ukuran model, masing-masing menawarkan pertukaran antara kecepatan dan akurasi:
| Model | Parameter | Khusus Inggris | Multibahasa | VRAM Diperlukan | Kecepatan Relatif |
|--------|-----------|----------------|-------------|-----------------|-------------------|
| tiny | 39 M | tiny.en | tiny | ~1 GB | ~32x |
| base | 74 M | base.en | base | ~1 GB | ~16x |
| small | 244 M | small.en | small | ~2 GB | ~6x |
| medium | 769 M | medium.en | medium | ~5 GB | ~2x |
| large | 1550 M | N/A | large-v3 | ~10 GB | 1x |
Pemilihan model yang tepat bergantung pada kebutuhan Anda:
import whisper
Untuk prototyping cepat atau lingkungan dengan sumber daya terbatas
model = whisper.loadmodel("tiny")
Untuk produksi dengan akurasi yang baik
model = whisper.loadmodel("medium")
Untuk akurasi terbaik (memerlukan GPU dengan VRAM 10GB+)
model = whisper.loadmodel("large-v3")
Untuk transkripsi Bahasa Indonesia, gunakan model multibahasa (tanpa akhiran .en) karena model khusus Inggris tidak mendukung bahasa lain.
Transkripsi Audio Dasar
Penggunaan paling sederhana adalah mentranskripsi file audio menjadi teks:
import whisper
model = whisper.loadmodel("medium")
Transkripsi dasar
result = model.transcribe("rekamanaudio.mp3")
print(result["text"])
Akses informasi segmen secara detail
for segment in result["segments"]:
print(f"[{segment['start']:.2f}d -> {segment['end']:.2f}d] {segment['text']}")
Anda dapat menyesuaikan perilaku transkripsi dengan berbagai parameter:
result = model.transcribe(
"rekamanaudio.mp3",
language="id", # Paksa bahasa Indonesia (lewati deteksi)
temperature=0.0, # Lebih rendah = lebih deterministik
wordtimestamps=True, # Dapatkan timestamp tingkat kata
fp16=True, # Gunakan presisi setengah (khusus GPU)
beamsize=5, # Pencarian beam untuk akurasi lebih baik
bestof=5, # Jumlah kandidat saat sampling
nospeechthreshold=0.6, # Ambang batas untuk menyaring segmen sunyi
conditiononprevioustext=True, # Gunakan konteks dari segmen sebelumnya
initialprompt="Rapat teknis tentang model machine learning."
)