De proyecto paralelo a traductor de 108 idiomas: por qué construí Traverba

Construí una app de traducción que funciona completamente en tu teléfono. Sin nube. Sin llamadas a APIs. Sin datos que abandonen el dispositivo. 108 idiomas. Traducción por voz, cámara, pantalla y conversaciones grupales offline por Bluetooth.

Empezó porque no encontraba lo que necesitaba, y terminó siendo algo mucho más grande de lo que imaginé.

El problema

Vivo en Hong Kong. Mi vida diaria involucra cantonés, mandarín, inglés y, ocasionalmente, japonés. La familia de mi pareja habla cantonés. Mi trabajo es en inglés. Los formularios gubernamentales están en chino tradicional. Los menús de los restaurantes del barrio suelen estar en chino simplificado o japonés.

Probé todos los traductores del mercado:

Google Translate funciona bastante bien online, pero la calidad cae en picado sin conexión. Además, agrupa el cantonés dentro de "chino", lo cual, para cualquiera que hable cantonés, es como meter el portugués dentro del "español". Comparten caracteres, pero no pronunciación, gramática ni vocabulario.

Pocketalk cuesta $323 y necesita internet para cada traducción. No puedo usarlo en el MTR (el metro de Hong Kong), donde la mitad de las estaciones no tienen señal.

Apple Translate tiene un diseño precioso y buen procesamiento en el dispositivo, pero soporta unos 20 idiomas. Sin cantonés. En una ciudad donde el 95% de la población habla cantonés. Eso lo dice todo sobre cómo las grandes tecnológicas priorizan los idiomas.

iTranslate esconde sus funciones principales detrás de un muro de pago de $50 al año. DeepL ni siquiera hace voz ni cámara.

Ninguno podía gestionar una cena con la familia de mi pareja donde la gente cambia entre cantonés, mandarín e inglés a mitad de conversación. Ninguno podía traducir los mensajes de voz en cantonés que recibo por WhatsApp. Ninguno funcionaba de manera fiable en zonas con mala cobertura.

Así que me puse a construir.

La primera versión era terrible

El primer prototipo era una app Flutter con un único modelo ASR (Whisper, ejecutándose en el dispositivo mediante sherpa-onnx) y traducción NMT básica. Manejaba quizás 15 idiomas. El reconocimiento de voz era lento. Las traducciones eran mediocres. La interfaz era horrible.

Pero funcionaba offline. Y ese único hecho, poder traducir una frase en cantonés al inglés en un avión sin WiFi, fue lo que me mantuvo en marcha.

El agujero de conejo de la arquitectura

Una vez que te comprometes con la IA en el dispositivo, caes en un profundo agujero de conejo.

ASR (reconocimiento de voz): Un solo modelo no vale para todos los idiomas. Terminé lanzando tres: Parakeet (optimizado para inglés, incluido en la app), Whisper.cpp (multilingüe amplio, descargable) y Qwen3-ASR (optimizado para CJK, descargable). La app enruta automáticamente al mejor modelo según el idioma de origen.

Traducción: Los modelos de ML tradicionales cubren 61 pares de idiomas con buenos recursos. Para los 47 idiomas restantes (yoruba, amhárico, lao, birmano y otros), la traducción la gestiona un LLM Gemma cuantizado que se ejecuta localmente. Este fue el salto que llevó el recuento de idiomas de 61 a 108.

OCR por cámara: Dos motores. ML Kit para reconocimiento rápido. PaddleOCR para reconocimiento detallado de escrituras complejas. En iOS fue necesario añadir manualmente pods específicos por script porque Apple solo incluye el modelo latino de forma predeterminada. Depurar eso llevó un día entero, porque el fallo es completamente silencioso.

Chat grupal: Malla Bluetooth que conecta hasta 7 dispositivos. Cada teléfono gestiona su propio ASR y traducción. Los mensajes se emiten a todos los dispositivos. No hay ningún servidor coordinando nada.

Gestión de memoria: El verdadero reto de ingeniería. Tres modelos ASR, modelos de traducción, un LLM y motores OCR no pueden vivir todos en la RAM del teléfono al mismo tiempo. La app tiene un planificador de presupuesto de memoria que carga y expulsa modelos según lo que el usuario esté haciendo en cada momento.

Los números

  • Tiempo de desarrollo: Unos 18 meses desde el primer commit hasta el lanzamiento en App Store / Play Store
  • Idiomas: 108 (61 ML tradicional + 47 IA mediante Gemma)
  • Idiomas con ASR: 30 con reconocimiento de voz en el dispositivo
  • Idiomas con OCR: 92 con reconocimiento de texto por cámara
  • Tamaño de la app: ~150 MB base + modelos descargables
  • Precio: Nivel gratuito con todas las funciones principales. Premium a $1.99/mes o $19.99/año para chat grupal, transcripción de archivos y resúmenes de reuniones
  • Tamaño del equipo: 1 persona

