Skip to main content

Voice Bird CLI - local-first voice transcription TUI

Project description

Voice Bird CLI

Voice Bird CLI is a terminal voice transcription app. On macOS and Linux it runs locally by default with Whisper models, so local recordings stay on your machine, and you can opt in per source to VoiceBird Web cloud mode. Windows is cloud-only (since 0.4.0) and requires a Voice Bird API key.

Voice Bird CLI basic flow

Basic Flow

  1. Pick a microphone, system-output loopback device, or app audio source.
  2. Choose local or cloud mode for that source.
  3. Press Enter to start a transcription slot.
  4. Watch committed and tentative transcript text stream into the TUI.
  5. In local mode, review session files under ~/voice-bird/sessions/<timestamp>-<source>/.

Local sessions contain:

File Content
audio.wav 16 kHz mono recording
transcript.jsonl Append-only transcript log, useful after crashes
transcript.json Finalized transcript segments and metadata
transcript.txt Plain-text transcript
meta.json Device, source, model, engine, and duration

Getting Started

Install one of the CLI packages, then run:

voice-bird-cli

On first launch (macOS/Linux), Voice Bird picks a local Whisper model and downloads it into your OS cache directory. The default model is distil-small.en. On Windows, first launch prompts for your Voice Bird API key instead — there are no local models. Settings are stored in ~/.config/voice-bird/config.toml on Linux/macOS and %APPDATA%\voice-bird\config.toml on Windows.

Press m to change models. The picker includes nemotron-3.5-asr-streaming-0.6b, NVIDIA's latest Nemotron 3.5 ASR streaming model via the local parakeet-rs engine. Select it, let the package download/unpack, then start recording; the engine label and meta.json should show nemotron.

macOS users may need to grant Screen Recording permission for system or app audio capture. Apple Silicon users can optionally build the WhisperKit sidecar for ANE-accelerated local inference:

cargo run -p xtask -- build-sidecar

Without the sidecar, Voice Bird falls back to whisper-rs with whisper.cpp.

Install

Cargo installs the native Rust binary directly:

cargo install voice-bird-cli

PyPI installs a small wrapper that installs/runs the Cargo binary:

pipx install voice-bird-cli
# or
pip install voice-bird-cli

npm installs a small wrapper that installs/runs the Cargo binary:

npm install -g voice-bird-cli

From source:

git clone https://github.com/voice-bird/voice-bird-cli.git
cd voice-bird-cli
cargo install --path .

The npm and PyPI packages require Rust Cargo on the machine. Use the Cargo or source install when you want the simplest path.

Windows: cloud-only since 0.4.0 — no local Whisper inference, so the build needs only the standard Rust MSVC toolchain (no CMake, no LLVM, no whisper.cpp compile). See docs/windows-install.md.

Local And Cloud Modes

Free local mode is the default on macOS and Linux. It uses local Whisper inference through whisper-rs, or WhisperKit on macOS when the sidecar is available. Local mode does not send audio to a server and writes session artifacts to disk. Current local models are English-focused in the app flow.

Cloud mode streams audio to VoiceBird Web at wss://voicebird.app/api/audio/stream. It requires a Voice Bird API key and is useful when local hardware cannot keep up or when you want cloud language support. Cloud recordings live in your VoiceBird Web account instead of the local sessions folder. On macOS/Linux it is opt-in per source; on Windows it is the only mode — first launch prompts for the API key.

Your Voice Bird API key is stored in plaintext in config.toml; on Unix the app sets the file to 0600 best-effort.

Usage

voice-bird-cli                         # start the TUI
voice-bird-cli --recover <session-dir> # rebuild transcript.{json,txt} after a crash

Keys

Key Action
/ Select device or app
/ Move between panes
Enter Start the selected source
Space Clear selected app pairing
Tab Move between transcript slots
r Refresh devices and apps
c Toggle cloud mode for the focused source
l Change language for cloud mode
m Change model
e Export the latest local transcript
p Change local session path
x Clear stopped transcript slot
q Quit
? Help

On Windows, c opens the API-key dialog (cloud is always on), and the local-only keys m, e, and p are not available.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

voice_bird_cli-0.4.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

voice_bird_cli-0.4.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file voice_bird_cli-0.4.0.tar.gz.

File metadata

  • Download URL: voice_bird_cli-0.4.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for voice_bird_cli-0.4.0.tar.gz
Algorithm Hash digest
SHA256 278a42de890a4a55729adf73ff6c5ca2cf8bf266565476709c52aeff770c470c
MD5 805e2a3a8160c1bdf880f88ccade0dbf
BLAKE2b-256 a1ae2146b00cd71d539b8bd07a5e510af5a8d50dfdbec5c3d5ad95c3396c942a

See more details on using hashes here.

File details

Details for the file voice_bird_cli-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: voice_bird_cli-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for voice_bird_cli-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b9ff37a46590de6afd1cf8263028aa3c2e672c29f60f6cca0ca51993eaf62561
MD5 218c73c2f2eba57a9cf354dabaf20f84
BLAKE2b-256 e494dc0281640665adb0d8e78cc6a2e0c8f8b660193b8fdd61890e3f0300d4d1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page