Beranda → Blog → Cara meningkatkan akurasi transkripsi: delapan langkah praktis
Cara meningkatkan akurasi transkripsi: delapan langkah praktis
«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:
- Jangan mengompresi dua kali. Berkas yang melewati mp3 ke wav lalu mp3 lagi membawa artefak dari kedua tahap.
- Jangan menaikkan laju cuplik. Mengubah audio telepon 8 kHz menjadi 44 kHz menambah byte, bukan informasi.
- Gabungkan ke mono kalau kedua kanal membawa percakapan yang sama; pertahankan kanal terpisah kalau isinya pembicara berbeda.
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
- Menaikkan laju cuplik audio yang direkam pada 8 kHz. Informasinya sudah tidak ada.
- Mengirim berkas video alih-alih jalur audionya. Gambarnya tidak dipakai.
- Prompt yang sangat panjang. Hanya bagian awalnya yang diperhitungkan, dan dinding teks justru mengencerkan istilah yang penting.
- Mengulang berkas yang sama berharap hasil yang lebih baik. Hasilnya stabil; ubah masukan atau parameternya.
Coba dengan rekaman Anda sendiri. Pendaftaran memakan waktu satu menit, dan menit gratisnya cukup untuk menilai kualitasnya.
Ambil kunci API gratisPertanyaan 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
- Cara mengubah rekaman telepon menjadi teks — Panduan langkah demi langkah mengubah rekaman percakapan telepon menjadi teks lewat API dalam hitungan menit. Lengkap dengan contoh Python, C#, dan daftar galat.
- Transkripsi pesan suara: WhatsApp, Telegram, dan lainnya — Cara mengubah pesan suara menjadi teks secara otomatis: format ogg/opus, menangani rekaman pendek, dan contoh kode untuk bot layanan pelanggan.
- Cara mentranskrip rekaman rapat dan mendapat notulen yang berguna — Ubah rekaman Zoom, Teams, dan Google Meet menjadi teks yang bisa dicari serta notulen terstruktur: di mana berkasnya, cara mentranskrip, dan cara menarik keputusannya.