Local-first CLI for speech transcription with speaker diarization
Project description
Surivoice
Local-first speech transcription with speaker diarization.
Surivoice is an open-source tool that takes a video or audio file, transcribes speech to text using Whisper, identifies speakers using pyannote.audio, and outputs a structured Markdown transcript — all running locally on your machine.
Features
- 🎙️ Speech-to-text transcription (via faster-whisper)
- 👥 Speaker diarization (via pyannote.audio)
- 📝 Structured Markdown output with timestamps
- 🔒 Fully local — no cloud APIs, your data stays on your machine
- ⚡ GPU-accelerated with CPU fallback
- 🖥️ GUI with dark/light theme — or use the powerful CLI
Requirements
- Python 3.10+
- OS: Linux, macOS, or Windows (fully supported natively!)
- FFmpeg installed and added to your system
PATH:- Ubuntu/Debian:
sudo apt install ffmpeg - macOS:
brew install ffmpeg - Windows:
winget install ffmpeg
- Ubuntu/Debian:
- A Hugging Face access token (for pyannote.audio models)
Installation
Because Surivoice relies on heavy Machine Learning libraries (PyTorch, Faster-Whisper, Pyannote), you must install it with the [ml] extra flag to pull these dependencies.
Recommended (via pipx for isolated environments):
pipx install "surivoice[ml]"
Alternative (via pip in a virtual environment):
pip install "surivoice[ml]"
For GPU support, ensure you have CUDA-enabled PyTorch installed.
Note (Linux only): The GUI requires
tkinter, which may not be installed by default. Install it with:sudo apt install python3-tk(Ubuntu/Debian) or your distro's equivalent. On Windows and macOS, tkinter is included with the standard Python installer.
Development
git clone https://github.com/MozartSoares/surivoice.git
cd surivoice
pip install -e ".[dev,ml]"
Usage
Authentication
To use pyannote.audio for speaker diarization, you need to provide a Hugging Face access token:
surivoice save-token YOUR_HF_TOKEN
Or you can use the --hf-token flag when transcribing, or export the HF_TOKEN environment variable.
GUI
Launch the graphical interface for a visual, point-and-click experience:
surivoice gui
The GUI provides:
- File pickers for input audio/video and output Markdown
- Model and device selection from dropdowns
- Language and speaker count options
- HF token management in the Settings tab
- Dark / Light theme toggle (defaults to dark)
- Real-time status log during transcription
CLI Transcription
surivoice transcribe -i meeting.mp4 -o transcript.md
CLI Options
| Flag | Description | Default |
|---|---|---|
-i, --input |
Input video/audio file | required |
-o, --output |
Output Markdown file | required |
-m, --model |
Whisper model size | large-v3 |
-d, --device |
Compute device (auto, cpu, cuda) |
auto |
--compute-type |
Quantization algorithm | int8 |
-l, --language |
Language code (auto-detect if omitted) | None |
--hf-token |
Hugging Face access token (or set HF_TOKEN env var) |
None |
-s, --speakers |
Exact speaker count hint | None |
-v, --version |
Show version and exit |
Supported Formats
Video: .mp4, .mkv, .avi, .mov, .webm
Audio: .mp3, .wav, .flac, .ogg, .m4a, .aac, .wma
Credits
Created by Mozart Soares.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file surivoice-0.2.0.tar.gz.
File metadata
- Download URL: surivoice-0.2.0.tar.gz
- Upload date:
- Size: 36.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9623c2bdd3fc4522c5011ed89a70fe805b79a6ca558360e33ccd713fb2a8c306
|
|
| MD5 |
baad7a924c95646c24ceed7da0f037b8
|
|
| BLAKE2b-256 |
052b69139594f0f60eb6a7a1cca3e8c8ce0ae0d92bee49b17027c2d23fca19fc
|
File details
Details for the file surivoice-0.2.0-py3-none-any.whl.
File metadata
- Download URL: surivoice-0.2.0-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a892c9921cd121390794d0f2c79e4f89c5f834c72dbf0eccd2d73a493a0d6f6e
|
|
| MD5 |
83e1490de7d00a85a4de43b044dcaedc
|
|
| BLAKE2b-256 |
9092b4ee41ec97f1337ca428e64836765951ca9b317cf7b742dbddc50e5d7fce
|