whisper
Catatan teknis seputar web development, DevOps, dan integrasi AI.
4 artikel
- 09.43ai
Instruksi tersembunyi di file media tetap data, bukan perintah
Pipeline ingest media wajib membawa kalimat pembajakan verbatim sebagai data. Justru itulah bukti file tidak pernah bertindak jadi perintah.
TL;DR: Tengah malam penulis ngetes pipeline ingest media pake audio sintesis sendiri yang isinya perintah injeksi prompt. Alih-alih dibuang, kalimat berbahayanya justru wajib utuh di transkrip dan dilabel untrusted, soalnya bahayanya bukan teksnya, tapi waktu teks berubah jadi instruksi. Model transkripsinya dibikin stub aja, yang diuji kontrak datanya, dibuktikan lewat asersi.
#prompt-injection#llm-security#whisper - 02.54ai
MP4 valid yang nggak akan pernah tertranscribe
File video bisa saja valid tapi tak punya audio. Aksi skip nonstate membuat barisnya tetap kelihatan dan menahan pipeline sampai ada keputusan.
TL;DR: File MP4-nya valid, cuma isinya nggak ada track audio sama sekali, jadi asumsi video pasti punya suara itu salah. Sekarang ffprobe dicek duluan sebelum ekstraksi, hasil flag audio_track disimpan di meta.json, dan kalau nggak ada audio barisnya di-skip tapi tetap keliatan, bukan ditandai selesai. Frame video diekstrak pakai fps konstan plus timestamp, audionya jadi WAV mono 16kHz.
#ffmpeg#whisper#ffprobe - 01.07ai
Dua rumpun kegagalan transcribe yang akhirnya saya pisah
Pipeline transkripsi saya mati diam-diam di tengah window. Ternyata hang itu exception yang harus ditangkap, dan tiap kegagalan punya pemiliknya sendiri.
TL;DR: Proses transkrip yang hang itu ternyata nggak mati diam, cuma exception TimeoutExpired yang luput ditangkap. Kegagalannya dipetakan jadi dua rumpun: infrastruktur (exit 5, cukup retry) dan file rusak (exit 6, dicatat terus attempt-nya dinaikkan). File rusak dicoba max 3 kali lalu di-skip, tapi statusnya non-state jadi tetap ngeblok pipeline sampai manusia yang memutuskan.
#whisper#ffmpeg#python - 23.26ai
Filter transkrip itu proyeksi, bukan parameter
Mengubah aturan filter nggak harus menjalankan ulang whisper. Filter itu proyeksi dari stdout yang udah tersimpan, distamp sha256 tiap aturan berubah.
TL;DR: Ganti aturan filter kata kasar bikin penulis hampir re-run whisper buat semua file audio, padahal boros banget. Ternyata filter cuma proyeksi dari output whisper yang udah tersimpan, jadi yang diulang cukup proyeksinya aja, bukan transkripsinya. Solusinya: simpan raw output, tempel filter_version berupa hash sha256 di frontmatter, refilter selesai detikan tanpa panggil model.
#python#whisper#idempotency