Saya membina aplikasi penterjemah yang berjalan sepenuhnya di telefon anda. Tiada awan. Tiada panggilan API. Tiada data yang meninggalkan peranti. 108 bahasa. Terjemahan suara, kamera, skrin, dan perbualan kumpulan luar talian melalui Bluetooth.
Semuanya bermula kerana saya tidak dapat menemui apa yang saya perlukan, dan ia berkembang menjadi sesuatu yang lebih besar daripada yang saya jangkakan.
Masalahnya
Saya tinggal di Hong Kong. Kehidupan seharian saya melibatkan Kantonis, Mandarin, Inggeris, dan kadang-kala Jepun. Keluarga pasangan saya bertutur dalam Kantonis. Kerja saya dalam Inggeris. Borang kerajaan dalam Cina Tradisional. Menu restoran di sekitar kawasan saya sering dalam Cina Ringkas atau Jepun.
Saya mencuba setiap penterjemah di pasaran:
Google Translate berfungsi dengan baik apabila dalam talian, tetapi kualiti luar talian merosot teruk. Dan ia menggabungkan Kantonis ke dalam "Cina," yang mana sesiapa yang bertutur Kantonis tahu ianya sama seperti menggabungkan Portugis ke dalam "Sepanyol." Kedua-duanya berkongsi aksara tetapi bukan sebutan, tatabahasa, atau kosa kata.
Pocketalk berharga $323 dan memerlukan internet untuk setiap terjemahan. Saya tidak boleh menggunakannya di dalam MTR (kereta api bawah tanah Hong Kong) di mana separuh stesen tidak mempunyai isyarat.
Apple Translate mempunyai reka bentuk yang cantik dan pemprosesan dalam peranti yang baik, tetapi hanya menyokong kira-kira 20 bahasa. Tiada Kantonis. Di sebuah bandar di mana 95% penduduknya bertutur Kantonis. Itu memberitahu anda segala-galanya tentang cara syarikat teknologi besar mengutamakan bahasa.
iTranslate meletakkan ciri-ciri utama di sebalik dinding bayaran $50/tahun. DeepL pula tidak menyokong suara atau kamera langsung.
Tiada satu pun yang mampu mengendalikan makan malam bersama keluarga pasangan saya di mana orang bertukar antara Kantonis, Mandarin, dan Inggeris di tengah-tengah perbualan. Tiada satu pun yang boleh menterjemahkan mesej suara Kantonis yang saya terima di WhatsApp. Tiada satu pun yang berfungsi dengan boleh dipercayai di kawasan dengan sambungan yang lemah.
Jadi saya mula membina.
Versi Pertama Sangat Teruk
Prototaip pertama adalah sebuah Flutter app dengan satu model ASR (Whisper, berjalan dalam peranti melalui sherpa-onnx) dan terjemahan NMT asas. Ia mengendalikan mungkin 15 bahasa. Pengecaman suara adalah lambat. Terjemahan adalah sederhana. Antara muka adalah hodoh.
Tetapi ia berfungsi luar talian. Dan fakta tunggal itu, bahawa saya boleh menterjemahkan ayat Kantonis ke Inggeris dalam kapal terbang tanpa WiFi, membuatkan saya terus meneruskan usaha.
Lubang Arnab Senibina
Setelah anda berkomitmen kepada AI dalam peranti, anda akan terperangkap dalam lubang arnab yang dalam.
ASR (pengecaman pertuturan): Satu model tidak sesuai untuk semua bahasa. Akhirnya saya menghantar tiga: Parakeet (dioptimumkan untuk Inggeris, dibundel), Whisper.cpp (pelbagai bahasa yang luas, boleh dimuat turun), dan Qwen3-ASR (dioptimumkan untuk CJK, boleh dimuat turun). Aplikasi ini memilih model terbaik secara automatik berdasarkan bahasa sumber.
Terjemahan: Model ML tradisional merangkumi 61 pasangan bahasa yang bersumber baik. Untuk 47 bahasa yang selebihnya (Yoruba, Amharic, Lao, Myanmar, dan lain-lain), LLM Gemma yang dikuantumkan dan berjalan secara tempatan mengendalikan terjemahan. Ini adalah kunci yang meningkatkan bilangan bahasa dari 61 kepada 108.
OCR Kamera: Dua enjin. ML Kit untuk pengecaman pantas. PaddleOCR untuk pengecaman menyeluruh skrip yang kompleks. iOS memerlukan penambahan pod khusus skrip secara manual kerana Apple hanya membundel model Latin secara lalai. Itu mengambil masa sehari untuk debug kerana kegagalannya sepenuhnya senyap.
Sembang kumpulan: Mesh Bluetooth yang menghubungkan sehingga 7 peranti. Setiap telefon mengendalikan ASR dan terjemahannya sendiri. Mesej disiarkan ke semua peranti. Tiada pelayan yang menyelaraskan apa-apa.
Pengurusan memori: Cabaran kejuruteraan sebenar. Tiga model ASR, model terjemahan, LLM, dan enjin OCR tidak boleh semuanya berada dalam RAM telefon serentak. Aplikasi ini mempunyai perancang belanjawan memori yang memuatkan dan mengeluarkan model berdasarkan apa yang pengguna lakukan pada masa itu.
Angka-angkanya
- Masa pembangunan: Kira-kira 18 bulan dari komit pertama hingga pelancaran App Store / Play Store
- Bahasa: 108 (61 ML tradisional + 47 AI melalui Gemma)
- Bahasa ASR: 30 dengan pengecaman pertuturan dalam peranti
- Bahasa OCR: 92 dengan pengecaman teks kamera
- Saiz aplikasi: ~150MB asas + model yang boleh dimuat turun
- Harga: Peringkat percuma dengan semua ciri teras. Premium pada $1.99/bulan atau $19.99/tahun untuk sembang kumpulan, transkripsi fail, dan ringkasan mesyuarat
- Saiz pasukan: 1 orang
Apa yang Saya Lakukan Dengan Betul
Privasi sebagai senibina, bukan dasar. "Kami tidak berkongsi data anda" adalah sebuah dasar. Ia boleh berubah. "Data anda tidak pernah meninggalkan telefon anda kerana tiada pelayan" adalah senibina. Ia tidak boleh berubah tanpa membina semula aplikasi. Pengguna memahami perbezaan ini secara intuitif.
Kantonis sebagai bahasa kelas pertama. Kebanyakan penterjemah merawat Kantonis sebagai Cina dengan loghat yang berbeza. Traverba mempunyai model ASR yang khusus untuk Kantonis. Ini sangat bergema dengan pengguna di Hong Kong dan Guangdong, yang sudah penat diperlakukan sebagai renungan selepas.
Peringkat percuma yang murah hati. Terjemahan suara, terjemahan kamera, terjemahan skrin, dan terjemahan teks semuanya percuma dan tanpa had. Dinding bayaran hanya menghadkan ciri sembang kumpulan, transkripsi fail, dan ringkasan mesyuarat. Ini penting kerana orang yang paling memerlukan terjemahan, pendatang, pelancong di tempat yang tidak dikenali, pelajar, sering tidak mampu membayar langganan premium.
Reka bentuk luar talian dahulu. Setiap ciri berfungsi tanpa internet. Internet bukan mod yang terdegradasi. Luar talian ADALAH modnya. Ini adalah cadangan nilai yang lebih kukuh daripada "juga berfungsi luar talian."
Apa yang Saya Lakukan Dengan Salah
Meremehkan peranti peringkat rendah. Pembangunan berlaku pada telefon terkemuka. Kali pertama saya menguji pada telefon dengan 3GB RAM, separuh ciri ranap. Pengurusan memori sepatutnya menjadi perkara pertama yang saya bina, bukan pembaikan semula.
Proses semakan iOS. Apple menolak penghantaran pertama kerana tidak melaksanakan App Tracking Transparency (ATT). Walaupun Traverba tidak menjejaki pengguna, SDK AdMob mencetuskan keperluan tersebut. Menyambungkan ATT dengan betul melalui Flutter dengan masa yang tepat (selepas pelancaran aplikasi, sebelum iklan dimulakan) mengambil beberapa lelaran.
Tidak melancarkan lebih awal. Saya menghabiskan berbulan-bulan menggilap ciri yang tidak diminta oleh pengguna sebelum melancarkan. Maklum balas yang saya terima selepas melancarkan adalah tentang perkara yang sama sekali berbeza daripada yang saya jangkakan. Hantar awal, dengar, ulang. Semua orang berkata begini. Saya masih terperangkap dalam jerat itu.
Peluang Pasaran
Pasaran terjemahan bernilai lebih $40 bilion dan terus berkembang. Tetapi ia dikuasai oleh dua ekstrem:
- Aplikasi awan percuma (Google Translate, Apple Translate) yang cukup baik untuk kebanyakan orang tetapi mengorbankan privasi dan kebolehpercayaan luar talian
- Peranti perkakasan mahal (Pocketalk $323, Timekettle $299, Vasco $350+) yang memerlukan internet dan menyelesaikan masalah yang telefon anda sudah boleh selesaikan
Jurang di tengah, aplikasi percuma/mampu milik dengan pemprosesan sepenuhnya dalam peranti yang benar-benar berfungsi, mengejutkan betapa kosongnya. DeepL hanya teks sahaja. iTranslate menghadkan ciri teras di sebalik dinding bayaran. Kebanyakan alat terjemahan AI hanya dalam awan.
AI dalam peranti telah melepasi ambang kualiti. Model sudah cukup baik. Telefon sudah cukup pantas. Rangka kerja (CoreML, ONNX, sherpa-onnx, LiteRT) sudah cukup matang. Bahagian yang hilang adalah seseorang yang membina lapisan produk di atasnya.
Apa Seterusnya
Peta jalan segera:
- Lebih banyak bahasa ASR. 30 adalah permulaan yang baik tetapi bahasa ekor panjang juga memerlukan pengecaman pertuturan.
- Terjemahan LLM yang dipertingkatkan. Gemma 2B adalah baik. Model yang lebih baru dan lebih kecil mungkin lebih baik. Senibina ini menyokong penukaran model tanpa mengubah aplikasi.
- Pengoptimuman iPad dan tablet. Aplikasi ini berfungsi pada tablet tetapi antara muka belum lagi dioptimumkan untuk skrin yang lebih besar.
- Pecutan Android Vulkan. iOS mempunyai Metal dan CoreML untuk inferens GPU. Kisah pecutan GPU Android (Vulkan melalui whisper.cpp) memerlukan lebih banyak kerja.
Visi yang lebih besar: sebuah dunia di mana bahasa bukan penghalang kepada hubungan manusia, dan di mana memecahkan penghalang itu tidak memerlukan anda menyerahkan perbualan peribadi anda kepada pelayan syarikat teknologi.
Jika anda sudah sampai sejauh ini, cuba aplikasinya. Ia percuma. Saya membaca setiap maklum balas.
Traverba tersedia di Google Play dan App Store. Ketahui lebih lanjut di traverba.com. Soalan, maklum balas, atau permintaan ciri: [email protected]