Od projektu pobocznego do tłumacza 108 języków: dlaczego stworzyłem Traverbę

Stworzyłem aplikację do tłumaczeń, która działa w całości na Twoim telefonie. Bez chmury. Bez wywołań API. Bez danych opuszczających urządzenie. 108 języków. Tłumaczenie głosowe, przez kamerę, ekranowe i offline'owe rozmowy grupowe przez Bluetooth.

Zaczęło się od tego, że nie mogłem znaleźć tego, czego potrzebowałem — i przerodziło się w coś większego, niż się spodziewałem.

Problem

Mieszkam w Hongkongu. Moje codzienne życie obejmuje kantoński, mandaryński, angielski i od czasu do czasu japoński. Rodzina mojej partnerki mówi po kantońsku. Praca jest po angielsku. Formularze rządowe są w tradycyjnym języku chińskim. Menu restauracyjne w okolicy często są w uproszczonym chińskim lub japońskim.

Wypróbowałem każdy translator dostępny na rynku:

Google Translate działa całkiem dobrze online, ale jakość offline znacznie spada. Poza tym wrzuca kantoński do worka z „chińskim" — a każdy, kto mówi po kantońsku, wie, że to tak jakby wrzucić portugalski do „hiszpańskiego". Oba języki mają wspólne znaki, ale różnią się wymową, gramatyką i słownictwem.

Pocketalk kosztuje $323 i do każdego tłumaczenia wymaga internetu. Nie mogę z niego korzystać w MTR (metrze w Hongkongu), gdzie połowa stacji nie ma zasięgu.

Apple Translate ma piękny design i dobre przetwarzanie na urządzeniu, ale obsługuje zaledwie około 20 języków. Bez kantońskiego. W mieście, gdzie 95% mieszkańców mówi po kantońsku. To mówi wszystko o tym, jak wielkie firmy technologiczne priorytetyzują języki.

iTranslate chowa podstawowe funkcje za paywallem $50/rok. DeepL w ogóle nie obsługuje głosu ani kamery.

Żadna z tych aplikacji nie poradziła sobie z obiadami u rodziny mojej partnerki, gdzie ludzie w połowie zdania przechodzą między kantońskim, mandaryńskim i angielskim. Żadna nie umiała przetłumaczyć kantońskich wiadomości głosowych, które dostaję na WhatsAppie. Żadna nie działała niezawodnie w miejscach ze słabym zasięgiem.

Więc zacząłem budować.

Pierwsza wersja była do niczego

Pierwszy prototyp był aplikacją Flutter z jednym modelem ASR (Whisper, działającym na urządzeniu przez sherpa-onnx) i podstawowym tłumaczeniem NMT. Obsługiwał może 15 języków. Rozpoznawanie głosu było wolne. Tłumaczenia przeciętne. Interfejs brzydki.

Ale działał offline. I ten jeden fakt — że mogłem przetłumaczyć zdanie z kantońskiego na angielski w samolocie bez WiFi — trzymał mnie przy tym projekcie.

Królicza nora architektury

Gdy raz zdecydujesz się na AI działające na urządzeniu, wpadasz w głęboką króliczą norę.

ASR (rozpoznawanie mowy): Jeden model nie pasuje do wszystkich języków. W końcu dostarczyłem trzy: Parakeet (zoptymalizowany pod angielski, dołączony do aplikacji), Whisper.cpp (szeroka obsługa wielojęzyczna, do pobrania) i Qwen3-ASR (zoptymalizowany pod języki CJK, do pobrania). Aplikacja automatycznie kieruje do najlepszego modelu na podstawie języka źródłowego.

Tłumaczenie: Tradycyjne modele ML pokrywają 61 dobrze obsługiwanych par językowych. Dla pozostałych 47 języków (joruba, amharski, laotański, birmański i inne) lokalnie działa skwantowany model LLM Gemma. To był przełom, który zwiększył liczbę obsługiwanych języków z 61 do 108.

OCR przez kamerę: Dwa silniki. ML Kit do szybkiego rozpoznawania. PaddleOCR do dokładnego rozpoznawania złożonych pism. iOS wymagał ręcznego dodawania podów dla poszczególnych pism, ponieważ Apple domyślnie dołącza jedynie model łaciński. Debugowanie tego zajęło cały dzień, bo błąd jest całkowicie cichy.

Czat grupowy: Siatka Bluetooth łącząca do 7 urządzeń. Każdy telefon samodzielnie obsługuje ASR i tłumaczenie. Wiadomości są rozsyłane do wszystkich urządzeń. Żadnego koordynującego serwera.

Zarządzanie pamięcią: Prawdziwe wyzwanie inżynieryjne. Trzy modele ASR, modele tłumaczenia, LLM i silniki OCR nie mogą jednocześnie znajdować się w pamięci RAM telefonu. Aplikacja ma planer budżetu pamięci, który ładuje i zwalnia modele w zależności od tego, co użytkownik aktualnie robi.

Liczby

  • Czas tworzenia: Około 18 miesięcy od pierwszego commita do premiery na App Store / Play Store
  • Języki: 108 (61 tradycyjny ML + 47 AI przez Gemma)
  • Języki ASR: 30 z rozpoznawaniem mowy na urządzeniu
  • Języki OCR: 92 z rozpoznawaniem tekstu przez kamerę
  • Rozmiar aplikacji: ~150MB bazowo + modele do pobrania
  • Cennik: Darmowy poziom ze wszystkimi podstawowymi funkcjami. Premium za $1,99/miesiąc lub $19,99/rok za czat grupowy, transkrypcję plików i podsumowania spotkań
  • Liczba osób w zespole: 1

