展示用本地模型构建隐私友好的翻译工具,对离线 AI 应用开发和模型部署有参考价值。
RTranslator 是一款适用于 Android 的(几乎)开源、免费且支持离线运行的实时翻译应用。
与另一位安装了该应用的用户建立连接,连上 Bluetooth 耳机,把手机放进口袋里,你们就能像彼此都会说对方的语言一样自然交谈。
Conversation 模式是 RTranslator 的核心功能。在此模式下,你可以连接另一台同样运行该应用的手机。如果对方接受了你的连接请求:
当你说话时,你的手机(如果连接了 Bluetooth 耳机,则由耳机)会采集音频。
当你说话时,你的手机(如果连接了 Bluetooth 耳机,则由耳机)会采集音频。
采集到的音频会被转换成文本,并发送到对方的手机。
采集到的音频会被转换成文本,并发送到对方的手机。
对方的手机会将收到的文本翻译成对方使用的语言。
对方的手机会将收到的文本翻译成对方使用的语言。
对方的手机会将翻译后的文本转换成音频,再通过手机扬声器播放(如果对方的手机连接了 Bluetooth 耳机,则通过耳机播放)。
对方的手机会将翻译后的文本转换成音频,再通过手机扬声器播放(如果对方的手机连接了 Bluetooth 耳机,则通过耳机播放)。
整个流程支持双向进行。
每位用户都可以同时连接多台手机,因此你可以翻译两人以上的多人对话,也支持任意组合的语言。
如果说 Conversation 模式适合与某人进行长时间交谈,那么这个模式则是为简短对话设计的,例如在街上问路,或与店员交流。
该模式只能翻译两个人之间的对话,不支持 Bluetooth 耳机,而且双方必须轮流说话。它并不是真正的同声传译,但只用一台手机就能工作。
在此模式下,智能手机的麦克风会同时监听两种语言,你可以在 WalkieTalkie 模式的同一界面中选择这两种语言。应用会识别对方正在使用哪种语言,将音频翻译成另一种语言,把文本转换成音频,然后通过手机扬声器播放。TTS 播放结束后,应用会自动恢复监听。
这就是一个经典的文本翻译器,不过它始终很实用。
RTranslator 使用 Meta 的 NLLB 进行翻译,使用 OpenAI 的 Whisper 进行语音识别。两者都是(几乎)开源且处于业界领先水平的 AI,不仅质量出色,还能直接在手机上运行,从而确保绝对的隐私,并让 RTranslator 即使在离线状态下也能正常使用,翻译质量不会下降。
此外,RTranslator 还可以在后台运行,包括手机处于待机状态或你正在使用其他应用时(仅限使用 Conversation 或 WalkieTalkie 模式)。不过,有些手机会限制后台应用的性能;遇到这种情况,最好不要让它在后台运行,而是保持应用打开并让屏幕常亮。
要安装该应用,请从 https://github.com/niedev/RTranslator/releases/ 下载最新版本的 app apk 文件并进行安装(忽略其他文件,应用会在首次启动时自动下载它们)。
首次启动时,RTranslator 会自动下载翻译和语音识别所需的模型(1.2GB)。下载完成后,你就可以开始翻译了。
初次下载会从 GitHub 获取模型,但 GitHub 在某些地区的访问速度很慢。遇到此类问题的用户可以使用电脑单独下载模型(或者采用任何自己喜欢的方式),然后按照这份指南将模型手动导入应用。
如果你有 GitHub 账号,并希望在新版本发布时收到通知,可以点击页面顶部的 “Watch” -> “Custom” -> “Releases” -> “Apply”。
RTranslator 3.0 将由 NGI Mobifree Fund 提供资助,该基金由 NLnet 设立。
此版本的主要变化:
NLLB 翻译模型将被替换,用户可以从以下模型中进行选择:Mozilla Bergamot models、Madlad 400 3B 和 HY-MT 1.5 1.8B。这些模型的翻译质量都优于 NLLB 54B,与 Google Translate 相当(其中 HY-MT 1.5 1.8B 的评分远高于 Google Translate)。
MLKit 将被替换,使 RTranslator 实现 100% 开源。
应用将加入多种提升翻译质量的技术,包括 beam search、多语言词典、Tatoeba 集成等。
应用将在 Play Store 和 F-Droid 上发布。
还将推出一个可 self-hosted 的 Web 版本,使用 Mozilla models 提供文本翻译功能。
此版本的首个 beta 版将在 2026 年 6 月至 8 月之间发布。敬请期待 🚀
全新 GUI!由 Chiara Chindamo 设计。
全新 GUI!由 Chiara Chindamo 设计。
文本翻译模式新增朗读和复制按钮。
文本翻译模式新增朗读和复制按钮。
WalkieTalkie 模式新增手动控制麦克风的选项。
WalkieTalkie 模式新增手动控制麦克风的选项。
新增使用低质量语言的选项。
新增使用低质量语言的选项。
完整的变更列表请参阅此处。
我对 AI 模型进行了大量优化,以尽可能减少 RAM 占用和执行时间。尽管如此,为了避免应用崩溃,你仍然需要一台至少配备 6GB RAM 的手机;要获得足够理想的执行速度,还需要手机拥有性能足够强的 CPU。
如果你的手机性能实在很差(或者你追求极致速度),仍然可以使用 RTranslator 1.0 版本(但由于它使用 Google APIs,因此并不免费,而且需要进行一些初始设置)。
支持的语言如下:
Arabic、Bulgarian、Catalan、Chinese、Croatian、Czech、Danish、Dutch、English、Finnish、French、Galician、German、Greek、Italian、Japanese、Korean、Macedonian、Polish、Portuguese、Romanian、Russian、Slovak、Spanish、Swedish、Tamil、Thai、Turkish、Ukrainian、Urdu、Vietnamese。如果你的语言不在列表中,从 RTranslator 2.1 开始,可以进入设置并启用 “Support low quality languages”,以添加以下语言(这些语言的翻译和语音识别质量较低):
Afrikaans、Akan(仅文本)、Amharic、Assamese、Bambara(仅文本)、Bangla、Bashkir、Basque、Belarusian、Bosnian、Dzongkha(仅文本)、Esperanto(仅文本)、Estonian、Ewe(仅文本)、Faroese、Fijian(仅文本)、Georgian、Guarani(仅文本)、Gujarati、Hausa、Hebrew、Hindi、Hungarian、Irish(仅文本)、Javanese(仅文本)、Kannada、Kashmiri(仅文本)、Kazakh、Kikuyu(仅文本)、Kinyarwanda(仅文本)、Korean、Kyrgyz(仅文本)、Lao、Limburghish(仅文本)、Lingala、Lithuanian、Luxembourghish、Macedonian、Tagalog(仅文本)、Tibetan。
为了播放语音,RTranslator 使用手机的系统 TTS,因此语音质量以及支持的语言取决于你手机上的系统 TTS。
上面列出的所有受支持语言均与 Google TTS 兼容,它也是推荐使用的 TTS(不过你也可以使用自己想要的 TTS)。
如果要更改系统 TTS(也就是 RTranslator 使用的 TTS),请从 Play Store 或你偏好的其他来源下载想要使用的 TTS,然后打开 RTranslator,进入右上角的设置。在 “Output” 部分点击 “Text to Speech”,系统会打开相应设置页面,你可以在这里从已安装的 TTS 中选择首选的系统 TTS engine。如果更改了首选 engine,请重启 RTranslator 以应用更改(从最近使用的应用中将其关闭,然后重新打开)。
注意:如果这样操作后 TTS 仍然无法工作,可以在 Android Applications settings 中清除 RTranslator 和 TTS 的缓存,重启手机后再试一次。
隐私是一项基本权利。正因如此,RTranslator 不会收集任何个人数据(我甚至没有服务器)。如需了解更多信息,请阅读隐私政策(目前仍与 RTranslator 1.0 的隐私政策相同,但我以后会更新)。
RTranslator 的代码完全开源,但它使用的一些外部库采用了限制更严格的许可证。以下是该应用使用的全部外部库,并标明了各自的许可证:
BluetoothCommunicator(开源):用于设备之间的 Bluetooth LE 通信。
GalleryImageSelector(开源):用于从图库中选择和裁剪个人资料图片。
OnnxRuntime(开源):用作 AI 模型的加速引擎。
SentencePiece(开源):用于对 NLLB 的输入文本进行 tokenization。
Ml Kit(闭源):用于在 WalkieTalkie 模式中识别语言。此外还使用了以下 AI 模型:
NLLB(开源,但仅限非商业用途):使用的模型是带有 KV cache 的 NLLB-Distilled-600M。
Whisper(开源):使用的模型是带有 KV cache 的 Whisper-Small-244M。
我将 NLLB 和 Whisper 都转换成了 onnx 格式,并将其量化为 int8(为确保质量损失几乎为零,排除了一些 weights)。我还拆分了模型的部分结构以减少 RAM 占用——如果不进行拆分,某些 weights 会在运行时被重复加载,导致 RAM 消耗超出预期。此外,我还完成了其他优化,以缩短执行时间。
以下是我的优化结果:
注意:RTranslator Whisper model 也可以只占用 0.5GB RAM,但执行时间会达到 2.1s(此模式用于 RAM 少于 8GB 的手机)。
这是一款开源且完全无广告的应用,我不会从中赚取任何收入。
因此,如果你喜欢这款应用,想表达感谢并支持这个项目,可以点击下方任意按钮进行捐赠(无论金额多少,我都非常感谢)。
如果你愿意捐赠,或者只是留下一颗 star,谢谢你 ❤️
来看看这些使用了 RTranslator 代码的优秀项目:
如果你想为这个项目作出贡献,首先,谢谢你 🚀
如果不知道从哪里开始,可以先查看 to-do list;无论如何,在动手之前,请先阅读 contribution guidelines。
Bluetooth 连接有时会中断。
如果你发现了任何 bug,请通过创建 issue 或发送邮件至 contact.niedev@gmail.com 进行报告。
尽情使用你的同声传译器吧。