我做了一款完全在手机本地运行的翻译 App。没有云端,没有 API 调用,数据不离开设备。支持108种语言,具备语音翻译、拍照翻译、屏幕翻译,以及通过蓝牙实现的离线多人会话功能。
起因很简单:我找不到一款真正满足需求的产品,于是自己动手,结果做出了比预想更大的东西。
问题所在
我住在香港。日常生活中,我要用到粤语、普通话、英语,偶尔还有日语。伴侣的家人说粤语,我的工作语言是英语,政府表格用繁体中文,附近餐厅的菜单常常是简体中文或日文。
我把市面上的翻译工具都试了一遍:
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(多语言广覆盖,可下载)、Qwen3-ASR(针对中日韩优化,可下载)。App 会根据源语言自动路由到最合适的模型。
翻译: 传统 ML 模型能覆盖61个资源充足的语言对。剩余47种语言(约鲁巴语、阿姆哈拉语、老挝语、缅甸语等),则由本地运行的量化 Gemma 大模型负责翻译。这一步是关键突破,让支持语言数量从61种扩展到了108种。
拍照 OCR: 两套引擎。ML Kit 负责快速识别,PaddleOCR 负责对复杂文字的精细识别。iOS 端需要手动在 Podfile 中加入针对特定文字体系的 pods,因为 Apple 默认只内置拉丁文模型。这个问题花了我整整一天调试,因为识别失败是完全静默的,没有任何报错。
群组会话: 蓝牙组网,最多支持7台设备。每台手机独立完成 ASR 和翻译,消息广播给所有设备,全程无需服务器。
内存管理: 这才是真正的工程挑战。三个 ASR 模型、翻译模型、LLM 和 OCR 引擎不可能同时装进手机内存。App 内置了一套内存预算规划器,根据用户当前操作动态加载和卸载模型。
一些数字
- 开发时长: 从第一次提交到上架 App Store / Play Store,约18个月
- 语言数量: 108种(61种传统 ML + 47种由 Gemma 支持的 AI 翻译)
- ASR 语言: 30种支持设备端语音识别
- OCR 语言: 92种支持拍照文字识别
- 应用大小: 基础包约150MB,模型可按需下载
- 定价: 核心功能免费。高级版 $1.99/月 或 $19.99/年,包含群组会话、文件转录和会议摘要
- 团队规模: 1人
做对了什么
隐私是架构,不是政策。 "我们不会分享你的数据"是一种政策,随时可以改变。"你的数据永远不会离开手机,因为根本没有服务器"是一种架构,不推倒重建就无法改变。用户对这种区别有直觉上的感知。
把粤语当作一等语言对待。 大多数翻译工具把粤语当作"带口音的中文"。Traverba 为粤语配备了专属 ASR 模型。这一点在香港和广东用户群体中反响强烈——他们早就厌倦了被当成边角料来对待。
免费层足够慷慨。 语音翻译、拍照翻译、屏幕翻译、文字翻译,全部免费且不限次数。付费墙只锁定群组会话、文件转录和会议摘要。这一点很重要,因为最需要翻译功能的人——移民、身处陌生环境的旅行者、学生——往往负担不起高额订阅费。
离线优先设计。 所有功能无需联网均可使用。离线不是一种降级模式,离线就是默认模式。这比"也支持离线"是更有力的产品定位。
做错了什么
低估了低端设备的限制。 开发全程在旗舰机上进行。第一次在3GB内存的手机上测试时,有一半功能崩溃了。内存管理应该是最先着手构建的模块,而不是事后补救。
iOS 审核流程。 Apple 以未实现 App Tracking Transparency(ATT)为由拒绝了第一次提交。虽然 Traverba 本身不追踪用户,但 AdMob SDK 会触发该要求。在 Flutter 中把 ATT 正确接入——时序要对(应用启动后、广告初始化前)——迭代了好几轮才搞定。
没有更早发布。 发布前我花了好几个月打磨用户根本没有要求的功能。真正上线后收到的反馈,和我预期的方向完全不同。要早发布、多倾听、快迭代。这道理人人都懂,我还是掉进了同一个坑。
市场机会
翻译市场规模超过400亿美元且持续增长,但目前被两个极端主导:
- 免费云端应用(Google Translate、Apple Translate):对大多数人来说够用,但牺牲了隐私和离线可靠性
- 昂贵的硬件设备(Pocketalk $323、Timekettle $299、Vasco $350+):需要联网,而且解决的问题你的手机本来就能解决
中间那块空白——一款免费或低价、完全本地处理、真正好用的 App——出奇地空旷。DeepL 只能做文字翻译;iTranslate 把核心功能锁在付费墙后;大多数 AI 翻译工具只支持云端。
端侧 AI 的质量已经越过了门槛。模型够好了,手机也够快了,底层框架(CoreML、ONNX、sherpa-onnx、LiteRT)也足够成熟了。缺的只是有人在这些技术之上做出真正的产品层。
接下来做什么
近期路线图:
- 支持更多 ASR 语言。 30种是个好的起点,但长尾语言也需要语音识别。
- 提升 LLM 翻译质量。 Gemma 2B 已经不错,但更新、更小的模型可能更好。架构支持在不更新 App 的情况下替换模型。
- iPad 和平板优化。 App 在平板上可以运行,但 UI 尚未针对大屏幕优化。
- Android Vulkan 加速。 iOS 有 Metal 和 CoreML 做 GPU 推理加速,Android 端的 GPU 加速方案(通过 whisper.cpp 的 Vulkan)还需要更多投入。
更大的愿景:让语言不再成为人与人之间连接的障碍,同时打破这道障碍不需要把你的私人对话上传到科技公司的服务器。
如果你看到了这里,不妨试试这款 App,它是免费的。每一条反馈我都会亲自阅读。
Traverba 已上架 Google Play 和 App Store。更多信息请访问 traverba.com。如有问题、反馈或功能建议,欢迎联系:[email protected]