Lê Xuân Lộc回到五款 App

一个界面,一个按钮。

Knowless · 文章 · 2026 年 10 月

小时候,我在香港走丢过。我不会说当地的话。

后来出门,去中国内地,去其他我不懂当地语言的国家,手机都用不了流量。每一次我想要的都是同一样东西:一个不用联网的翻译工具,让我能听懂别人,也能和他们说上话。

Knowless 就是我在这件事上的尝试。它直接在手机上把语音实时转写、翻译出来。我设计了它,也用 AI 辅助工具把它开发了出来。1它大概是我做过的最简单的 App:一个界面,一个按钮。为了做到这么简单,我走了三次弯路。

第一次尝试:雷达

第一版是一个一直在听的雷达。我设想它只靠声音就能判断说话的人在哪儿。

没过多久我就知道它做不到。我的手机录音拿不到空间音频,所以录音里没有任何信息能说明声音是从哪儿来的。就我读到的来看,新一点的机型也许可以。我没有那样的手机。我不再试着靠声音来做这件事。

第二次尝试:两个摄像头

于是我不用耳朵,改用眼睛。前后两个摄像头同时开着,找正在说话的那张脸,好让 App 知道那个人在哪儿。

这个方案做到了能在我手机上跑起来的程度,一切都在设备上,没有服务器:它盯着两个摄像头,试着把每个声音和一张脸对上。它败在了要紧的地方。手机发烫。电量掉得很快。卡死,而且经常卡死。这个方案我也放弃了。

用自己的耳朵听

有些决定小一些,分量却一样重。纸面上,给吵闹的地方做降噪,听起来很合理。后来我用自己的耳朵听了一段很吵的录音。连我自己在说什么,我都听不清。降噪做得再多也救不回来,所以我放弃了这个想法。

这就是我说的“人在回路”(human in the loop)。我用 AI 开发,就得不断检查,自己提的要求放在真实情境里到底合不合理。决策这一环极其重要。

模型也是一样。我一个一个地测,花了很长时间。早期的方案里,模型下载到手机上,整个 App 会达到大约 4 GB。第一版原型还保留着对话记录。为了赶上 Shipaton 按时上线,我把它砍了,结果还是差点错过截止日期。

我听不清的,什么滤波器也听不清

最后留下的

一个界面,一个按钮。按下,说话,翻译。

译文那一行字大。原文紧贴在它下面:小一些,灰色,斜体。

100% 字号的“Thank you for your help.”,下面是小一些的灰色斜体“Gracias por su ayuda.”。 同一句话,字号 300%。现在它占满整个宽度,排成三行;西班牙语原文也变大了,但仍然小一些,仍是灰色。

字放大了,这个顺序也不变。双指捏合就能缩放,从 50% 到 300%。要听哪些语言,事先选好,最多三种。你还可以把一行带走:复制它,或者让它朗读出来。

那两天

一个很小的功能,做起来却极其复杂:文字怎么出现。

看上去是音频变成文字,文字再显示到屏幕上。其实不是。音频先变成一个猜测,这个猜测立刻上屏,所以才有实时的感觉。接着再修正这个猜测,如果修正后不一样,屏幕上的字就跟着变。一个长句说完,还有一轮处理,结合整句的上下文再修正一次。

这几种状态,每一种都得看着对,中间等待的那一段也一样。正在出现的那一行,画成一串不断变化的字符,跟在琥珀色的光标后面。定下来的一行就是普通文字,不再动。

我在 App 和设计稿之间来来回回,花了两天多。从一开始我就知道,我想让它用起来符合直觉,也相信大家能感觉到。我没想到会花这么久。

Knowless 实时界面:一行行译文,各自的原文在下面。

有些东西不该在那儿。不是每个人都会注意到。

有一说一

语音识别和翻译都在手机上运行。语言需要先联网下载一次;之后,核心功能不联网也能用。所以我准备的商店截图上写着“works offline”(可离线使用),并且一口气把条件也带上:下载所支持的语言之后。

两行译文和各自的西班牙语原文,出自我为 App Store 准备的那张讲离线使用的截图。

这里没有证明的事

这里没有成果数据:没有理解度评分,没有可用性研究,没有用户量数字。我能给你看的,是走过的这条路,和它最后通到了哪里。

下一步,我想让两个人各拿一部手机,互相实时翻译。这个还没做出来。

在 App Store 查看 Knowless 我在看设计岗位的机会。联系方式

  1. 关于 AI 辅助:这里写到的决定都是我做的。我指挥工具,读它们产出的东西,再到真机上检查。我不会说每一行代码都是手写的。↩
  2. 关于图片:片段剪自我为 App Store 做的预览视频,没有声音。片段里的对话,以及本页所有界面里的对话,都只是示意,不是真实对话。静态图来自我为 App Store 准备的一套截图;商店页面上展示的可能是另一套。雷达那幅图是为这个页面画的,不是截图。你可以上手试的阅读界面,是为这个页面做的小型复刻,不是 App 本身。