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 的即時畫面:一行行譯文,原文在各自的下方。

有些東西不該在那裡。不是每個人都會注意到。

有幾分說幾分

語音辨識和翻譯都在手機上運作。語言要先連線下載一次;之後核心功能不用連線也能用。所以我準備的 App Store 截圖寫著「works offline」,並且一口氣把條件也講完:下載支援的語言之後。

兩行譯文和各自的西班牙文原文,出自我替 App Store 準備的那張講離線使用的截圖。

這篇沒有證明的事

這裡沒有成效數據:沒有理解度分數,沒有易用性研究,沒有使用人數。我能給你看的,是走過的路,和它最後走到哪裡。

下一步,我想做到兩個人各拿一支手機,即時互相翻譯。這個還沒做。

在 App Store 查看 Knowless 歡迎設計工作機會。聯絡我

  1. 關於 AI 協助:這裡寫到的決定都是我做的。我指揮工具,讀它們產出的東西,再到實機上檢查。我不會說每一行程式碼都是親手寫的。↩
  2. 關於圖片:短片剪自我替 App Store 做的預覽影片,沒有聲音。短片裡的對話,以及這個頁面上每個畫面裡的對話,都是示意用的,不是真實對話。靜態圖片出自我替 App Store 準備的一組截圖;App Store 頁面上放的可能是另一組。雷達圖是為這個頁面畫的,不是截圖。可以動手試的閱讀畫面,是為這個頁面另外重做的小版本,不是 App 本身。