Lo que hice bien

Privacidad como arquitectura, no como política. "No compartimos tus datos" es una política. Puede cambiar. "Tus datos nunca abandonan tu teléfono porque no hay servidor" es arquitectura. No puede cambiar sin reconstruir la app desde cero. Los usuarios entienden esta diferencia de forma intuitiva.

El cantonés como idioma de primera clase. La mayoría de los traductores tratan el cantonés como chino con acento diferente. Traverba tiene un modelo ASR dedicado para el cantonés. Esto resonó con fuerza entre los usuarios de Hong Kong y Guangdong, hartos de ser tratados como una ocurrencia tardía.

El nivel gratuito es generoso. La traducción por voz, cámara, pantalla y texto son todas gratuitas y sin límites. El muro de pago solo afecta al chat grupal, la transcripción de archivos y los resúmenes de reuniones. Esto es importante porque las personas que más necesitan traducción, inmigrantes, viajeros en lugares desconocidos, estudiantes, a menudo no pueden permitirse suscripciones premium.

Diseño offline primero. Cada función funciona sin internet. Internet no es un modo degradado. Offline ES el modo. Esa es una propuesta de valor más sólida que "también funciona sin conexión."

Lo que hice mal

Subestimar los dispositivos de gama baja. El desarrollo se hizo en teléfonos de gama alta. La primera vez que lo probé en un teléfono con 3 GB de RAM, la mitad de las funciones se bloqueó. La gestión de memoria debería haber sido lo primero que construí, no un parche posterior.

El proceso de revisión de iOS. Apple rechazó la primera versión por no implementar App Tracking Transparency (ATT). Aunque Traverba no rastrea a los usuarios, el SDK de AdMob activa el requisito. Conseguir que ATT funcionara correctamente en Flutter con el timing adecuado (después del lanzamiento de la app, antes de inicializar los anuncios) llevó varias iteraciones.

No lanzar antes. Pasé meses puliendo funciones que los usuarios no pedían antes de lanzar. El feedback que recibí tras el lanzamiento era sobre cosas completamente distintas a lo que esperaba. Lanza pronto, escucha, itera. Todo el mundo lo dice. Aun así, caí en la trampa.

La oportunidad de mercado

El mercado de la traducción vale más de $40 mil millones y sigue creciendo. Pero está dominado por dos extremos:

  1. Apps cloud gratuitas (Google Translate, Apple Translate) que son suficientemente buenas para la mayoría de la gente, pero sacrifican privacidad y fiabilidad offline
  2. Dispositivos hardware caros (Pocketalk $323, Timekettle $299, Vasco $350+) que requieren internet y resuelven un problema que tu teléfono ya puede resolver

El hueco en el medio, una app gratuita o asequible con procesamiento completamente en el dispositivo que realmente funcione, está sorprendentemente vacío. DeepL es solo texto. iTranslate pone detrás de un paywall las funciones principales. La mayoría de las herramientas de traducción con IA son solo en la nube.

La IA en el dispositivo ha superado el umbral de calidad. Los modelos son lo suficientemente buenos. Los teléfonos son lo suficientemente rápidos. Los frameworks (CoreML, ONNX, sherpa-onnx, LiteRT) son lo suficientemente maduros. Lo que faltaba era alguien que construyera la capa de producto encima.

Qué viene ahora

El roadmap inmediato:

  • Más idiomas con ASR. 30 es un buen comienzo, pero los idiomas de larga cola también necesitan reconocimiento de voz.
  • Traducción LLM mejorada. Gemma 2B es bueno. Modelos más nuevos y pequeños pueden ser mejores. La arquitectura permite intercambiar modelos sin cambiar la app.
  • Optimización para iPad y tablets. La app funciona en tablets, pero la interfaz aún no está optimizada para pantallas más grandes.
  • Aceleración Android Vulkan. iOS tiene Metal y CoreML para inferencia en GPU. La historia de aceleración GPU en Android (Vulkan mediante whisper.cpp) necesita más trabajo.

La visión más amplia: un mundo donde el idioma no sea una barrera para la conexión humana, y donde romper esa barrera no requiera entregar tus conversaciones privadas a los servidores de una empresa tecnológica.

Si has llegado hasta aquí, prueba la app. Es gratuita. Leo cada pieza de feedback.


Traverba está disponible en Google Play y App Store. Más información en traverba.com. Preguntas, feedback o solicitudes de funciones: [email protected]