Skip to main content

transcribe-cli

A modular audio transcription CLI with pluggable providers. Agent-friendly.

Currently supports AssemblyAI with speaker diarization, sentiment analysis, entity detection, auto chapters, summarization, topic detection, and more.

Installation

# With uv (recommended)
uv tool install transcriber-cli

# With pip
pip install transcriber-cli

# Run without installing
uvx --from transcriber-cli transcribe audio.mp3

Or install from source:

git clone https://github.com/miguelarios/transcribe-cli.git
cd transcribe-cli
uv tool install .

Setup

Get an API key from the AssemblyAI Dashboard and set it:

export ASSEMBLYAI_API_KEY='your_key_here'

Or pass it directly: transcribe --api-key <key> audio.mp3

Usage

# Basic transcription (text output to stdout)
transcribe interview.mp3

# JSON output
transcribe interview.mp3 -f json

# With speaker diarization
transcribe meeting.wav --speaker-labels

# SRT subtitles to file
transcribe lecture.mp3 -f srt -o lecture.srt

# Full-featured transcription
transcribe call.m4a --speaker-labels --entities --sentiment -f json

# Pipe JSON to jq
transcribe interview.mp3 -f json | jq '.segments[] | .speaker, .text'

# Agent-friendly summary (saves full transcript to temp file)
transcribe meeting.mp3 --summary

# Transcribe from URL
transcribe https://example.com/audio.mp3

Output Formats

Format Flag Description
text -f text (default) Timestamped text with optional speaker labels
json -f json Full structured data (segments, metadata, entities)
ndjson -f ndjson One JSON object per segment line (stream/grep-friendly)
srt -f srt SRT subtitle format
vtt -f vtt WebVTT subtitle format

All Options

Run transcribe -h for the full list. Key options:

Speaker/Diarization

  • --speaker-labels — Enable speaker diarization
  • --speakers-expected N — Exact speaker count
  • --min-speakers N --max-speakers M — Speaker range
  • --speaker-id-type [role|name] — Speaker identification mode
  • --speaker-names NAME — Known speaker names (repeatable)

Analysis

  • --entities — Detect names, locations, dates, etc.
  • --sentiment — Sentiment analysis per utterance
  • --topics — IAB topic detection
  • --auto-chapters — Generate chapters with headlines
  • --summarize — Generate transcript summary
  • --content-safety — Content moderation

Language

  • --language CODE — Language code (e.g., en_us)
  • --language-detection — Auto-detect language

Advanced

  • --prompt TEXT — Context prompt for transcription
  • --keyterms TERM — Domain-specific terms to boost (repeatable)
  • --multichannel — Multichannel transcription
  • --redact-pii — Redact personally identifiable information
  • --redact-policies POLICY — PII policies to redact (repeatable; defaults to a common-PII set)
  • --filter-profanity — Filter profanity
  • --disfluencies — Include filler words (um, uh)

Output

  • -f, --format [text|json|ndjson|srt|vtt] — Output format
  • -o, --output PATH — Write to file instead of stdout
  • --summary — Output metadata summary, save full transcript to temp file
  • --progress-jsonl [PATH] — Emit JSONL progress events to stderr (bare) or a file
  • -v, --verbose — Show progress and timing on stderr

Meta

  • --dry-run — Print the resolved provider config as JSON; no API key or network needed
  • --doctor — Diagnose setup issues (-f json for structured output, --offline to skip network checks)
  • --list-providers — List available transcription providers
  • --api-key KEY — AssemblyAI API key
  • -V, --version — Show version
  • -h, --help — Show help

Agent-Friendly Design

Built to be driven by AI agents as well as humans:

# Validate a flag combo without spending credits
transcribe call.mp3 --speaker-labels --redact-pii --dry-run

# Self-diagnose setup problems, machine-readable
transcribe --doctor -f json

# Long job? Progress events prove it isn't hung
transcribe podcast.mp3 --progress-jsonl events.jsonl -o out.txt

# Keep agent context small: metadata to stdout, transcript to file
transcribe meeting.mp3 --summary -o meeting.md

# One JSON object per segment, pipe-friendly
transcribe call.mp3 --speaker-labels -f ndjson | grep '"speaker": "A"'

Errors emit JSON on stdout when -f json/-f ndjson is set. Bare transcribe prints full help including an agent usage note.

Development

git clone https://github.com/miguelarios/transcribe-cli.git
cd transcribe-cli
uv run --extra dev pytest tests/ -v

License

MIT

Download files

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

Source Distribution

transcriber_cli-0.2.0.tar.gz (60.6 kB view details)

Uploaded Source

Built Distribution

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

transcriber_cli-0.2.0-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file transcriber_cli-0.2.0.tar.gz.

File metadata

  • Download URL: transcriber_cli-0.2.0.tar.gz
  • Upload date:
  • Size: 60.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for transcriber_cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8d025bce37a5ea517ca62a80565c5e076739c76afda3e0be9b694530dc278a93
MD5 495fcdf3095fe051561df79ad821be69
BLAKE2b-256 aa78a2c641b2ec595d1f3d45d86b58d90b206f97aaa035886e3ddf7516fafe60

See more details on using hashes here.

Provenance

The following attestation bundles were made for transcriber_cli-0.2.0.tar.gz:

Publisher: publish.yml on miguelarios/transcribe-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file transcriber_cli-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: transcriber_cli-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for transcriber_cli-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f300d2934b62928f312302c698cab3def5d807a8ff93fc0427514b45fb73df8
MD5 fbbc7306f004caf4b818d552e1bbf0f4
BLAKE2b-256 31ec94baae234a4bcc9c05789e04beaf9f0a92bd264cd07fd65ca9ba31b283dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for transcriber_cli-0.2.0-py3-none-any.whl:

Publisher: publish.yml on miguelarios/transcribe-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page