BerandaBlog → Cara meningkatkan akurasi transkripsi: delapan langkah praktis

Cara meningkatkan akurasi transkripsi: delapan langkah praktis

Diterbitkan 2026-08-18 · 7 menit baca

«Pengenalannya jelek» bukan sebuah diagnosis. Pada hampir semua kasus nyata, masalah kualitas berasal dari segelintir sebab yang konkret — dan sebagian besar bisa diperbaiki dari sisi Anda, sebelum audionya meninggalkan server. Berikut daftarnya, dalam urutan yang paling layak dicoba.

Pertama: ukur, jangan menebak

Tanpa angka, setiap perubahan hanya soal selera. Ambil 20–30 rekaman yang mirip lalu lintas produksi Anda, tuliskan apa yang benar-benar diucapkan, lalu hitung tingkat galat kata: penggantian ditambah penghilangan ditambah penyisipan, dibagi jumlah kata yang diucapkan.

pip install jiwer
from jiwer import wer

skor = wer(teks_acuan, teks_hasil)
print(f"WER: {skor:.1%}")

Dua hal lebih penting daripada nilai mutlaknya. Pertama, ukur pada audio Anda sendiri, bukan pada tolok ukur publik. Kedua, timbang berdasarkan yang Anda pedulikan: kalau bisnis butuh nomor pesanan, WER 5% dengan semua angka salah adalah kegagalan, dan WER 15% dengan angka bersih adalah keberhasilan.

Langkah 1. Beri model audio yang bersih

Model pengenalan bekerja secara internal pada mono 16 kHz. Apa pun di atas itu dibuang, dan apa pun di bawah itu hilang selamanya:

ffmpeg -i masukan.wav -ac 1 -ar 16000 -b:a 64k bersih.mp3

Peredaman derau yang agresif adalah pengecualian yang biasanya menjadi bumerang: penyaring keras menggerogoti konsonan dan pengenalan justru memburuk. Kalau bisa, perbaiki derau di mikrofonnya.

Langkah 2. Sebutkan bahasanya

Deteksi otomatis hampir selalu benar pada rekaman panjang dan jauh lebih sering meleset pada potongan tiga detik. Kalau arusnya satu bahasa, katakan saja:

r = client.audio.transcriptions.create(
    model="whisper-1", file=f, language="id",
)

Ini menghapus satu kelas kegagalan utuh, saat frasa pendek dikenali sebagai bahasa lain dan kembali sebagai omong kosong. Prosesnya juga sedikit lebih cepat karena tahap deteksi dilewati.

Langkah 3. Masukkan kosakata lewat prompt

Parameter dengan nilai tertinggi, sekaligus yang paling sering diabaikan. prompt tidak muncul di respons — ia mencondongkan pengenalan ke arah kata-kata yang Anda sebutkan:

r = client.audio.transcriptions.create(
    model="whisper-1", file=f,
    prompt="Produk: Kestrel, Kestrel Pro, Hawknest. Agen: Duarte, Wijaya, Ng.",
)

Buat pendek dan spesifik. Daftar 20–40 istilah yang benar-benar muncul akan bekerja; satu paragraf deskripsi umum tidak berpengaruh. Ganti daftarnya sesuai konteks: antrean dukungan soal tagihan butuh istilah yang berbeda dari antrean soal perangkat keras.

Prompt juga membawa gaya. Kalau transkrip Anda perlu tetap bertanda baca dan berhuruf kapital, tulis petunjuknya sebagai kalimat lengkap yang rapi — model cenderung melanjutkan dengan gaya yang diberikan.

Langkah 4. Potong keheningannya

Rentang hening yang panjang adalah asal-usul halusinasi: tidak ada yang bisa dikenali, dan model bisa menghasilkan teks pengisi. Keheningan juga memakan biaya, karena penagihan dihitung per menit audio.

ffmpeg -i masukan.mp3 -af silenceremove=start_periods=1:stop_periods=-1:stop_duration=2:stop_threshold=-45dB keluaran.mp3

Hati-hati dengan ambangnya: memotong terlalu agresif ikut membuang ucapan yang lirih. Periksa hasilnya pada beberapa berkas sebelum memasangnya di pipeline.

Langkah 5. Potong di jeda, bukan di jam

