Я создал приложение-переводчик, которое работает полностью на вашем телефоне. Без облака. Без API-запросов. Без передачи данных куда-либо. 108 языков. Голосовой перевод, перевод через камеру, перевод экрана и офлайн-групповые разговоры через Bluetooth.
Всё началось с того, что я не мог найти то, что мне было нужно, — и в итоге вышло нечто большее, чем я ожидал.
Проблема
Я живу в Гонконге. В повседневной жизни мне нужны кантонский, мандаринский, английский, а иногда и японский. Семья моего партнёра говорит на кантонском. Работа — на английском. Государственные формы — на традиционном китайском. В ресторанных меню по соседству часто встречается упрощённый китайский или японский.
Я перепробовал все переводчики на рынке:
Google Translate неплохо справляется в онлайне, но качество офлайн-перевода резко падает. К тому же он объединяет кантонский с «китайским» — а любой, кто говорит на кантонском, знает, что это всё равно что объединить португальский с «испанским». У них общие иероглифы, но произношение, грамматика и словарный запас совершенно разные.
Pocketalk стоит $323 и требует интернета для каждого перевода. Его невозможно использовать в MTR (гонконгском метро), где половина станций без сигнала.
Apple Translate красиво выглядит и хорошо работает на устройстве, но поддерживает около 20 языков. Без кантонского. В городе, где 95% населения говорит на кантонском. Это красноречиво говорит о том, как крупные технологические компании расставляют языковые приоритеты.
iTranslate прячет основные функции за платную подписку за $50 в год. DeepL и вовсе не поддерживает голосовой или фотоперевод.
Ни одно из них не справлялось с ужином в кругу семьи партнёра, где люди на ходу переключаются между кантонским, мандаринским и английским. Ни одно не могло расшифровать голосовые сообщения на кантонском из WhatsApp. Ни одно не работало надёжно при плохом соединении.
Тогда я взялся за разработку.
Первая версия была ужасной
Первый прототип — Flutter-приложение с одной моделью ASR (Whisper, работавшей на устройстве через sherpa-onnx) и базовым NMT-переводом. Оно поддерживало около 15 языков. Голосовое распознавание тормозило. Переводы были посредственными. Интерфейс — некрасивым.
Но оно работало офлайн. И этот единственный факт — что я могу перевести кантонское предложение на английский в самолёте без Wi-Fi — не давал мне бросить.
Кроличья нора архитектуры
Как только ты берёшь курс на ИИ прямо на устройстве, ты падаешь в глубокую кроличью нору.
ASR (распознавание речи): одна модель не подходит для всех языков. В итоге я поставляю три: Parakeet (оптимизирована для английского, встроена), Whisper.cpp (широкий многоязычный охват, загружается), Qwen3-ASR (оптимизирована для CJK-языков, загружается). Приложение автоматически выбирает лучшую модель в зависимости от исходного языка.
Перевод: традиционные ML-модели охватывают 61 хорошо обеспеченную языковую пару. Для оставшихся 47 языков — йоруба, амхарский, лаосский, бирманский и других — перевод берёт на себя квантизированная LLM Gemma, работающая локально. Именно это позволило расширить число языков с 61 до 108.
OCR через камеру: два движка. ML Kit для быстрого распознавания. PaddleOCR для тщательного распознавания сложных письменностей. На iOS пришлось вручную добавлять специфические поды для письменностей, поскольку Apple по умолчанию поставляет только латинскую модель. На отладку ушёл целый день — сбой совершенно беззвучен.
Групповой чат: Bluetooth-меш, соединяющий до 7 устройств. Каждый телефон обрабатывает собственные ASR и перевод. Сообщения рассылаются на все устройства. Никаких серверов-координаторов.
Управление памятью: настоящий инженерный вызов. Три ASR-модели, модели перевода, LLM и движки OCR не могут одновременно жить в оперативной памяти телефона. В приложении есть планировщик бюджета памяти, который загружает и выгружает модели в зависимости от того, что пользователь делает прямо сейчас.
Цифры
- Время разработки: около 18 месяцев от первого коммита до запуска в App Store и Play Store
- Языков: 108 (61 на традиционных ML + 47 с помощью ИИ через Gemma)
- Языков для ASR: 30 с голосовым распознаванием на устройстве
- Языков для OCR: 92 с распознаванием текста через камеру
- Размер приложения: ~150 МБ базовый + загружаемые модели
- Цена: бесплатный уровень со всеми основными функциями. Премиум за $1.99/месяц или $19.99/год — групповой чат, транскрибирование файлов и сводки встреч
- Размер команды: 1 человек
Что получилось хорошо
Приватность как архитектура, а не политика. «Мы не передаём ваши данные» — это политика. Она может измениться. «Ваши данные никогда не покидают телефон, потому что нет никакого сервера» — это архитектура. Её нельзя изменить, не перестроив приложение с нуля. Пользователи интуитивно понимают эту разницу.
Кантонский как полноправный язык. Большинство переводчиков относятся к кантонскому как к китайскому с другим акцентом. В Traverba есть специальная ASR-модель для кантонского. Это нашло живой отклик среди пользователей из Гонконга и Гуандуна, которым надоело быть второстепенными.
Щедрый бесплатный уровень. Голосовой перевод, перевод через камеру, перевод экрана и текстовый перевод — всё бесплатно и без ограничений. Платная подписка касается только группового чата, транскрибирования файлов и сводок встреч. Это важно, потому что те, кому перевод нужен больше всего — иммигранты, путешественники в незнакомых местах, студенты — зачастую не могут позволить себе премиум-подписки.
Проектирование с приоритетом офлайна. Каждая функция работает без интернета. Отсутствие интернета — не деградированный режим. Офлайн — это и есть основной режим. Это куда более весомое преимущество, чем «тоже работает офлайн».
Что не получилось
Недооценка бюджетных устройств. Разработка велась на флагманских телефонах. Когда я впервые запустил приложение на телефоне с 3 ГБ ОЗУ, половина функций падала. Управление памятью должно было быть первым, что я строил, а не запоздалой доработкой.
Процесс проверки в App Store. Apple отклонила первую заявку за отсутствие App Tracking Transparency (ATT). Хотя Traverba не отслеживает пользователей, SDK AdMob запускает это требование. Правильно подключить ATT через Flutter с нужной последовательностью (после запуска приложения, до инициализации рекламы) заняло несколько итераций.
Слишком поздний запуск. Я потратил месяцы на полировку функций, о которых пользователи не просили, прежде чем выпустить приложение. Обратная связь после запуска касалась совершенно других вещей, чем я ожидал. Запускайся раньше, слушай, итерируй. Все это говорят. Я всё равно попал в ловушку.
Рыночная возможность
Рынок переводов стоит более $40 миллиардов и продолжает расти. Но он поделён между двумя крайностями:
- Бесплатные облачные приложения (Google Translate, Apple Translate) — достаточно хороши для большинства, но жертвуют приватностью и надёжностью офлайна
- Дорогие аппаратные устройства (Pocketalk $323, Timekettle $299, Vasco $350+) — требуют интернета и решают задачу, с которой ваш телефон и так справляется
Пространство посередине — бесплатное или доступное приложение с полной обработкой на устройстве, которое реально работает — удивительно пусто. DeepL — только текст. iTranslate прячет основные функции за paywall. Большинство ИИ-инструментов для перевода работают только в облаке.
ИИ на устройстве перешагнул порог качества. Модели достаточно хороши. Телефоны достаточно быстры. Фреймворки (CoreML, ONNX, sherpa-onnx, LiteRT) достаточно зрелые. Не хватало лишь того, кто построит поверх всего этого продуктовый слой.
Что дальше
Ближайшие планы:
- Больше языков для ASR. 30 — хорошее начало, но языкам «длинного хвоста» тоже нужно голосовое распознавание.
- Улучшенный LLM-перевод. Gemma 2B хороша. Новые, более компактные модели могут оказаться лучше. Архитектура позволяет менять модели без изменения приложения.
- Оптимизация для iPad и планшетов. Приложение работает на планшетах, но UI ещё не оптимизирован для больших экранов.
- Ускорение через Vulkan на Android. iOS использует Metal и CoreML для GPU-инференса. История с GPU-ускорением на Android (Vulkan через whisper.cpp) требует доработки.
Глобальная цель: мир, в котором язык не является барьером для человеческого общения, и где преодоление этого барьера не требует передавать личные разговоры на серверы технологических компаний.
Если вы дочитали до этого места — попробуйте приложение. Оно бесплатное. Я читаю каждый отзыв.
Traverba доступна в Google Play и App Store. Подробнее на traverba.com. Вопросы, отзывы или пожелания: [email protected]