Deteksi Otomatis Terus Salah Tebak: Kunci Bahasamu

Dikte terus mendarat dalam bahasa yang salah? Deteksi otomatis memang berayun-ayun pada ucapan bilingual. Kunci bahasamu sekali dan ia tetap terkunci.

Teodor Deleanu10 Juli 20267 menit baca

Kalau kamu mendikte dalam lebih dari satu bahasa, kamu pernah melihat kegagalannya. Kamu mengucapkan satu kalimat dalam bahasa Rumania dan transkripnya kembali sebagai bahasa Inggris yang dirusak secara fonetis โ€” kata-kata nyata, tapi tidak satu pun milikmu. Atau ia berbalik di tengah kalimat: separuh pertama dalam bahasa yang benar, separuh kedua dalam sesuatu yang diputuskan model bahwa kamu telah beralih ke sana. Atau, favorit pribadi saya, sup abjad campuran โ€” karakter Latin dengan beberapa Kiril ditaburkan di dalamnya, seolah modelnya melakukan lindung nilai huruf demi huruf.

Ini bukan keluhan tentang satu produk. Ini mode kegagalan yang bisa diprediksi dari deteksi bahasa otomatis, termasuk default Keebye yang dituning untuk bahasa Inggris. Ia menimpa penutur dengan aksen dalam bahasa Inggris dan siapa pun yang berpindah-pindah bahasa sepanjang hari. Seorang developer bilingual yang Slack-nya berbahasa Polandia dan pesan commit-nya berbahasa Inggris memberi deteksi otomatis persis sinyal campuran yang paling buruk ia tangani.

Separuh kedua keluhannya lebih senyap tapi sama nyatanya: saat pengaturan bahasa memang ada, ia sering terkubur. Tiga menu dalamnya, di balik pemilih engine, melewati sebuah toggle yang namanya tidak menyebut bahasa sama sekali. Kalau kamu berganti bahasa dua puluh kali sehari, pengaturan yang terkubur secara fungsional bukan pengaturan.

Saya ingin menjelaskan kenapa ayunan itu terjadi โ€” memakai kisah perang produk saya sendiri, karena Keebye punya masalah ini sebelum ia punya perbaikannya โ€” lalu menunjukkan seperti apa solusi yang sesungguhnya.

Kenapa deteksi otomatis berayun-ayun (dan kenapa itu bukan persis sebuah bug)

Inilah mekanika jujurnya. Model suara modern melakukan identifikasi bahasa secara diam-diam, sebagai bagian dari decoding. Model mendengarkan, membentuk tebakan internal tentang bahasa apa yang ia dengar, lalu men-decode terhadap tebakan itu. Saat audionya bersih, tanpa aksen, dan satu bahasa, ini bekerja begitu baik sampai kamu tidak pernah memikirkannya.

Sekarang suapi ia dengan ucapan nyata. Sebuah aksen menggeser vokal ke arah fonem bahasa lain. Sebuah kalimat memuat tiga kata serapan bahasa Inggris โ€” setiap percakapan teknis begitu. Ada anak kecil di latar belakang, atau kamu sedang memakai mikrofon laptop. Masing-masing hal ini membuat tebakan bahasa internal model jadi kurang yakin, dan tebakan berkeyakinan rendah bisa berbalik antar frame. Saat ia berbalik, decode-nya ikut berbalik, dan kamu mendapat transkrip yang berganti bahasa di tengah pikiran.

Bagian pentingnya: di kebanyakan alat, tidak ada apa pun yang menambatkan tebakan itu. Modelnya memutuskan, diam-diam, per ucapan, dan kamu tidak punya penimpaan. Itu bukan bug di satu aplikasi mana pun โ€” itulah hakikat deteksi otomatis yang senyap. Sebuah model membuat keputusan penilaian yang tidak bisa kamu koreksi.