Rekaman panjang tetap harus dipotong agar muat dalam batas 25 MB. Letak potongannya penting: batas di tengah kalimat menghilangkan kata di kedua sisinya.

# mencari jeda alih-alih memotong pada menit tetap
ffmpeg -i panjang.mp3 -af silencedetect=noise=-40dB:d=0.7 -f null - 2> jeda.txt

Gunakan jeda yang terdeteksi sebagai calon titik potong, dan jaga tiap bagian pada kisaran 5–20 menit. Bagian yang lebih pendek kehilangan konteks di antaranya; yang jauh lebih panjang tidak memberi manfaat tambahan.

Langkah 6. Minta format yang membawa keyakinan

verbose_json mengembalikan bukan hanya teks, melainkan juga segmen serta bahasa terdeteksi beserta probabilitasnya. Itu bahan mentah untuk kendali mutu otomatis:

r = client.audio.transcriptions.create(
    model="whisper-1", file=f, response_format="verbose_json",
)

if r.language_probability < 0.6:
    antrekan_untuk_ditinjau(r)   # rekaman mencurigakan, periksa manual

Mengarahkan beberapa persen yang meragukan ke antrean tinjauan manusia menaikkan kualitas seluruh pipeline jauh lebih murah daripada memeras satu persen terakhir dari pengenalannya sendiri.

Langkah 7. Perbaiki teksnya, bukan mengenali ulang

Sebagian galat bersifat sistematis: nama produk yang sama selalu salah dengan cara yang sama. Kamus penggantian menyelesaikannya dalam satu baris dan tidak berbiaya:

PERBAIKAN = {"kastrel": "Kestrel", "hok nest": "Hawknest"}

for salah, benar in PERBAIKAN.items():
    teks = teks.replace(salah, benar)

Susun kamusnya dari galat nyata yang Anda lihat, bukan dari bayangan. Sepuluh entri yang terkumpul selama seminggu lalu lintas produksi biasanya menghapus lebih banyak galat kasatmata daripada penyetelan parameter apa pun.

Langkah 8. Tangani keluaran kosong dan karangan

Dua mode kegagalan layak ditangani secara eksplisit di kode: hasil kosong, dan hasil yang terlalu generik. Penyaring halusinasi memotong kasus klasik seperti teks penutup dan «terima kasih sudah menonton», jadi string kosong memang berarti tidak ada ucapan.

teks = r.text.strip()
if not teks:
    return None            # sunyi, bukan galat — jangan diulang

Mengulang rekaman kosong hanya menghabiskan menit. Catat, lewati, lanjutkan.

Yang tidak akan membantu

Coba dengan rekaman Anda sendiri. Pendaftaran memakan waktu satu menit, dan menit gratisnya cukup untuk menilai kualitasnya.

Ambil kunci API gratis

Pertanyaan yang sering diajukan

Tingkat galat kata berapa yang wajar?

Pada ucapan bersih dalam bahasa yang didukung baik, angka satu digit itu normal. Audio telepon, derau latar, suara saling tumpang tindih, dan aksen kuat menaikkannya. Ukur pada rekaman Anda sendiri — tolok ukur publik tidak mengatakan apa pun tentang lalu lintas Anda.

Apakah parameter prompt benar-benar mengubah sesuatu?

Ya, dan itu perbaikan termurah yang tersedia. Daftar pendek berisi nama, produk, dan kode yang muncul di audio Anda menurunkan galat secara nyata justru pada kata-kata yang paling penting.

Sebaiknya menyebut bahasanya atau membiarkan terdeteksi?

Sebutkan kalau arusnya satu bahasa, terutama untuk potongan pendek. Biarkan deteksi menyala kalau pesan memang datang dalam bahasa yang berbeda-beda.

Perlukah derau dibersihkan sebelum dikirim?

Normalisasi ringan membantu; peredaman derau agresif biasanya merugikan karena merusak konsonan. Kalau deraunya parah, memperbaiki tata cara merekam mengalahkan penyaring apa pun.

Seberapa besar sebaiknya potongan rekaman panjang?

Lima sampai dua puluh menit, dipotong di jeda dan bukan pada selang tetap. Itu menjaga kalimat tetap utuh dan tetap di bawah batas 25 MB per permintaan.

Bacaan terkait