J'ai créé une application de traduction qui fonctionne entièrement sur votre téléphone. Pas de cloud. Pas d'appels API. Aucune donnée ne quitte l'appareil. 108 langues. Traduction vocale, par caméra, d'écran, et conversations de groupe hors ligne via Bluetooth.
Tout a commencé parce que je ne trouvais pas ce dont j'avais besoin, et le projet est devenu bien plus grand que prévu.
Le problème
Je vis à Hong Kong. Mon quotidien implique le cantonais, le mandarin, l'anglais, et parfois le japonais. La famille de ma partenaire parle cantonais. Mon travail se fait en anglais. Les formulaires administratifs sont en chinois traditionnel. Les menus des restaurants du quartier sont souvent en chinois simplifié ou en japonais.
J'ai essayé tous les traducteurs disponibles sur le marché :
Google Translate fonctionne bien en ligne, mais la qualité chute drastiquement hors ligne. Et il regroupe le cantonais sous l'étiquette « chinois », ce que quiconque parle cantonais comprendra comme si l'on regroupait le portugais sous « espagnol ». Ces langues partagent des caractères, mais pas la prononciation, la grammaire ni le vocabulaire.
Pocketalk coûte 323 $ et nécessite une connexion internet pour chaque traduction. Impossible de l'utiliser dans le MTR (le métro de Hong Kong) où la moitié des stations n'ont pas de signal.
Apple Translate propose un design soigné et un traitement on-device efficace, mais ne prend en charge qu'une vingtaine de langues. Pas de cantonais. Dans une ville où 95 % de la population parle cantonais. Cela dit tout sur la façon dont les grandes entreprises technologiques hiérarchisent les langues.
iTranslate place les fonctions essentielles derrière un abonnement à 50 $/an. DeepL ne fait même pas la traduction vocale ou par caméra.
Aucun d'eux ne gérait un dîner avec la famille de ma partenaire où les gens passent du cantonais au mandarin et à l'anglais en plein milieu d'une conversation. Aucun ne pouvait transcrire les messages vocaux en cantonais que je reçois sur WhatsApp. Aucun ne fonctionnait de manière fiable dans les zones à mauvaise connectivité.
Alors j'ai commencé à construire.
La première version était mauvaise
Le premier prototype était une application Flutter avec un seul modèle ASR (Whisper, fonctionnant on-device via sherpa-onnx) et une traduction NMT basique. Il gérait peut-être 15 langues. La reconnaissance vocale était lente. Les traductions étaient médiocres. L'interface était moche.
Mais elle fonctionnait hors ligne. Et ce seul fait — pouvoir traduire une phrase en cantonais vers l'anglais dans un avion sans WiFi — m'a donné la motivation de continuer.
Le terrier de l'architecture
Une fois engagé sur l'IA on-device, on tombe dans un terrier très profond.
ASR (reconnaissance vocale) : Un seul modèle ne convient pas à toutes les langues. J'ai fini par en intégrer trois : Parakeet (optimisé pour l'anglais, inclus d'office), Whisper.cpp (multilingue étendu, téléchargeable), et Qwen3-ASR (optimisé pour les langues CJK, téléchargeable). L'application sélectionne automatiquement le meilleur modèle en fonction de la langue source.
Traduction : Les modèles ML traditionnels couvrent 61 paires de langues bien dotées en ressources. Pour les 47 langues restantes (yoruba, amharique, laotien, birman, et d'autres), un LLM Gemma quantifié qui tourne localement prend en charge la traduction. C'est cette avancée qui a fait passer le compteur de langues de 61 à 108.
OCR par caméra : Deux moteurs. ML Kit pour la reconnaissance rapide. PaddleOCR pour la reconnaissance approfondie des scripts complexes. Sur iOS, il a fallu ajouter manuellement des pods spécifiques à chaque script, car Apple n'intègre par défaut que le modèle latin. Il m'a fallu une journée entière pour déboguer ce problème, car l'échec est totalement silencieux.
Chat de groupe : Un réseau maillé Bluetooth connectant jusqu'à 7 appareils. Chaque téléphone gère son propre ASR et sa propre traduction. Les messages sont diffusés à tous les appareils. Aucun serveur ne coordonne quoi que ce soit.
Gestion de la mémoire : Le vrai défi d'ingénierie. Trois modèles ASR, des modèles de traduction, un LLM et des moteurs OCR ne peuvent pas tous coexister en RAM simultanément. L'application intègre un planificateur de budget mémoire qui charge et décharge les modèles en fonction de ce que l'utilisateur fait à l'instant T.
Les chiffres
- Durée de développement : Environ 18 mois du premier commit au lancement sur l'App Store / Play Store
- Langues : 108 (61 ML traditionnel + 47 IA via Gemma)
- Langues ASR : 30 avec reconnaissance vocale on-device
- Langues OCR : 92 avec reconnaissance de texte par caméra
- Taille de l'application : ~150 Mo de base + modèles téléchargeables
- Tarification : Niveau gratuit avec toutes les fonctionnalités principales. Premium à 1,99 $/mois ou 19,99 $/an pour le chat de groupe, la transcription de fichiers et les résumés de réunion
- Taille de l'équipe : 1 personne
Ce que j'ai bien fait
La confidentialité comme architecture, pas comme politique. « Nous ne partageons pas vos données » est une politique. Cela peut changer. « Vos données ne quittent jamais votre téléphone parce qu'il n'y a pas de serveur » est une architecture. Cela ne peut pas changer sans reconstruire l'application. Les utilisateurs comprennent intuitivement cette distinction.
Le cantonais comme langue de première classe. La plupart des traducteurs traitent le cantonais comme du chinois avec un accent différent. Traverba dispose d'un modèle ASR dédié au cantonais. Cela a fortement résonné auprès des utilisateurs de Hong Kong et du Guangdong, fatigués d'être traités comme une réflexion après coup.
Le niveau gratuit est généreux. La traduction vocale, par caméra, d'écran et de texte sont toutes gratuites et illimitées. Le paywall ne concerne que le chat de groupe, la transcription de fichiers et les résumés de réunion. C'est important, car les personnes qui ont le plus besoin de traduction — immigrés, voyageurs en territoire inconnu, étudiants — ne peuvent souvent pas se permettre des abonnements premium.
Conception offline-first. Chaque fonctionnalité fonctionne sans internet. Internet n'est pas un mode dégradé. Le hors ligne EST le mode. C'est une proposition de valeur plus forte que « fonctionne aussi hors ligne ».
Ce que j'ai mal fait
Sous-estimer les appareils bas de gamme. Le développement s'est fait sur des téléphones haut de gamme. La première fois que j'ai testé sur un téléphone avec 3 Go de RAM, la moitié des fonctionnalités plantait. La gestion de la mémoire aurait dû être la première chose que j'ai construite, pas un ajout tardif.
Le processus de validation iOS. Apple a rejeté la première soumission pour ne pas avoir implémenté App Tracking Transparency (ATT). Bien que Traverba ne suive pas les utilisateurs, le SDK AdMob déclenche l'exigence. Câbler ATT correctement dans Flutter avec le bon timing (après le lancement de l'application, avant l'initialisation des publicités) a nécessité plusieurs itérations.
Ne pas avoir lancé plus tôt. J'ai passé des mois à peaufiner des fonctionnalités que les utilisateurs n'avaient pas demandées avant de lancer. Les retours que j'ai reçus après le lancement portaient sur des choses complètement différentes de ce que j'attendais. Lancez tôt, écoutez, itérez. Tout le monde le dit. Je suis quand même tombé dans le piège.
L'opportunité de marché
Le marché de la traduction vaut plus de 40 milliards de dollars et continue de croître. Mais il est dominé par deux extrêmes :
- Les applications cloud gratuites (Google Translate, Apple Translate) qui sont suffisamment bonnes pour la plupart des gens, mais sacrifient la confidentialité et la fiabilité hors ligne
- Les appareils matériels coûteux (Pocketalk à 323 $, Timekettle à 299 $, Vasco à 350 $+) qui nécessitent internet et résolvent un problème que votre téléphone peut déjà résoudre
Le vide au milieu — une application gratuite/abordable avec un traitement entièrement on-device qui fonctionne vraiment — est étonnamment peu occupé. DeepL ne fait que du texte. iTranslate met les fonctions principales derrière un paywall. La plupart des outils de traduction IA sont cloud uniquement.
L'IA on-device a franchi le seuil de qualité. Les modèles sont suffisamment bons. Les téléphones sont suffisamment rapides. Les frameworks (CoreML, ONNX, sherpa-onnx, LiteRT) sont suffisamment matures. La pièce manquante était quelqu'un qui construise la couche produit par-dessus.
La suite
La feuille de route immédiate :
- Plus de langues ASR. 30 est un bon début, mais les langues de longue traîne ont elles aussi besoin de la reconnaissance vocale.
- Traduction LLM améliorée. Gemma 2B est bon. Des modèles plus récents et plus petits pourraient faire mieux. L'architecture prend en charge le remplacement des modèles sans modifier l'application.
- Optimisation iPad et tablette. L'application fonctionne sur tablette, mais l'interface n'est pas encore optimisée pour les grands écrans.
- Accélération Android Vulkan. iOS dispose de Metal et CoreML pour l'inférence GPU. L'histoire de l'accélération GPU sur Android (Vulkan via whisper.cpp) nécessite encore du travail.
La vision plus large : un monde où la langue n'est pas un obstacle à la connexion humaine, et où briser cet obstacle ne nécessite pas de confier vos conversations privées aux serveurs d'une entreprise technologique.
Si vous avez lu jusqu'ici, essayez l'application. Elle est gratuite. Je lis chaque retour.
Traverba est disponible sur Google Play et l'App Store. En savoir plus sur traverba.com. Questions, retours ou demandes de fonctionnalités : [email protected]