Performance
我得承認:我對性能有點执著。
不是那種“过早優化”式执著,我知道那條规則。但 Reso 的核心價值就是實時转寫。一旦卡顿,它就失去意義。
我第一次把 Whisper.cpp 跑在 Apple Silicon 上時很興奋。它能跑了!但我一看指標:
0.12x 實時速度。
翻譯一下:8 秒音频要 66 秒才能转寫完。
這顯然不算實時。
第一個突破:CoreML
Whisper 由两部分組成:encoder(重)和 decoder(相對輕)。
真正壓垮 CPU 的是 encoder。而 Apple Silicon 正好有 Neural Engine 來干這類事。
我找到了一個 CoreML 編譯版的 Whisper encoder,接入并不复雜:
- CPU encoder:0.12x
- CoreML encoder:3.2x
好很多,但還不夠。我想要 10x。
第二個突破:編譯優化
真正離譜的地方在這裡。
Whisper.cpp 是 C++ 寫的。你在 Xcode 裡構建 Swift 应用時,Swift 代碼會被激進優化,但 C++ 依赖常常被當作第三方库,優化很有限。
後來我發現可以給 C++ 構建傳自定義 compiler flags:
``bash``
-Xcc -O3 # Max optimization level
-Xcc -flto=thin # Link-time optimization
LTO(Link-Time Optimization) 是關鍵。它會跨文件分析整個編譯結果并內聯函數,减少很多额外开銷。
加上這些參數後:
- Xcode 默認構建:3.2x
- 優化後構建:10.6x
我當時差點從椅子上站起來。
知識成本
這些信息沒有明顯文檔告诉你。我是靠翻 GitHub issues、試 compiler flags、做几十次 profile 挖出來的。前後折腾了两周。
但結果值得:Reso 的转寫已经比你开口說话還快。在 M2 Pro 上,8 秒音频大约 0.75 秒處理完。
為什麼重要
速度不只是一個 feature,它會改變你如何使用工具。
當转寫几乎即時,你就不再思考“它快不快”。你只負責說,文本自動出現。
這就是“你在使用一個工具”和“你几乎忘记它存在”之間的差別。
最好的工具會消失在體驗裡。
這不是行銷,是我們自己踩過的坑。