VibeScribe is a local command-line transcription tool for video and audio files. It uses ffmpeg for audio extraction and whisper.cpp for inference, then exports transcripts as TXT, SRT, VTT, JSON, or HTML.
Your media stays on your machine. VibeScribe only contacts Hugging Face when you download a named model; transcription and inference are fully offline.
- Features
- Requirements
- Installation
- Usage
- Models
- Privacy and security
- How it works
- Development
- Releases
- Contributing
- Support
- Troubleshooting
- Project layout
- Acknowledgments
- License
- Local transcription with no cloud API or API key
- Video and audio input through ffmpeg
- Whisper models from
tinythroughlarge-v3 - Automatic language detection or a manually selected language
- TXT, SRT, VTT, JSON, and HTML exports
- Reusable model cache with atomic downloads
- Configurable inference threads and progress output
- SHA-256 checksums and cross-platform release archives
At runtime, VibeScribe needs:
ffmpegandffprobeonPATH- The whisper.cpp
whisper-cliengine onPATH, or a path inVIBESCRIBE_WHISPER_CLI - A Whisper GGML model, either cached or supplied as a local
.binfile
Building from source requires Go 1.25 or newer. Building whisper-cli from source additionally requires Git, CMake, Make, and a C/C++ toolchain.
Release archives contain only VibeScribe. They do not bundle ffmpeg, whisper.cpp, or model weights.
Download the archive for your operating system and architecture from GitHub Releases, then place vibescribe or vibescribe.exe on your PATH.
Release archives are available for Linux, macOS, and Windows on AMD64 and ARM64.
git clone https://github.com/azzenabidi/vibescribe-cli.git
cd vibescribe-cli
make build
./bin/vibescribe --versionOn Linux, sudo make install copies the binary to /usr/local/bin/vibescribe.
To build directly with Go on any supported platform:
go build -trimpath -o vibescribe ./cmdUse an existing whisper-cli build, or build the pinned v1.9.4 engine from a source checkout:
make whisper-cli
export PATH="$PWD/bin:$PATH"You can also point VibeScribe to a specific binary:
export VIBESCRIBE_WHISPER_CLI=/path/to/whisper-cliThe engine and ffmpeg are runtime dependencies; VibeScribe does not manage or update them automatically.
Transcribe a file with automatic language detection:
vibescribe transcribe -i input.mp4Choose a model, output formats, and an output directory:
vibescribe transcribe \
-i talk.mp4 \
-m small \
-f srt,json,html \
-o transcripts| Flag | Default | Description |
|---|---|---|
-i, --input |
Required | Input video or audio path |
-m, --model |
base |
Model name or path to a GGML .bin model |
-f, --format |
txt,srt |
Comma-separated formats: txt, srt, vtt, json, html |
-o, --output-dir |
. |
Directory for transcript files |
-l, --language |
auto |
Language code such as en, fr, or es, or auto |
-t, --threads |
All CPUs | Number of inference threads |
--yes |
false |
Skip model download confirmation |
--keep-wav |
false |
Keep the extracted WAV file |
Run vibescribe --help or vibescribe transcribe --help for the complete command reference.
Output files use the input filename without its extension. For example, talk.mp4 with --format srt produces talk.srt.
List known and cached models:
vibescribe model listDownload a model before transcription:
vibescribe model download smallModels are stored in $XDG_CACHE_HOME/vibescribe/models or ~/.cache/vibescribe/models. You can also pass any local GGML model path with --model /path/to/model.bin.
VibeScribe downloads named models over HTTPS and rejects empty responses. It does not currently verify model checksums or signatures; use a separately verified model when that assurance is required.
- Input media and generated transcripts are processed locally.
- VibeScribe does not upload media, audio, text, or model files.
- Named model downloads contact
huggingface.coand are cached locally. - Release archives include a SHA-256 checksum file for integrity verification.
media ──ffmpeg──▶ 16 kHz mono PCM WAV ──whisper-cli──▶ segments ──▶ transcript formats
ffprobedetermines the media duration for progress reporting.ffmpegextracts a 16 kHz mono 16-bit PCM WAV track.whisper-cliruns local inference and emits JSON with timestamped segments.- VibeScribe renders the selected transcript formats.
Run the same quality gate used by CI:
make checkThis verifies modules, checks formatting, runs go vet, runs tests with the race detector, and builds the CLI.
Useful commands:
make fmt
make vet
make test
make buildThe test suite is deterministic and does not require ffmpeg, whisper-cli, model downloads, or network access.
Push a semantic version tag such as v0.1.0:
git tag -s v0.1.0 -m "v0.1.0"
git push origin v0.1.0The release workflow verifies the tagged commit, builds Linux, macOS, and Windows binaries, creates archives and SHA-256 checksums, and opens a draft GitHub Release for review.
Contributions are welcome. Open an issue before starting a substantial change, keep pull requests focused, add or update tests and documentation, and run make check before submitting.
Use GitHub Issues for reproducible bugs and feature requests. Include the VibeScribe version, operating system, architecture, exact command, and relevant ffmpeg or whisper.cpp version. Do not attach private media or model files.
Install ffmpeg and ensure both commands are available on PATH:
ffmpeg -version
ffprobe -versionInstall the engine, add it to PATH, or set VIBESCRIBE_WHISPER_CLI to its full path.
Run vibescribe model list, then download the required model with vibescribe model download <name>. Alternatively, pass an existing .bin file to --model.
Confirm that the input contains an audio stream and that ffprobe can inspect it. Corrupt files or video-only inputs cannot be transcribed.
cmd/ Cobra CLI commands
pkg/audio/ ffmpeg and ffprobe integration
pkg/model/ model resolution, cache, and downloads
pkg/transcriber whisper.cpp process and output parsing
pkg/exporter/ transcript format rendering
- whisper.cpp provides local speech recognition.
- FFmpeg provides media demuxing and audio extraction.
- Hugging Face hosts the default model downloads.
VibeScribe CLI is available under the MIT License. whisper.cpp and downloaded Whisper models are separate third-party components with their own licenses.