Skip to content

Commit 314ca88

Browse files
authored
Merge branch 'main' into bump-v0.1.4
2 parents c63b4cb + 12a8ef2 commit 314ca88

1 file changed

Lines changed: 44 additions & 112 deletions

File tree

README.md

Lines changed: 44 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
[![License](https://img.shields.io/badge/license-MIT-D6402E)](https://github.com/AssemblyAI/cli/blob/main/LICENSE)
55
[![Docs](https://img.shields.io/badge/docs-assemblyai-D6402E)](https://www.assemblyai.com/docs)
66

7-
The AssemblyAI CLI (`assembly`) brings speech AI to your terminal: transcribe files, stream live audio, run a two-way voice agent, prompt the LLM Gateway, and scaffold ready-to-deploy starter apps.
7+
The AssemblyAI CLI (`assembly`) brings speech AI to your terminal: transcribe files, URLs, and YouTube/podcast pages, stream live audio, talk to a two-way voice agent, prompt the LLM Gateway, benchmark speech models, and scaffold ready-to-deploy starter apps.
88

99
## 🚀 Why the AssemblyAI CLI?
1010

11-
- **🎯 Everything in one command**: transcription, real-time streaming, voice agents, and LLM prompts — no SDK boilerplate.
12-
- **🔌 Pipeline-friendly**: data goes to stdout, errors to stderr, `--json` for stable machine-readable output, `-` reads audio from stdin.
13-
- **🔐 Secure by default**: your API key lives in the OS keyring, never in a dotfile, and run commands have no `--api-key` flag so keys can't leak into shell history.
14-
- **🛠️ From demo to app**: `assembly init` scaffolds a runnable FastAPI starter app, and `--show-code` prints the equivalent Python SDK script for any command.
11+
- **🎯 One command for everything**: transcription, real-time streaming, voice agents, LLM prompts, and WER benchmarking — no SDK boilerplate.
12+
- **🔌 Built for pipelines**: data goes to stdout, errors to stderr, `--json` gives stable machine-readable output, and `-` reads audio from stdin.
13+
- **🔐 Secure by default**: your API key lives in the OS keyring, never in a dotfileand run commands have no `--api-key` flag, so keys can't leak into `ps` or shell history.
14+
- **🛠️ From demo to deployed app**: `assembly init` scaffolds a runnable FastAPI starter, `assembly dev` / `share` / `deploy` run, tunnel, and ship it, and `--show-code` prints the equivalent Python SDK script for any run command.
1515
- **🤖 Agent-ready**: `assembly setup install` wires your coding agent up with the AssemblyAI docs MCP server and skills.
1616
- **📖 Open source**: MIT licensed.
1717

@@ -30,156 +30,100 @@ brew trust assemblyai/cli # only needed when HOMEBREW_REQUIRE_TAP_TRUST is set
3030
brew install assembly
3131
```
3232

33-
Homebrew pulls in `ffmpeg` and `portaudio`, so `stream` and `agent` work out of the box.
34-
Plain `transcribe` uploads your file directly and needs neither.
33+
Homebrew pulls in `ffmpeg` and `portaudio`, so every command works out of the box.
3534

3635
### pipx / uv
3736

38-
With pipx:
39-
4037
```sh
4138
pipx install "git+https://github.com/AssemblyAI/cli.git"
42-
```
43-
44-
Or with uv:
45-
46-
```sh
39+
# or
4740
uv tool install "git+https://github.com/AssemblyAI/cli.git"
4841
```
4942

5043
If your default interpreter is older than Python 3.12, add `--python python3.12` (pipx) or
5144
`--python 3.12` (uv) to the install command.
5245

53-
Only `stream` and `agent` need extras: on Linux, install PortAudio once for microphone support
54-
(Debian/Ubuntu: `sudo apt-get install libportaudio2`; Fedora: `sudo dnf install portaudio`), and
55-
have [`ffmpeg`](https://ffmpeg.org) on `PATH` to stream non-WAV audio. Plain `transcribe` needs
56-
neither.
57-
58-
## 📋 Key Features
59-
60-
- **Transcription**: `assembly transcribe` handles files, URLs, and YouTube/podcast pages, with flags for speaker labels, PII redaction, summarization, sentiment, chapters, and more.
61-
- **Batch transcription**: point `assembly transcribe` at a directory or glob (or pipe paths with `--from-stdin`) to transcribe everything concurrently, with sidecar files that make re-runs resumable. Add `--llm "prompt"` to run an LLM prompt over each finished transcript, saved into the sidecars.
62-
- **Real-time streaming**: `assembly stream` transcribes the microphone, a file, or a URL live — on macOS it can capture system audio too.
63-
- **Voice agent**: `assembly agent` runs a full-duplex spoken conversation in your terminal (use headphones).
64-
- **LLM Gateway**: `assembly llm` prompts an LLM over a transcript, stdin, or a live stream (`assembly stream --llm "summarize as I talk"`).
65-
- **Model evaluation**: `assembly eval` transcribes a Hugging Face dataset (with built-in aliases for common benchmarks: `assembly eval tedlium`) or a local `.csv`/`.jsonl` manifest and scores WER against its references — handy for picking a speech model.
66-
- **Starter apps**: `assembly init` scaffolds a self-contained FastAPI + HTML app (`audio-transcription`, `live-captions`, `voice-agent`).
67-
- **Webhook testing**: `assembly webhooks listen` opens a public dev URL (cloudflared quick tunnel) that prints webhook deliveries as they arrive and can forward them to your local app with `--forward-to`.
68-
- **Code generation**: add `--show-code` to `transcribe`/`stream`/`agent` to print the equivalent Python SDK script instead of running.
69-
- **Account self-service**: `assembly keys` / `balance` / `usage` / `limits` / `sessions` / `audit` via browser login.
46+
Only the live-audio commands need anything extra: `stream` and `agent` use PortAudio for
47+
microphone capture (Debian/Ubuntu: `sudo apt-get install libportaudio2`; Fedora:
48+
`sudo dnf install portaudio`) and [`ffmpeg`](https://ffmpeg.org) on `PATH` to stream
49+
non-WAV audio. Plain `transcribe` uploads your file directly and needs neither.
7050

7151
## 🔐 Authentication
7252

7353
New to AssemblyAI? Create a free account at
7454
[assemblyai.com/dashboard](https://www.assemblyai.com/dashboard) to get an API key.
7555

76-
### Option 1: Browser login (recommended)
56+
The easiest path is browser login, which stores your API key in the OS keyring
57+
(Keychain / Credential Manager / Secret Service):
7758

7859
```sh
7960
assembly login
8061
```
8162

82-
Stores your API key in the OS keyring (Keychain / Credential Manager / Secret Service).
83-
84-
### Option 2: Environment variable
63+
In CI — or anywhere a browser isn't an option — set the key as an environment variable
64+
instead. It's checked before the keyring, and nothing is written to disk:
8565

8666
```sh
8767
export ASSEMBLYAI_API_KEY="YOUR_API_KEY"
8868
```
8969

90-
Checked before the keyring, so nothing is written to disk — ideal for CI (set it as a masked secret).
91-
92-
## 🚀 Getting Started
93-
94-
### Basic usage
70+
## 🚀 Getting started
9571

96-
Guided setup: sign in, first transcription, start building:
72+
For a guided tour — sign in, run a first transcription, start building:
9773

9874
```sh
9975
assembly onboard
10076
```
10177

102-
Transcribe the hosted sample:
78+
Or jump straight in:
10379

10480
```sh
105-
assembly transcribe --sample
81+
assembly transcribe --sample # transcribe the hosted sample file
82+
assembly transcribe call.mp3 # then your own audio
83+
assembly stream --sample # live streaming, no microphone needed
84+
assembly stream # stream your microphone (Ctrl-C to stop)
85+
assembly agent # talk to a voice agent (use headphones)
86+
assembly init # scaffold a starter app
10687
```
10788

108-
Then your own audio:
89+
## 📋 Key features
10990

110-
```sh
111-
assembly transcribe call.mp3
112-
```
113-
114-
Stream the hosted sample live (no microphone needed):
115-
116-
```sh
117-
assembly stream --sample
118-
```
119-
120-
Or stream your microphone (Ctrl-C to stop):
121-
122-
```sh
123-
assembly stream
124-
```
125-
126-
Talk to a voice agent:
127-
128-
```sh
129-
assembly agent
130-
```
131-
132-
Scaffold a starter app:
133-
134-
```sh
135-
assembly init
136-
```
91+
- **Transcription**: `assembly transcribe` handles files, URLs, and YouTube/podcast pages, with flags for speaker labels, PII redaction, summarization, sentiment, chapters, and more.
92+
- **Batch transcription**: point `assembly transcribe` at a directory or glob (or pipe paths with `--from-stdin`) to transcribe everything concurrently, with sidecar files that make re-runs resumable. Add `--llm "prompt"` to run an LLM prompt over each finished transcript, saved into the sidecars.
93+
- **Real-time streaming**: `assembly stream` transcribes the microphone, a file, or a URL live — on macOS it can capture system audio too.
94+
- **Voice agent**: `assembly agent` runs a full-duplex spoken conversation in your terminal.
95+
- **LLM Gateway**: `assembly llm` prompts an LLM over a transcript, stdin, or a live stream (`assembly stream --llm "summarize as I talk"`).
96+
- **Model evaluation**: `assembly eval` transcribes a Hugging Face dataset (with built-in aliases for common benchmarks: `assembly eval tedlium`) or a local `.csv`/`.jsonl` manifest and scores WER against its references — handy for picking a speech model.
97+
- **Starter apps**: `assembly init` scaffolds a self-contained FastAPI + HTML app (`audio-transcription`, `live-captions`, `voice-agent`); `assembly dev` runs it, `assembly share` exposes it on a public URL, and `assembly deploy` ships it to Vercel, Railway, or Fly.io.
98+
- **Webhook testing**: `assembly webhooks listen` opens a public dev URL (cloudflared quick tunnel) that prints webhook deliveries as they arrive and can forward them to your local app with `--forward-to`.
99+
- **Code generation**: add `--show-code` to `transcribe`/`stream`/`agent` to print the equivalent Python SDK script instead of running.
100+
- **Account self-service**: `assembly keys` / `balance` / `usage` / `limits` / `sessions` / `audit` via browser login.
137101

138102
### Quick examples
139103

140-
Just the text:
141-
142-
```sh
143-
assembly transcribe call.mp3 -o text
144-
```
145-
146-
Or captions:
147-
148-
```sh
149-
assembly transcribe video.mp4 -o srt
150-
```
151-
152-
Speaker labels + summary, as JSON:
104+
Pull exactly the output you need:
153105

154106
```sh
107+
assembly transcribe call.mp3 -o text # just the text
108+
assembly transcribe video.mp4 -o srt # captions
155109
assembly transcribe call.mp3 --speaker-labels --summarization --json
156110
```
157111

158-
Batch: a whole directory or glob, resumable on re-run:
112+
Transcribe in batches — a directory, a glob, or a piped list, resumable on re-run:
159113

160114
```sh
161115
assembly transcribe ./recordings
162-
```
163-
164-
Or pipe paths in:
165-
166-
```sh
167116
find . -name "*.wav" | assembly transcribe --from-stdin
168117
```
169118

170-
Pipe audio in, pipe text out:
119+
Compose with other tools — audio in, text out:
171120

172121
```sh
173122
ffmpeg -i talk.mp4 -f wav - | assembly transcribe -
174-
```
175-
176-
Prompt the LLM Gateway over any text:
177-
178-
```sh
179123
git log --oneline -30 | assembly llm "write release notes grouped by feature/fix"
180124
```
181125

182-
Print the equivalent Python SDK script instead of running:
126+
Graduate to the SDK — print the equivalent Python script instead of running:
183127

184128
```sh
185129
assembly transcribe --sample --speaker-labels --show-code
@@ -196,22 +140,10 @@ assembly transcribe --sample --speaker-labels --show-code
196140

197141
This project uses [uv](https://docs.astral.sh/uv/):
198142

199-
Create/refresh the venv:
200-
201-
```sh
202-
uv sync
203-
```
204-
205-
Run the CLI from the locked environment:
206-
207-
```sh
208-
uv run assembly --help
209-
```
210-
211-
Run the full gate CI runs:
212-
213143
```sh
214-
./scripts/check.sh
144+
uv sync # create/refresh the venv
145+
uv run assembly --help # run the CLI from the locked environment
146+
./scripts/check.sh # the full gate CI runs
215147
```
216148

217149
See [AGENTS.md](AGENTS.md) for development conventions and architecture notes.

0 commit comments

Comments
 (0)