Sona is a powerful, offline transcript editor built with Tauri, React, and Sherpa-onnx. It provides fast, accurate, and private speech-to-text capabilities directly on your local machine using a high-performance Rust backend.
- 🔒 Offline & Private: All speech processing happens locally on your device. No data leaves your machine.
- 🎙️ Real-time Transcription: Record and transcribe audio in real-time with low latency.
- 📁 Batch Processing: Import multiple audio or video files for bulk transcription in the background.
- 🗂️ Workspace Organization: Use
Workspace,Projects, andInboxto organize saved recordings and imports. - 📝 Interactive Editor: A rich text editor synchronized with audio playback for corrections, speaker labels, and version snapshots.
- 👥 Speaker Profiles & Review: Build local speaker profiles, correct speaker badges segment by segment, and review suggested or anonymous speaker groups before export.
- ✨ LLM Assistant: Polish, translate, and summarize transcripts using OpenAI, Anthropic, Gemini, or Ollama.
- 🗣️ Live Caption & Voice Typing: Reuse the same offline live transcription stack for floating captions or dictation into other applications.
- 📤 Smart Export: Export in multiple formats (TXT, SRT, VTT, JSON) with bilingual support.
- 🛟 Recovery, Backup & Diagnostics: Resume interrupted work, export lightweight backups of config, workspace, and text history, and inspect model/runtime health from the app.
- 🔔 Notifications & Automation: Use the header notification center for updates, recovery, and automation results, and configure watched-folder automation rules in Settings.
- 🤖 Advanced AI Models: Powered by state-of-the-art models like SenseVoice, Whisper, and Paraformer.
The easiest way to install Sona is to download the pre-built binaries for your platform from the GitHub Releases page.
For end-user setup and daily workflows, read the User Guide. It covers first-run setup, Live Record, Batch Import, Workspace / Projects / Inbox, transcript editing, speaker review, version snapshots, LLM features, Voice Typing, export, Dashboard / backup / recovery entry points, and troubleshooting.
Sona supports offline batch transcription commands directly through the main desktop executable. Packaged installs do not add it to your shell PATH, so invoke the app binary itself with CLI subcommands.
Installed package locations:
- Windows: run
Sona.exe transcribe ...from the installation directory - macOS: run
/Applications/Sona.app/Contents/MacOS/Sona transcribe ... - Linux: run the packaged
Sonabinary with CLI subcommands from the install location - AppImage: run the mounted AppImage executable with CLI subcommands
Source builds can still run the CLI directly with Cargo:
cargo run --manifest-path src-tauri/Cargo.toml -- transcribe ./sample.mp4 --config ./sona-cli.toml --output ./sample.srtCurrent CLI scope is intentionally narrow:
- Single-file offline transcription
- Export to
json,txt,srt, orvtt - Exposed through the main desktop executable, but not registered on
PATH
For the full CLI guide and a minimal TOML example, read docs/cli.md.
- Node.js: v20 or later (for frontend build).
- Rust: Stable release (required for the Tauri backend).
- Package Manager:
pnpmvia Corepack (recommended).
If you are running on Linux (Ubuntu/Debian), ensure you have the necessary system dependencies:
sudo apt-get update
sudo apt-get install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libasound2-dev-
Clone the repository
git clone https://github.com/AirSodaz/sona.git cd sona -
Install dependencies
corepack enable pnpm install -
Run the application
pnpm run tauri dev
-
Run frontend tests
pnpm test
Sona allows you to choose the AI model that best fits your needs, both for offline transcription and online assistance.
- Navigate to Settings > Model Settings.
- Choose from a curated list of high-performance models:
- SenseVoice: Best for multilingual support and emotion recognition.
- Whisper (Tiny): Lightweight version of OpenAI's Whisper model.
- Paraformer: Optimized for streaming.
- Click Download. The model will be automatically stored locally.
- Navigate to Settings > LLM Service.
- Select your provider (OpenAI, Anthropic, Gemini, or Ollama).
- Enter your API Key and Base URL (if applicable).
- Select the models that power polish, translation, and summary generation.
To build the application for production:
pnpm run tauri buildThe executable will be generated in src-tauri/target/release/bundle.