Saya tahu ini dengan intim karena engine default Keebye punya properti persis itu. Parakeet, default kami yang dituning untuk bahasa Inggris, mengabaikan petunjuk bahasa apa pun di lapisan decoding โ€” kamu tidak bisa memberitahunya apa yang akan kamu ucapkan. Pada bahasa Inggris yang jernih ia luar biasa, dan karena itulah ia jadi default. Pada audio yang tidak jernih ia bisa berayun antar bahasa seperti semua yang lain di kategori ini. Saya menceritakan ini tentang produk saya sendiri lebih dulu, karena perbaikannya baru masuk akal setelah kamu menerima bahwa masalahnya tinggal di arsitekturnya, bukan pada kecerobohan pesaing tertentu.

Apa sebenarnya yang dilakukan mengunci sebuah bahasa?

Perbaikannya adalah berhenti meminta model menebak. Keebye menyertakan engine on-device kedua โ€” Canary 1B v2 dari NVIDIA, dikuantisasi ke int8 โ€” yang mencakup tepat 25 bahasa: Bulgaria, Kroasia, Ceko, Denmark, Belanda, Inggris, Estonia, Finlandia, Prancis, Jerman, Yunani, Hungaria, Italia, Latvia, Lituania, Malta, Polandia, Portugis, Rumania, Slovakia, Slovenia, Spanyol, Swedia, Rusia, dan Ukraina. Tidak seperti engine default-nya, Canary menerima instruksi bahasa dan mematuhinya.

Keebye memaparkan itu sebagai kunci: pengaturan bahasa eksplisit yang diteruskan ke engine Canary untuk setiap ucapan. Kunci bahasa Rumania dan decoder memakai bahasa Rumania alih-alih membuat pilihan bahasa otomatis. Pengenalannya masih bisa salah, terutama di sekitar kata serapan dan audio berisik, tapi pilihan bahasanya tidak lagi berupa tebakan yang tak terperiksa.

Pengaturannya dibaca langsung, per dikte. Ubah dan tahan-lalu-dikte berikutnya memakai bahasa baru itu tanpa perlu memulai ulang aplikasi. Itu lebih penting daripada kedengarannya: sebuah kendali bahasa jauh lebih berguna saat mengubahnya tidak memutus pekerjaan.

Dan karena Canary berjalan on-device seperti semua yang lain di Keebye, kuncinya tidak mengorbankan cerita privasinya. Modelnya sekitar 1,3 GB, diunduh sekali; setelah itu bahasa Rumania-mu, bahasa Polandia-mu, bahasa Ukraina-mu tidak pernah meninggalkan mesin. (Kenapa kami menganggap dikte multibahasa lokal itu penting sama sekali adalah tulisan tersendiri โ€” dikte untuk developer tidak seharusnya hanya bahasa Inggris. Yang ini adalah sekuel praktisnya: tulisan itu memperjuangkan bahasanya, yang ini soal membuatnya benar-benar bisa dipakai.)

Dua klik, bukan tiga menu dalamnya

Kunci yang tidak bisa kamu jangkau adalah kunci yang tidak akan kamu pakai, jadi sakelarnya tinggal di tray. Ikon menu bar Keebye punya menu "Dictation Language" dengan daftar pendek terkurasi berisi 11 bahasa โ€” Inggris, Rumania, Prancis, Jerman, Spanyol, Italia, Portugis, Belanda, Polandia, Rusia, Ukraina. Dua klik dari aplikasi mana pun: klik tray-nya, klik bahasanya. Kamu tidak membuka Settings, kamu tidak meninggalkan jendela tempatmu bekerja.

Daftar lengkap 25 bahasa tinggal di Settings untuk bahasa di luar daftar pendek itu. Tapi daftar pendeknya menutup realitas harian sebagian besar kerja bilingual: kamu menulis ke timmu dalam satu bahasa dan ke klien atau agent AI dalam bahasa lain, dan kamu butuh perpindahannya tidak berbiaya apa pun.

