나는 스마트폰에서 완전히 동작하는 번역 앱을 만들었다. 클라우드 없이, API 호출 없이, 기기 밖으로 데이터가 나가는 일도 없다. 108개 언어를 지원하고, 음성·카메라·화면 번역은 물론 Bluetooth를 통한 오프라인 그룹 대화까지 된다.
처음엔 내가 필요한 게 세상에 없어서 만들기 시작했는데, 어느 순간 예상보다 훨씬 큰 프로젝트가 되어 있었다.
문제의 시작
나는 홍콩에 산다. 매일 광둥어, 표준 중국어, 영어를 쓰고, 가끔은 일본어도 필요하다. 파트너의 가족은 광둥어를 쓰고, 나의 업무는 영어로 이루어지며, 정부 서류는 번체 중국어로 되어 있다. 동네 음식점 메뉴는 간체 중국어나 일본어인 경우가 많다.
시중에 나온 번역기는 전부 써봤다.
Google Translate는 온라인 상태에서는 그럭저럭 쓸 만하지만, 오프라인이 되면 번역 품질이 확 떨어진다. 게다가 광둥어를 그냥 '중국어'로 뭉뚱그린다. 광둥어를 쓰는 사람이라면 이게 얼마나 말이 안 되는지 바로 안다. 포르투갈어를 '스페인어'라고 부르는 것과 다를 바 없다. 문자는 일부 겹치지만, 발음도 문법도 어휘도 전혀 다르다.
Pocketalk는 가격이 $323인 데다 번역할 때마다 인터넷이 필요하다. 역 절반에 신호가 없는 홍콩 지하철(MTR) 안에서는 쓸 수가 없다.
Apple Translate는 디자인도 예쁘고 기기 내 처리도 잘 되지만, 지원 언어가 약 20개뿐이다. 광둥어는 없다. 홍콩 인구의 95%가 광둥어를 쓰는 도시에서 말이다. 이 한 가지 사실만으로도 대형 테크 기업들이 언어를 얼마나 선별적으로 우선순위에 두는지 알 수 있다.
iTranslate는 핵심 기능을 연간 $50 유료 구독 뒤에 숨겨뒀다. DeepL은 음성이나 카메라 기능 자체가 없다.
파트너 가족과의 저녁 식사 자리에서 사람들이 광둥어·표준 중국어·영어를 대화 중간에 자유롭게 섞어 쓸 때 도움이 되는 번역기는 없었다. WhatsApp으로 받는 광둥어 음성 메시지를 번역해주는 것도 없었다. 통신이 불안정한 지역에서 믿고 쓸 수 있는 것도 없었다.
그래서 직접 만들기로 했다.
첫 버전은 형편없었다
첫 번째 프로토타입은 Flutter로 만든 앱이었고, 단일 ASR 모델(sherpa-onnx로 기기 내에서 구동하는 Whisper)과 기본적인 NMT 번역을 사용했다. 지원 언어는 15개 정도였다. 음성 인식은 느렸고, 번역 품질도 평범했으며, UI도 촌스러웠다.
그래도 오프라인에서 작동했다. WiFi 없이 비행기 안에서 광둥어 문장을 영어로 번역할 수 있다는 그 단 하나의 사실이 나를 계속하게 만들었다.
아키텍처의 깊은 토끼굴
기기 내 AI를 파고들기 시작하면 끝이 없는 토끼굴에 빠진다.
ASR(음성 인식): 모든 언어에 맞는 단일 모델이란 없다. 결국 세 가지 모델을 탑재했다. 영어에 최적화된 Parakeet(기본 내장), 다국어 폭넓게 지원하는 Whisper.cpp(다운로드), CJK(한중일)에 최적화된 Qwen3-ASR(다운로드). 앱이 소스 언어에 따라 자동으로 최적 모델을 선택한다.
번역: 전통적인 ML 모델은 61개 언어 쌍을 지원한다. 나머지 47개 언어(요루바어, 암하라어, 라오어, 미얀마어 등)는 기기 내에서 구동되는 양자화된 Gemma LLM이 번역을 담당한다. 이 구조 덕분에 지원 언어 수가 61개에서 108개로 늘었다.
카메라 OCR: 두 가지 엔진을 사용한다. 빠른 인식에는 ML Kit, 복잡한 문자의 정밀 인식에는 PaddleOCR. iOS에서는 Apple이 기본적으로 Latin 모델만 번들에 포함하기 때문에 스크립트별 pod을 수동으로 추가해야 했다. 실패해도 아무 오류 메시지가 없어서 원인을 파악하는 데만 하루가 걸렸다.
그룹 채팅: Bluetooth 메시로 최대 7대까지 연결된다. 각 기기가 자체적으로 ASR과 번역을 처리하고, 메시지는 모든 기기에 브로드캐스트된다. 서버가 전혀 없다.
메모리 관리: 진짜 공학적 난제다. ASR 모델 세 개, 번역 모델, LLM, OCR 엔진을 동시에 스마트폰 RAM에 올릴 수는 없다. 앱에는 사용자가 현재 하는 작업에 따라 모델을 로드하고 언로드하는 메모리 예산 플래너가 내장되어 있다.
숫자로 보는 Traverba
- 개발 기간: 첫 커밋부터 App Store / Play Store 출시까지 약 18개월
- 지원 언어: 108개 (전통 ML 61개 + Gemma AI 47개)
- ASR 지원 언어: 기기 내 음성 인식 30개
- OCR 지원 언어: 카메라 텍스트 인식 92개
- 앱 크기: 기본 ~150MB + 다운로드 가능한 모델
- 가격: 핵심 기능 전부 무료. 그룹 채팅, 파일 전사, 회의 요약은 월 $1.99 또는 연 $19.99 프리미엄
- 팀 규모: 1명
잘 한 것들
정책이 아닌 구조로서의 프라이버시. "우리는 데이터를 공유하지 않습니다"는 정책이다. 언제든 바뀔 수 있다. "서버가 없어서 데이터가 기기 밖으로 나갈 수가 없습니다"는 구조다. 앱을 처음부터 다시 만들지 않는 한 바뀌지 않는다. 사용자들은 이 차이를 직관적으로 이해한다.
광둥어를 1등 언어로. 대부분의 번역기는 광둥어를 억양이 다른 중국어 정도로 취급한다. Traverba에는 광둥어 전용 ASR 모델이 있다. 홍콩과 광둥 사용자들 사이에서 이 부분이 큰 공감을 얻었다. 늘 변방 취급을 받아온 사람들에게는 의미 있는 차이였다.
넉넉한 무료 티어. 음성 번역, 카메라 번역, 화면 번역, 텍스트 번역은 모두 무료이고 무제한이다. 유료 구독은 그룹 채팅, 파일 전사, 회의 요약에만 적용된다. 번역이 가장 절실한 사람들, 즉 이민자, 낯선 곳을 여행하는 사람, 학생들은 종종 프리미엄 구독을 감당하기 어렵다. 그래서 이 결정은 중요하다.
오프라인 우선 설계. 모든 기능이 인터넷 없이 작동한다. 오프라인이 열등한 모드가 아니다. 오프라인이 곧 기본 모드다. 이것은 "오프라인도 됩니다"보다 훨씬 강력한 가치 제안이다.
잘못 한 것들
저사양 기기를 과소평가. 개발은 플래그십 폰으로 진행됐다. RAM 3GB짜리 기기에서 처음 테스트해봤을 때 기능 절반이 다운됐다. 메모리 관리는 나중에 덧붙일 것이 아니라 처음부터 만들었어야 할 기능이었다.
iOS 심사 과정. Apple은 첫 번째 제출을 App Tracking Transparency(ATT)를 구현하지 않았다는 이유로 반려했다. Traverba는 사용자를 추적하지 않지만, AdMob SDK가 해당 요구사항을 유발한다. Flutter에서 ATT를 올바른 타이밍(앱 시작 후, 광고 초기화 전)에 정상적으로 연결하는 데 여러 번의 반복 작업이 필요했다.
더 빨리 출시하지 않은 것. 런칭 전에 사용자가 요청하지도 않은 기능을 몇 달 동안 다듬는 데 시간을 썼다. 막상 출시하고 받은 피드백은 내가 예상했던 것과 완전히 달랐다. 빨리 출시하고, 듣고, 반복하라. 누구나 하는 말이다. 나도 그 함정에 빠졌다.
시장 기회
번역 시장 규모는 $400억을 넘고 계속 성장하고 있다. 그러나 시장은 두 극단에 집중되어 있다.
- 무료 클라우드 앱 (Google Translate, Apple Translate) — 대부분의 사람에게 충분하지만 프라이버시와 오프라인 신뢰성을 희생한다
- 고가의 전용 하드웨어 (Pocketalk $323, Timekettle $299, Vasco $350+) — 인터넷이 필요하고, 스마트폰이 이미 해결할 수 있는 문제를 비싼 값에 푼다
그 중간, 즉 완전한 기기 내 처리를 갖춘 무료 또는 저렴한 앱이 실제로 잘 작동하는 영역은 놀라울 만큼 비어 있다. DeepL은 텍스트 전용이다. iTranslate는 핵심 기능을 유료로 막아놨다. 대부분의 AI 번역 도구는 클라우드 전용이다.
기기 내 AI는 이미 품질 문턱을 넘었다. 모델은 충분히 좋아졌고, 스마트폰은 충분히 빨라졌으며, 프레임워크(CoreML, ONNX, sherpa-onnx, LiteRT)도 충분히 성숙해졌다. 빠진 건 그 위에 제품 레이어를 쌓는 사람이었다.
앞으로의 방향
당장의 로드맵:
- 더 많은 ASR 언어. 30개는 좋은 시작이지만, 롱테일 언어들에도 음성 인식이 필요하다.
- LLM 번역 개선. Gemma 2B는 훌륭하다. 더 최신의, 더 작은 모델이 더 나을 수도 있다. 아키텍처 자체가 앱을 바꾸지 않고 모델 교체를 지원한다.
- iPad 및 태블릿 최적화. 앱은 태블릿에서 작동하지만, 큰 화면에 맞춘 UI 최적화는 아직 부족하다.
- Android Vulkan 가속. iOS에는 GPU 추론을 위한 Metal과 CoreML이 있다. Android의 GPU 가속(whisper.cpp를 통한 Vulkan)은 아직 더 손볼 부분이 남아 있다.
더 큰 비전은 이렇다. 언어가 사람 사이의 연결을 막는 장벽이 되지 않는 세상, 그리고 그 장벽을 허무는 데 내 개인적인 대화를 테크 기업 서버에 맡길 필요가 없는 세상.
여기까지 읽었다면, 앱을 한번 써보길 권한다. 무료다. 피드백은 전부 직접 읽는다.
Traverba는 Google Play와 App Store에서 다운로드할 수 있습니다. 자세한 내용은 traverba.com을 방문하세요. 문의, 피드백, 기능 요청: [email protected]