digimata/quill
Ultra-minimalist macOS recording + transcription.
quill – 本地 macOS 會議錄音與轉錄工具
是什麼 – 一個駐留在 macOS 菜單列的單一二進制 Swift 應用。只需點擊一次,即可同時錄製麥克風與電腦播放的所有音訊,將兩條音軌分別儲存為獨立的 .caf 檔案,並使用本地語音識別模型生成帶說話人標籤的轉錄文字。所有資料均不會離開裝置。
主要功能
- 透過菜單列圖示一鍵開始/停止錄音。
- 兩條音訊軌道(麥克風 + 系統音訊),使語音識別模型在乾淨的單一音源上運作,無需額外的說話人識別模型即可實現自然的 我 vs 他們 的說話人分離。
- 使用 Parakeet TDT 0.6B v2 Core ML 模型進行完全本地化轉錄(在 Apple Silicon 上每小時約需 20 秒計算)。計畫加入 WhisperKit 作為回退方案。
- 自動排隊:每個錄音依序轉錄;未完成的任務在下次啟動時自動恢復。
- 可設定輸出目錄、可選轉錄、可選麥克風回音消除,以及一個在會話結束後執行 shell 命令的鈎子(
on_stop)。 - 簡潔的 CLI,用於啟動守護程序、變更錄音根目錄、檢查健康狀態(
quill doctor),以及安裝/卸載開機自啟代理。
工作原理
- 錄音 – 使用 macOS Core Audio 進程鈎子(
AudioHardwareCreateProcessTap)捕獲所有系統音訊,使用AVAudioEngine捕獲麥克風音訊。音訊直接流式傳輸到 AAC 編碼的 CAF 檔案,即使進程崩潰也能讀取。 - 轉錄 – 每條音軌透過 FluidAudio Core ML 包裝器輸入到 Parakeet 模型。根據
meta.json中的時間偏移對兩條轉錄文字進行時間對齊,並合併為一個帶時間戳和說話人標籤的單一轉錄文字(transcript.json和渲染後的transcript.md)。 - 佇列與持久化 – 存在
meta.json但無transcript.json表示任務待處理;檔案系統本身擔任佇列,因此在前一個錄音仍在轉錄時,可啟動新的錄音。
安裝與使用
# 建立 Swift 二進制檔案
cd quill
swift build -c release
sudo cp .build/release/quill /usr/local/bin/quill
# 可選:開機自啟
quill install --launch-at-login
- 執行
quill(或 LaunchAgent)以啟動菜單列守護程序。 - 點擊羽毛圖示 → 開始錄音,再次點擊 → 停止。
- 轉錄自動執行;macOS 通知將提示完成。
- 錄音儲存在
~/Recordings/<yyyy.MM.dd-HHmm>/目錄下,包含:mic.caf(你的聲音)system.caf(其他參與者 / 系統音訊)meta.json(時間戳)transcript.json與transcript.md(機器可讀與人類可讀版本)transcribe.log(進度 / 錯誤)
設定(可選 ~/.config/quill/config.json)
{
"recordings_dir": "~/Recordings",
"transcription": {"enabled": true, "engine": "parakeet"},
"on_stop": "my-hook"
}
recordings_dir可覆蓋預設路徑。- 將
transcription.enabled設為false可僅錄製音訊。 mic_voice_processing可切換 Apple 的回音消除(在透過喇叭錄音時有用)。on_stop在轉錄完成後,以會話資料夾為參數執行 shell 命令。
限制 / 注意事項
- 系統音訊鈎子會記錄 Mac 播放的所有內容;背景音樂或通知將出現在
system.caf軌道中。 - 需要 macOS 15+(進程鈎子 API),在 Apple Silicon 上運行可獲得合理轉錄速度。
- 當前模型僅支援英語;一旦加入 Whisper 回退方案,將支援其他語言。
- 必須授予「螢幕與系統音訊錄製」權限,否則錄音將無聲。
技術堆疊
- Swift(Swift Package Manager 單一可執行檔)
- Core Audio 進程鈎子:系統音訊捕獲
- AVAudioEngine 與 AVAudioFile:麥克風捕獲與 AAC 編碼串流傳輸
- FluidAudio / Parakeet Core ML 模型:本地轉錄
- NSStatusItem:菜單列 UI
所有細節均直接取自倉庫的 README。
相關
- 專案
- 專案
- Dispatch
- 專案
- 專案