← 返回首頁
Vincent Yang
Vincent Yang
@m1ssuo
429🔁 44
𝕏 (Twitter)🔥
AI 中文摘要Claude 生成

Koe 是一款極簡主義的 macOS 語音輸入工具,採用零 GUI 設計,體現了「用聲音輸入,自動修正,直接貼上」的核心哲學——沒有臃腫介面、沒有繁瑣操作,只有純粹的語音功能。

開發背景與設計理念

開發者試遍了市面上幾乎所有語音輸入應用,發現都存在同樣的痛點:要麼付費、要麼界面醜陋、要麼使用繁瑣。常見問題包括臃腫的使用者介面、笨重的詞典管理,以及執行簡單操作需要點擊多次。Koe 因此採取截然不同的設計路線,全部設定都存放在純文字檔案中,使用者可用任何文字編輯器或 vim 直接編輯,無需打開應用程式。

核心功能特性

  • 完全沒有圖形介面,選單欄只顯示一個小圖標
  • 所有設定檔存於 ~/.koe/ 目錄,採用 YAML 和純文字格式,編輯後立即生效
  • 詞典為純 .txt 檔案,每行一個術語,無需逐一透過介面新增,甚至可用 AI 工具批量生成領域專用詞彙
  • 記憶體佔用極小,安裝後不超過 15 MB,運行時約 20 MB,啟動迅速
  • 原生 macOS 技術開發:Objective-C 處理快捷鍵、音訊擷取、剪貼簿存取、權限管理和貼上自動化;Rust 負責效能關鍵部分,提供低開銷、快速執行和強記憶體安全保證
  • 不依賴 Chromium,避免了 Electron 應用 200+ MB 的龐大體積和相關開銷

工作流程

使用者按住觸發鍵(預設為 Fn,可設定),Koe 開始監聽;音訊即時串流至豆包(ByteDance)ASR 服務進行語音識別;識別結果經由 OpenAI 相容 API 的大語言模型進行修正,調整大寫、標點、間距和術語;修正後的文字自動貼入當前應用程式的輸入欄位。

ASR 與 LLM 配置

目前 ASR 僅支援豆包 ASR 2.0(採用雙向串流),LLM 僅支援 OpenAI 相容的 API。豆包配置需要火山引擎認證,支援語義順滑(移除口語重複和填充詞)、文本規範化(將口語數字、日期轉換為標準格式)、自動標點和二遍識別(首次快速串流,次次高精度重新識別,約增加 200 毫秒延遲但準確度顯著提升)。LLM 建議使用快速便宜的模型(如 gpt-4o-mini),溫度設為 0 以確定性修正,請求逾時 8 秒,最大輸出 token 數 1024。

詞典與提示詞自訂

詞典雙重用途:作為 ASR 熱詞提升識別精度,及作為 LLM 提示詞上下文引導模型偏好特定拼寫。使用者可透過 Claude Code 或 shell 指令批量生成詞彙,也可版本控制詞典並跨機器共享。系統提示和使用者提示檔案完全可客製化,預設針對軟體開發者的中英混合場景調優,但可適配任何語言或領域。

權限與安裝

Koe 需要三項 macOS 權限才能完整運作:麥克風(擷取音訊送至 ASR)、輔助功能(模擬 Cmd+V 貼上)、輸入監控(偵測觸發鍵)。缺少任一項都無法完成核心工作流。目前僅支援 Apple Silicon Mac(aarch64-apple-darwin)。安裝方式包括 Homebrew、GitHub Release 下載或從原始碼編譯。編譯需 macOS 13.0+、Rust、Xcode 和 xcodegen。

使用統計與資料庫

Koe 自動在本機 SQLite 資料庫 ~/.koe/history.db 追蹤語音輸入使用量,選單欄下拉菜單顯示總字元數、詞數、錄音時間、工作階段數和輸入速度。使用者可直接用 sqlite3 查詢資料庫或自行建構儀表板和視覺化。

架構設計

Koe 分為兩層:Objective-C 外殼處理 macOS 整合(快捷鍵、音訊、剪貼簿、菜單欄、統計);Rust 核心庫處理網路作業(ASR WebSocket 雙向串流、LLM API、設定、成績單聚合)。兩層透過 C FFI 通訊,Rust 核心編譯為靜態庫並連結至 Xcode 專案。ASR 管道:音訊串流至豆包、首次快速串流結果、次次高精度重新識別、TranscriptAggregator 合併結果並追蹤中間修訂歷史、最終成績單加上中間歷史和詞典送至 LLM 修正。

AI 輔助設定

Koe 提供可與任何 AI 程式碼 Agent(Claude Code、Codex 等)搭配的技能,透過 npx skills add missuo/koe 安裝,引導使用者檢查安裝、設定認證、生成個人化詞典、自訂系統提示及配置觸發鍵和音效反饋。