Skip to content

Repository files navigation

VoxNote

本地優先的 AI 會議助理
錄音 · 語音轉文字 · AI 校對 · 智慧摘要

Tauri Rust TypeScript License Platform

中文版 | English

VoxNote 應用程式截圖


目錄


簡介

VoxNote 是一款以本地優先設計的桌面會議助理。所有資料儲存於本機 SQLite,錄音檔案存放於本地磁碟,無強制雲端依賴。

支援使用 AssemblyAI(雲端)或 Whisper(本地)進行語音轉文字,並整合多種 LLM 提供商(OpenAI、Claude、Gemini、Ollama、OpenRouter 等)進行 AI 校對與摘要生成。

會議錄音 → 語音轉文字 → AI 校對 → 智慧摘要 → 匯出

功能特色

會議管理

  • 建立、編輯、刪除會議,支援分類與標籤
  • 參與者管理(含常用參與者快速選取)
  • 會議模板(預設標題、分類、參與者)

錄音功能

  • 桌面錄音流程,支援停止後預覽再儲存
  • Windows 支援「僅麥克風 / 僅電腦音訊 / 麥克風 + 電腦音訊混音」錄音
  • 支援上傳音訊檔案(.wav / .mp3 / .m4a / .ogg / .aac / .flac,最大 500MB)
  • 自訂音訊播放器(播放/暫停、進度條、靜音)

電腦本地音訊錄音目前以 Windows 為優先支援平台,會擷取系統預設播放裝置的聲音。

語音轉文字(ASR)

  • AssemblyAI(雲端):自動語言偵測、說話者分離
  • VoxNote 自架 ASR 轉錄服務:結合 Breeze-ASR-26 與 WhisperX 的自架轉錄端點(需 NVIDIA GPU)
  • 本地 Whisper:偵測 PATH 中的 whisperfaster-whisperopenai-whisper

AI 校對

  • 修正錯字、同音異字、標點錯誤
  • 保留原始時間戳記([MM:SS]
  • 自動偵測縮略品質,不符標準時提示確認
  • 保存原始版本與校對版本,可隨時切換

AI 摘要

  • 生成結構化 Markdown 摘要(主題、待辦事項、重要時間點等)
  • 支援自訂 Prompt

匯出

  • 整包會議匯出:逐字稿、摘要、音訊一站式打包
  • 逐字稿 TXT(原始版 / 校對版)
  • 摘要 Markdown

UI 設計

  • 全新暖色調檔案館風格主題
  • 垂直單欄會議列表佈局,強調視覺層級
  • 純文字符號導航列,優化可讀性

技術架構

層次 技術
桌面框架 Tauri 2.0
後端 Rust + sqlx(SQLite)
前端 Vanilla TypeScript + Vite
AI 呼叫 reqwest(HTTP)— 無第三方 AI SDK
設定儲存 TOML(AppData 目錄)
src/                    # 前端(Vanilla TypeScript)
├── api/                # Tauri invoke 封裝層
├── components/         # DOM 元件
├── pages/              # 頁面渲染(Hash Router)
└── types/index.ts      # 全域型別定義

src-tauri/src/          # Rust 後端
├── commands/           # Tauri IPC handlers
├── db/                 # SQLite CRUD + migration
├── ai/                 # LLM 統一呼叫入口(call_llm)
├── asr/                # 語音辨識(AssemblyAI + 自架服務 + 本地 Whisper)
└── config/             # AppConfig 讀寫

系統需求

執行環境

  • Windows 10 / 11(x64)
  • macOS 12+(Apple Silicon 或 Intel)

開發環境

Windows 額外需要(C++ Build Tools):

winget install Microsoft.VisualStudio.2022.BuildTools

快速開始

1. 複製專案

git clone https://github.com/chinglee17/voxnote.git
cd voxnote

2. 安裝前端相依套件

npm install
# 或使用 bun
bun install

3. 開發模式

# 僅啟動 Vite 前端(port 1420)
npm run dev

# 啟動完整 Tauri 應用(含 Rust 後端,首次編譯約 2-5 分鐘)
npm run tauri dev

4. 建置發行版

npm run tauri build

產出物位於 src-tauri/target/release/bundle/


AI 供應商設定

啟動應用後,前往「設定」頁面設定 AI 供應商。

支援的 LLM 供應商

供應商 需要 API Key 說明
OpenAI GPT-4o 等
Claude Anthropic Claude 系列
Gemini Google Gemini 系列
OpenRouter 多模型代理
Ollama 本地 LLM,需先安裝 Ollama
自訂端點 可選 任何 OpenAI 相容 API

Ollama 快速設定

# 安裝並執行 Ollama
ollama serve

# 拉取模型(範例)
ollama pull llama3.2
ollama pull qwen2.5

在 VoxNote 設定中填入 Endpoint http://localhost:11434 並選擇模型即可。


ASR 語音辨識設定

AssemblyAI(雲端)

  1. 前往 AssemblyAI 申請 API Key(有免費額度)
  2. 在 VoxNote 設定 → ASR 供應商選「AssemblyAI」,填入 API Key

VoxNote 自架 ASR 轉錄服務

位於 server/,以 Breeze-ASR-26(繁體中文台灣用語最佳)搭配 WhisperX(詞級對齊與語者分離)提供 OpenAI 相容的轉錄端點,供自有環境部署。

狀態:API、Docker 與部署契約已完成,尚未在具備 GPU 的機器上實機驗證轉錄品質與效能。

前置需求

  • 具備 NVIDIA GPU 的機器(含 Driver、Docker Engine、NVIDIA Container Toolkit)
  • Hugging Face access token(啟用語者分離時所需)
  • 將 Breeze-ASR-26 權重轉為 CTranslate2 格式(約 6GB)

啟動

cd server
docker compose up -d --build
curl http://localhost:8000/health

完整部署步驟(模型轉檔、pyannote 授權、環境變數、小 VRAM 機器調校)詳見 server/README.md

app 端設定

設定 → 語音轉錄 → 選擇「VoxNote 轉錄服務」,Base URL 填入服務位址(例如 http://192.168.0.10:8000)。

本服務預設無驗證機制,請部署於受信任的網路環境。

本地 Whisper

安裝以下任一工具並確保在系統 PATH 中可被呼叫:

# 選項 A:openai-whisper(Python)
pip install openai-whisper

# 選項 B:faster-whisper(較快)
pip install faster-whisper

# 選項 C:whisper.cpp(C++,效能最佳)
# 詳見 https://github.com/ggml-org/whisper.cpp

VoxNote 啟動時會自動偵測已安裝的工具,在設定頁面中選取即可。


貢獻指南

歡迎提交 Issue 與 Pull Request。

開發規範

  • Rust 錯誤處理:使用 ?anyhow,禁止 .unwrap()
  • 新增後端功能:在 src-tauri/src/commands/ 新增 command,並在 src-tauri/src/lib.rs 注册
  • 新增前端 API 呼叫:在 src/api/ 對應檔案封裝,禁止在頁面 / 元件直接呼叫 invoke()
  • DB schema 變更:使用 ALTER TABLE(向下相容),禁止刪除現有欄位
  • 主鍵一律使用 UUID v4 字串

分支命名

feature/功能名稱
fix/問題描述

推薦 IDE

VS Code + Tauri + rust-analyzer


授權條款

MIT License


本專案使用 Tauri 建置

About

本地優先的 AI 會議助理 — 錄音、語音轉文字、AI 校對、智慧摘要,支援自架 ASR 服務

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages