Skip to content

Repository files navigation

trakktor

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.

Commands

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), and vosk (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) and espeech (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.

Install

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 trakktor
  • trakktor (the trailing word) is the package to install — the workspace root is virtual, so it must be named.
  • --locked builds with the exact dependency versions pinned in Cargo.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 trakktor

For 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 trakktor

On 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.

Layout

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.

Build & test

cargo build --workspace
cargo test --workspace

Formatting uses unstable rustfmt features, so it requires nightly:

cargo +nightly fmt --all

Output and exit codes

The 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.

Acknowledgments

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.

About

A predictable CLI toolbox for coding agents — fully local ML: transcribe speech (Whisper, GigaAM, Vosk), read text aloud in a preset or cloned voice (Qwen3-TTS, ESpeech/F5-TTS), cut silence by voice activity, restore punctuation and casing, split transcripts into paragraphs; plus web feeds. JSON-first, stable flags, meaningful exit codes.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages