Terminal voice-to-text powered by Qwen3-ASR-0.6B via antirez/qwen-asr (pure C inference, no PyTorch).
Press Space to record, Space again to transcribe. All local, no network calls.
Note
Requires Python 3.12+, uv, and a C compiler (for the ASR binary).
On macOS (Apple Silicon), BLAS uses Apple Accelerate automatically (make blas path).
If compile tools are missing, run xcode-select --install.
| Platform | Instructions |
|---|---|
| Linux / macOS | Follow the steps below |
| Android proot (Termux + Debian/Ubuntu) | See README_android.md |
git clone https://github.com/appautomaton/tnt-asr.git
cd tnt-asr
uv sync
./bootstrap-qwen-asr.sh
uv run tntImportant
model.safetensors is ~1.7 GB. The bootstrap script will download it on first run.
What does bootstrap do?
- Uses vendored source at
bin/qwen-asr/to compilebin/qwen_asr - Downloads Qwen3-ASR-0.6B model files to
bin/qwen3-asr-0.6b/ - Everything stays inside the repo (
bin/), no/tmpbuild step bin/qwen-asr/is intended to be retained and committed in this repository
uv run tnt| Key | Action |
|---|---|
| Space | Start / stop recording |
| c | Copy last transcript entry to clipboard |
| C | Copy all transcript entries to clipboard |
| x | Clear transcript |
| q | Quit |
src/tnt/
βββ app.py # Textual TUI, state machine, keybindings
βββ audio.py # Capture backends (live + termux_api)
βββ transcriber.py # Subprocess wrapper for qwen_asr binary
βββ widgets/
βββ transcript.py # Scrollable transcript log
βββ status.py # Recording indicator + audio level visualizer
bin/
βββ qwen-asr/ # Upstream C source snapshot (committed)
βββ qwen_asr # Compiled binary (gitignored)
βββ qwen3-asr-0.6b/ # Model weights (gitignored)
Tip
- Audio format: 16 kHz, mono, 16-bit PCM β what the
qwen_asrbinary expects. - Inference is CPU-only via the C binary. No GPU, no PyTorch, no transformers.
- The binary and model weights are gitignored. Each developer downloads them locally via bootstrap.
- ASR binary source:
antirez/qwen-asr - Upstream license: MIT
- Third-party notice is included in
LICENSE.
MIT. See LICENSE.