專案背景
不是每個 AI 應用都適合送上雲端。資料不能外流、網路不穩或要壓低長期成本時,就得把模型跑在本地。我們在 Radxa ROCK 5C(RK3588S,8GB RAM)上用內建 NPU 部署 LLM、VLM 與語音辨識模型,並包成 OpenAI 相容 API。既有程式只要改一下 base URL,就能從雲端切換到本地。
服務端點
/v1/chat/completions:多輪對話、串流輸出、看圖理解/v1/gui/ground:輸入截圖與指令,回傳要點擊的座標,可用於讓 Agent 操作電腦/v1/audio/transcriptions:語音轉文字(Qwen3-ASR / SenseVoice)
實測結果
語音轉文字(FLEURS 中文 10 段,共 115.5 秒)
| 方案 | 字錯率 CER | RTF | 標點 |
|---|---|---|---|
| Qwen3-ASR-1.7B(NPU) | 2.9% | 0.48 | ✅ |
| Whisper large-v3-turbo(NPU) | 3.4% | 1.93 | 部分 |
| Whisper large-v3-turbo q5_0(CPU 4 核) | 3.7% | 4.17 | 部分 |
| SenseVoice(NPU) | 4.7% | 0.076 | ❌ |
| SenseVoice int8(CPU 4 核) | 4.9% | 0.046 | ❌ |
| Whisper small(CPU 8 核) | 7.6% | 0.62 | 部分 |
結論:追求準確度時用 Qwen3-ASR(NPU),比即時還快,而且有標點;追求速度時用 SenseVoice int8,1 分鐘音檔不到 3 秒就能轉完。
GUI 定位(ScreenSpot-v2 抽 32 題)
| 設定 | 準確率 | 每步耗時 |
|---|---|---|
| Qwen3.5-2B 只看整張 | 19% | 7.4 秒 |
| 2B + 放大一次 | 41% | 17.2 秒 |
| 2B + 放大兩次 | 53% | 21.0 秒 |
小模型只看整張截圖時準確率偏低,改成「先粗找、再放大細找」後,準確率提升近 3 倍。
部署重點與踩坑
- 穩定性:這塊板子 8 核全開會硬重置,因此 CPU 重負載一律綁定 4 個大核
- Runtime 版本:RKLLM 1.2.3 與 1.3.0 的 ABI 不相容,所以每個模型各跑一個子程序,由 API 統一調度
- 可替換:對外維持 OpenAI 介面,後端模型可以隨時更換,不影響上層應用
適合的客戶情境
- 醫療、金融、工廠等資料不能出網的場域
- 需要離線語音辨識、影像理解的設備或產品
- 想降低雲端 API 長期費用,把推論搬到邊緣裝置