CLI audio transcription via Groq Whisper with optional speaker diarization
Project description
transcribe-all
Cloud-first transcription CLI with optional speaker diarization. Built for fast hackathon delivery: simple install, practical output, and clear timestamps.
Why this project
- Fast transcription via Groq Whisper models
- Speaker segmentation via pyannote (optional)
- Clean sentence blocks with timestamp formatting
- Handles large files by splitting and merging automatically
- Works from terminal with one command
Quick start
git clone https://github.com/syrex1013/Transcribe.git
cd Transcribe
chmod +x install.sh transcribe
./install.sh
Transcribe:
transcribe recording.mp3 en
Easy install (copy/paste)
Compatibility
| OS | Compatible |
|---|---|
| macOS | ✅ |
| Ubuntu/Debian | ✅ |
| Other Linux distros | ✅ |
| Windows | ✅ |
| WSL (Ubuntu/Debian) | ✅ |
Install options
Homebrew (macOS / Linux)
brew tap syrex1013/transcribe-all https://github.com/syrex1013/Transcribe
brew install transcribe-all
apt-get (Debian / Ubuntu)
echo "deb [trusted=yes] https://syrex1013.github.io/Transcribe/apt ./" \
| sudo tee /etc/apt/sources.list.d/transcribe-all.list
sudo apt-get update
sudo apt-get install -y transcribe-all
pip (all platforms)
pip install transcribe-all
Optional diarization extras:
pip install "transcribe-all[diarize]"
npm (all platforms — no Python required)
npm install -g transcribe-all
The npm package downloads the correct pre-built native binary for your OS/arch during installation. No Python or pip needed.
Pre-built binaries (manual download)
Grab the right binary for your platform from the latest GitHub Release:
| Platform | Binary |
|---|---|
| Linux x86-64 | transcribe-linux-x64 |
| macOS Intel | transcribe-darwin-x64 |
| macOS Apple Silicon | transcribe-darwin-arm64 |
| Windows x86-64 | transcribe-windows-x64.exe |
# Linux / macOS example
chmod +x transcribe-linux-x64
sudo mv transcribe-linux-x64 /usr/local/bin/transcribe
transcribe --help
Verify any install method:
transcribe --help
Full install details and troubleshooting: INSTALLATION.md
Usage
# basic
transcribe input.mp3 en
# expected speaker count
transcribe interview.mp3 en --speakers 2
# disable diarization
transcribe lecture.mp3 en --no-diarize
# local whisper.cpp mode
transcribe input.mp3 en --local
Configuration
The tool reads tokens from environment variables and from:
~/.config/transcribe/config
Required:
GROQ_API_KEY
Optional:
HF_TOKENfor pyannote speaker diarizationWHISPER_MODEL_PATHfor--localmode (path toggml-large-v3.bin)
Use .env.example as reference.
Example output
-- Speaker 1 ----------------------------------------
[00:00] Welcome to the demo recording.
[00:04] Today we will test HTTP interception in Burp.
-- Speaker 2 ----------------------------------------
[01:32] Open the Proxy tab and enable intercept.
[01:38] Now inspect headers and session cookies.
Project layout
.
├── transcribe # CLI entrypoint (bash wrapper)
├── transcribe_groq.py # Core transcription + diarization pipeline
├── npm/ # npm package (binary distribution)
├── Formula/ # Homebrew formula
├── scripts/ # Debian packaging scripts
├── install.sh # Installer for dependencies and shell setup
├── INSTALLATION.md # Detailed install and PATH guide
├── .env.example # Environment variable template
├── CHANGELOG.md
├── RELEASE_CHECKLIST.md
└── assets/
├── hero-banner.svg
└── pipeline-diagram.svg
Release pipeline
Every v* tag triggers a fully automated release:
| Step | What happens |
|---|---|
| Binaries | PyInstaller builds for Linux, macOS (Intel + Apple Silicon), and Windows |
| GitHub Release | All binaries attached automatically |
| PyPI | Wheel + sdist published via OIDC trusted publishing |
| APT repo | .deb package rebuilt and pushed to GitHub Pages |
| Homebrew | Formula URL and SHA256 patched and committed automatically |
| npm | Binary-wrapper package published to the npm registry |
Installation guide
The installer is designed to:
- Install required dependencies:
ffmpeg,ffprobe, Python packages fromrequirements.txt - Install
transcribeglobally in/usr/local/binwhen possible - Fallback to user-local install in
~/.local/binwhen system install is unavailable - Update shell profile so
transcribeis available everywhere - Persist token config in
~/.config/transcribe/config
License
MIT. See 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 transcribe_all-0.4.0.tar.gz.
File metadata
- Download URL: transcribe_all-0.4.0.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76d81b7b36a579d515ffc7396ce07e5ddf07ae42125bdfc693ea5203ed97891a
|
|
| MD5 |
ca567c2189a1586df87a51e6a3fac3c4
|
|
| BLAKE2b-256 |
3fe71d7a4f85eb2976606a71418e94e50a40ef1110de4c7053e25eba0294ce18
|
Provenance
The following attestation bundles were made for transcribe_all-0.4.0.tar.gz:
Publisher:
publish-pypi.yml on syrex1013/Transcribe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
transcribe_all-0.4.0.tar.gz -
Subject digest:
76d81b7b36a579d515ffc7396ce07e5ddf07ae42125bdfc693ea5203ed97891a - Sigstore transparency entry: 1049889990
- Sigstore integration time:
-
Permalink:
syrex1013/Transcribe@4a5d4e420f7f37594d1d5c0c6f38407e2ccf372d -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/syrex1013
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@4a5d4e420f7f37594d1d5c0c6f38407e2ccf372d -
Trigger Event:
push
-
Statement type:
File details
Details for the file transcribe_all-0.4.0-py3-none-any.whl.
File metadata
- Download URL: transcribe_all-0.4.0-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b988ed99861dfe4ae4169c6acc4aa3a7ba379e64b54477b4c986b7f184430fbb
|
|
| MD5 |
f4f17d87ddd68ff76f3f0250fea14e91
|
|
| BLAKE2b-256 |
5fdac52564251b079cd126b57ac69a2d0537d2b9aaf8739b297c6f1f7009d266
|
Provenance
The following attestation bundles were made for transcribe_all-0.4.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on syrex1013/Transcribe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
transcribe_all-0.4.0-py3-none-any.whl -
Subject digest:
b988ed99861dfe4ae4169c6acc4aa3a7ba379e64b54477b4c986b7f184430fbb - Sigstore transparency entry: 1049890001
- Sigstore integration time:
-
Permalink:
syrex1013/Transcribe@4a5d4e420f7f37594d1d5c0c6f38407e2ccf372d -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/syrex1013
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@4a5d4e420f7f37594d1d5c0c6f38407e2ccf372d -
Trigger Event:
push
-
Statement type: