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.
- 📝 Interactive Editor: A rich text editor synchronized with audio playback for easy corrections.
- ✨ LLM Assistant: Polish and translate transcripts using OpenAI, Anthropic, Gemini, or Ollama.
- 📤 Smart Export: Export in multiple formats (TXT, SRT, VTT, JSON) with bilingual support.
- 🤖 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, transcript editing, LLM features, export, history, 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:
npm(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 (Note: This also triggers the existing
scripts/setup-ffmpeg.jsprebuild/setup step for local development.)npm install
-
Run the application
npm run tauri dev
-
Run frontend tests
npm test
Sona allows you to choose the AI model that best fits your needs, both for offline transcription and online assistance.
- Navigate to Settings > Models.
- 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 a model to power the Polish and Translate features.
To build the application for production:
npm run tauri buildThe executable will be generated in src-tauri/target/release/bundle.