trakktor is a predictable, automation-friendly Rust CLI toolbox for coding
agents (Claude Code, OpenCode, etc.): speech-to-text and text-to-speech,
voice-activity audio editing, feeds, text structuring, and more —
machine-readable output, stable flags, and meaningful exit codes.
Each command is documented in full on its own page under
docs/features/:
asr— speech recognition: transcribe (or translate) speech from an audio file, with three engines —whisper(many languages, autodetection, translation to English),gigaam(GigaAM Conformer models, mainly Russian), andvosk(Vosk's Zipformer2 transducers, offline and streaming).tts— speech synthesis: text in, an audio file out — plain text or Markdown, any length, fully local. Two engines —qwen3-tts(ten languages, nine preset voices) andespeech(Russian, the voice cloned from a recording you supply, stress marked automatically).vad— voice-activity audio editing: find the speech in an audio file and report it, cut the silence out, or split the recording into clips.text— structure and transform text: split a wall of text into paragraphs (structify), restore punctuation and casing in raw transcripts (punctuate), and mark the stressed vowel in Russian — with the letterёrestored — for a speech synthesizer to read (stress), all fully offline.feed— RSS / Atom / JSON Feed: discover feeds on a page and read them with per-item read state.skill— generate the agent skill: trakktor describes itself to a coding agent, generated from the live CLI definition so it always matches the installed binary.
Requires a stable Rust toolchain ≥ 1.88 (edition 2024; nightly is only
needed for cargo fmt, not to build). The binary installs into ~/.cargo/bin,
which must be on your PATH.
From git:
cargo install --locked --git https://github.com/lymar/trakktor.git trakktortrakktor(the trailing word) is the package to install — the workspace root is virtual, so it must be named.--lockedbuilds with the exact dependency versions pinned inCargo.lock(reproducible); omit it to pull the latest semver-compatible versions.
From a local clone (installs whatever is checked out):
git clone https://github.com/lymar/trakktor.git
cd trakktor
cargo install --locked --path trakktorFor GPU acceleration on macOS (speech recognition and text structuring), add
--features metal to either install command; see
Device and precision in
the asr docs.
Verify, then remove if needed:
trakktor --version
cargo uninstall trakktorOn Linux, the build pulls in reqwest's default TLS, which needs OpenSSL
(pkg-config plus libssl-dev/openssl-devel); macOS uses the system TLS and
needs nothing extra.
A Cargo workspace with a flat crate layout:
trakktor— the CLI binary: argument parsing, configuration, output formatting. A thin layer over the library.trakktor_core— the library: all functionality, independent of the CLI.
cargo build --workspace
cargo test --workspaceFormatting uses unstable rustfmt features, so it requires nightly:
cargo +nightly fmt --allThe default output is machine-readable JSON (--pretty indents it); --text
switches to human-readable text. Data is written to stdout, errors to stderr.
0— success.1— runtime/validation error (network, parsing, I/O, bad value). Formatted like normal output: JSON{ "error": { "code": "…", "message": "…" } }by default, plain text with--text.2— usage error (unknown flag, missing argument); always text, from the argument parser.
Global options (usable before or after the command): --work-dir <path> (also
TRAKKTOR_DIR; default ./.trakktor, per-project state such as feed
read-state), --model-dir <path> (also TRAKKTOR_MODEL_DIR; default
~/.trakktor, where model weights are cached — see
Model storage), --text,
--pretty.
trakktor ports and builds on several open-source projects, all MIT- or
Apache-licensed — Whisper, GigaAM, Vosk, Qwen3-TTS, F5-TTS and the ESpeech
checkpoints, Vocos, Silero-VAD, Silero Stress, SaT / wtpsplit, and the
1-800-BAD-CODE punctuation model, on the candle and burn runtimes. The full credits — with
licenses, upstream links, and papers — live in
docs/acknowledgments.md; see NOTICE
for the complete third-party attributions and license notices.