Ada satu opsi lagi yang layak diketahui, karena ia mengubah sama sekali cara sebagian orang memakai kuncinya: toggle terjemahkan-ke-bahasa-Inggris. Ucapkan bahasamu, bahasa Inggris mendarat di kursor โ€” engine yang sama, eksekusi on-device yang sama. Kalau monolog batinmu berjalan dalam bahasa Rumania tapi output-mu harus berbahasa Inggris (pesan commit, prompt ke agent coding, balasan ke tim internasional), ini meruntuhkan langkah penerjemahan yang tadinya kamu lakukan di kepala. Saya memakainya lebih sering daripada yang saya duga.

Apa yang dibebankan kunci itu padamu

25 bahasa adalah 25 bahasa. Alat dikte cloud mencantumkan jauh lebih banyak, karena mengirim audio ke model besar di sisi server adalah cara murah menambah bahasa. Itulah kompromi sesungguhnya dari on-device: model yang muat di Mac kamu menutup lebih sedikit bagian dunia daripada model yang mengisi sebuah pusat data. Kalau bahasamu tidak ada di daftar 25 itu, engine multibahasa Keebye belum menutupmu hari ini, dan saya lebih suka mengatakannya daripada membulatkannya ke atas.

Kunci berarti kunci. Ini sisi lain dari determinisme, dan saya ingin terus terang soal itu: kalau kamu mengunci bahasa Rumania lalu berbicara bahasa Inggris, Keebye akan dengan setia salah men-decode bahasa Inggrismu sebagai bahasa Rumania sampai kamu berganti. Engine-nya melakukan persis apa yang kamu perintahkan. Seluruh daya tarik deteksi otomatis adalah kamu tidak perlu memikirkan hal ini โ€” kuncinya menukar kemudahan itu dengan keterduga-an. Menurut pengalaman saya pertukarannya sepadan, karena tebakan salah yang tidak bisa kamu kendalikan lebih buruk daripada pengaturan salah yang bisa kamu perbaiki dalam dua klik. Tapi ia tetap sebuah pertukaran, bukan makan siang gratis.

Daftar pendek di tray berisi 11 bahasa, bukan 25. Kalau pasangan harianmu mencakup, katakanlah, bahasa Finlandia atau Yunani, kamu akan lewat Settings untuk salah satu sisinya. Kurasi berarti ada bahasa orang lain yang tidak masuk menu cepat.

Ke mana keluhan ini bermuara

Keluhan di level kategori โ€” "dikte saya terus keluar dalam bahasa yang salah" โ€” sebenarnya adalah keluhan tentang keputusan yang senyap. Modelnya menebak, tebakannya salah, dan tidak ada cara memberitahunya sebaliknya. Setiap perbaikan yang mempertahankan tebakannya (deteksi lebih baik, jendela audio lebih panjang, ambang keyakinan) hanya membuat kegagalannya lebih jarang dan lebih aneh. Perbaikan yang benar-benar mengakhiri keluhan itu adalah mengembalikan keputusannya kepada pengguna.

Kalau kamu sedang mengalami ini dengan alat lain, halaman perbandingan kami jujur soal di mana setiap alat cocok โ€” Keebye vs Superwhisper dan Keebye vs Wispr Flow sama-sama membahas pertanyaan bahasa di antara yang lain. Untuk mencoba kuncinya sendiri, mulai uji coba gratismu di bawah, ulangi kalimat bahasa Rumania atau Polandia dari awal artikel ini, dan lihat seberapa banyak dari ayunan itu yang datang dari tebakan tak terperiksa alih-alih dari aksenmu.

Kunci bahasa yang benar-benar kamu pakai

Mulai uji coba gratismu dan ulangi satu balasan dalam bahasa ibumu yang sebelumnya dirusak deteksi otomatis.

Start free trial

Early access: we'll email you the moment the macOS build is ready โ€” your 14 days start when you first sign in from the app.

Lanjutkan membaca