Co zrobiłem dobrze

Prywatność jako architektura, nie polityka. „Nie udostępniamy Twoich danych" to polityka. Może się zmienić. „Twoje dane nigdy nie opuszczają telefonu, bo nie ma żadnego serwera" to architektura. Nie da się tego zmienić bez przebudowania aplikacji od podstaw. Użytkownicy intuicyjnie rozumieją tę różnicę.

Kantoński jako język pierwszej klasy. Większość translatorów traktuje kantoński jak chiński z innym akcentem. Traverba ma dedykowany model ASR dla kantońskiego. Trafiło to w czuły punkt w społeczności z Hongkongu i Guangdongu, zmęczonej byciem traktowaną po macoszemu.

Hojny darmowy poziom. Tłumaczenie głosowe, przez kamerę, ekranowe i tekstowe są bezpłatne i bez limitu. Paywall dotyczy jedynie funkcji czatu grupowego, transkrypcji plików i podsumowań spotkań. To ważne, bo osoby najbardziej potrzebujące tłumaczeń — imigranci, podróżnicy w nieznanych miejscach, studenci — często nie mogą sobie pozwolić na płatne subskrypcje.

Projektowanie z myślą o trybie offline. Każda funkcja działa bez internetu. Internet nie jest trybem awaryjnym. Offline TO jest tryb. To silniejsza propozycja wartości niż „działa też offline."

Co zrobiłem źle

Niedoszacowanie słabszych urządzeń. Tworzenie odbywało się na flagowych telefonach. Kiedy po raz pierwszy przetestowałem na telefonie z 3GB RAM, połowa funkcji się wykraszała. Zarządzanie pamięcią powinno być pierwszą rzeczą, którą zbudowałem — nie poprawką dodaną na końcu.

Proces recenzji iOS. Apple odrzucił pierwsze zgłoszenie za brak implementacji App Tracking Transparency (ATT). Nawet jeśli Traverba nie śledzi użytkowników, SDK AdMob uruchamia ten wymóg. Prawidłowe podpięcie ATT przez Flutter z właściwym timingiem (po uruchomieniu aplikacji, przed inicjalizacją reklam) wymagało wielu iteracji.

Brak wcześniejszego launchu. Przez wiele miesięcy szlifowałem funkcje, o które użytkownicy nie prosili, zanim w ogóle wypuściłem aplikację. Opinie, które otrzymałem po launchu, dotyczyły zupełnie innych rzeczy niż się spodziewałem. Wypuść wcześniej, słuchaj, iteruj. Wszyscy to mówią. Ja i tak wpadłem w tę pułapkę.

Szansa rynkowa

Rynek tłumaczeń jest wart ponad 40 miliardów dolarów i wciąż rośnie. Zdominowany jest jednak przez dwa skrajne bieguny:

  1. Darmowe aplikacje chmurowe (Google Translate, Apple Translate), które są wystarczające dla większości, ale kosztem prywatności i niezawodności offline
  2. Drogie urządzenia sprzętowe (Pocketalk $323, Timekettle $299, Vasco $350+), które wymagają internetu i rozwiązują problem, który Twój telefon już rozwiązuje

Luka pośrodku — darmowa lub przystępna cenowo aplikacja z pełnym przetwarzaniem na urządzeniu, która naprawdę działa — jest zaskakująco pusta. DeepL jest tylko tekstowy. iTranslate chowa podstawowe funkcje za paywallem. Większość narzędzi do tłumaczenia AI działa wyłącznie w chmurze.

Modele AI działające na urządzeniu przekroczyły próg jakości. Modele są wystarczająco dobre. Telefony są wystarczająco szybkie. Frameworki (CoreML, ONNX, sherpa-onnx, LiteRT) są wystarczająco dojrzałe. Brakowało tylko kogoś, kto zbuduje na tym warstwę produktową.

Co dalej

Najbliższe plany:

  • Więcej języków ASR. 30 to dobry początek, ale języki z długiego ogona też potrzebują rozpoznawania mowy.
  • Ulepszone tłumaczenie przez LLM. Gemma 2B jest dobry. Nowsze, mniejsze modele mogą być lepsze. Architektura obsługuje wymianę modeli bez zmiany aplikacji.
  • Optymalizacja pod iPad i tablety. Aplikacja działa na tabletach, ale interfejs nie jest jeszcze zoptymalizowany pod większe ekrany.
  • Akceleracja Android Vulkan. iOS ma Metal i CoreML do wnioskowania GPU. Historia akceleracji GPU w systemie Android (Vulkan przez whisper.cpp) wymaga jeszcze pracy.

Większa wizja: świat, w którym język nie jest barierą dla ludzkiej komunikacji, a przełamywanie tej bariery nie wymaga oddawania prywatnych rozmów na serwery firm technologicznych.

Jeśli dotarłeś aż tutaj, wypróbuj aplikację. Jest darmowa. Czytam każdą opinię.


Traverba jest dostępna na Google Play oraz w App Store. Więcej informacji na traverba.com. Pytania, opinie lub propozycje funkcji: [email protected]