ratacat/claude-skills/assembly-ai-streaming
Claude Code and agent skill by ratacat/claude-skills
- community
Checking that the SKILL.md file is still in the repository.
This skill should be used when working with AssemblyAI’s Speech-to-Text and LLM Gateway APIs, especially for streaming/live transcription, meeting notetakers, and voice agents that need low-latency transcripts and audio analysis.
Install
npx vskill@latest install ratacat/claude-skills/assembly-ai-streamingSKILL.md
AssemblyAI Streaming & Live Transcription Skill
Overview
Use this skill to build and maintain code that talks to AssemblyAI’s:
- Streaming Speech-to-Text (STT) via WebSockets (
wss://streaming.assemblyai.com/v3/ws) - Async / pre-recorded STT via REST (
https://api.assemblyai.com/v2/transcript) - LLM Gateway for applying Claude/GPT/Gemini-style models to transcripts (
https://llm-gateway.assemblyai.com)
The emphasis is on streaming/live transcription, meeting notetakers, and voice agents, while still covering async workflows and post-processing.
This skill assumes a Claude Code environment with access to Python (preferred) and Bash.
When to Use
Use this skill when:
- Implementing real-time transcription from a microphone, telephony stream, or audio file.
- Building a live meeting notetaker (Zoom/Teams/Meet), especially with summaries, action items, and highlights.
- Implementing a voice agent where latency and natural turn-taking matter.
- Migrating from other STT providers (OpenAI/Deepgram/Google/AWS/etc.) to AssemblyAI.
- Applying LLMs to audio via LLM Gateway for summaries, Q&A, topic tagging, or custom prompts.
Do not use this skill when:
- The task is generic HTTP client usage with no AssemblyAI-specific logic.
- The request clearly targets a different STT vendor.
- The environment cannot safely store or use an API key.
AssemblyAI Mental Model
1. Products to care about
- Pre-recorded Speech-to-Text (Async)
- REST API:
POST /v2/transcript→GET /v2/transcript/{id} - Designed for files from URLs, uploads, S3, etc.
- Supports extra models: summarization, topic detection, sentiment, PII redaction, chapters, etc.
- Streaming Speech-to-Text
- WebSocket:
wss://streaming.assemblyai.com/v3/ws - Low-latency, immutable transcripts (~300ms).
- Turn detection built in; fits voice agents and live captioning.
- LLM Gateway
- REST API:
POST /v1/chat/completionsathttps://llm-gateway.assemblyai.com - Unified access to multiple LLMs (Claude, GPT, Gemini, etc.).
- Designed for “LLM over transcripts” workflows.
2. Key model knobs (Async)
speech_models:["slam-1", "universal"]etc.- Slam-1: best English accuracy + keyterms_prompt, good for medical/technical conversations.
- Universal: multilingual coverage; good default if language is unknown.
language_codevslanguage_detection:- Use
language_codewhen the language is known. - Use
language_detection: truewhen unknown; optionally setlanguage_confidence_threshold. keyterms_prompt:- Domain words/phrases to boost (med terms, product names, etc.).
- Extra intelligence:
summarization,iab_categories,content_safety,entity_detection,auto_chapters,sentiment_analysis,speaker_labels,auto_highlights,redact_pii, etc.
3. Key model knobs (Streaming)
Connection URL:
- US:
wss://streaming.assemblyai.com/v3/ws - EU:
wss://streaming.eu.assemblyai.com/v3/ws
Important query parameters:
sample_rate(required): e.g.16000format_turns(bool): return formatted final transcripts; avoid for low-latency voice agents.speech_model:universal-streaming-english(default) oruniversal-streaming-multi.- `keyterms_p
rompt: JSON-encoded list of terms, e.g. ["AssemblyAI", "Slam-1", "Keanu Reeves"]`.
- Turn detection:
end_of_turn_confidence_threshold(0.0–1.0, default ~0.4)min_end_of_turn_silence_when_confident(ms, default ~400)max_turn_silence(ms, default ~1280)
Headers:
- Use either
Authorization: <API_KEY>or a short-livedtokenquery parameter issued by your backend.
Messages:
- Client sends:
- Binary audio chunks (50–1000ms each).
- Optional JSON messages:
{"type": "UpdateConfig", ...},{"type": "Terminate"},{"type": "ForceEndpoint"}. - Server sends:
Beginevent withid,expires_at.Turnevents with:transcript(immutable partials/finals),utterance(complete semantic chunk),end_of_turn(bool),turn_is_formatted(bool),wordsarray with timestamps/confidences.Terminationevent with summary stats.
4. Regions and data residency
- Async:
- US:
https://api.assemblyai.com - EU:
https://api.eu.assemblyai.com - Streaming:
- US:
wss://streaming.assemblyai.com/v3/ws - EU:
wss://streaming.eu.assemblyai.com/v3/ws
Always keep base URLs consistent per project; don’t mix US/EU endpoints for the same data.
Security & API Keys
- Always require an AssemblyAI API key and keep it out of source in Claude Code output:
- Use environment variables:
ASSEMBLYAI_API_KEY. - Or placeholders (
"<YOUR_API_KEY>") in snippets. - For browser/client code:
- Do not embed the API key.
- Instruct the user to generate temporary streaming tokens on their backend and pass only the token into the WebSocket connection.
- Never print real keys in logs or comments.
High-Level Workflow Patterns
Decision tree
- Is the audio live?
- Yes → Use Streaming STT.
- No → Use Async STT.
- Is latency critical (<1s) for responses?
- Yes → Streaming with
format_turns=falseand careful turn detection. - No → Async, then Summarization/Chapters/etc.
- Do transcripts leave the backend?
- Yes → Consider
redact_pii(and optionallyredact_pii_audio) before sharing. - No → Use raw transcripts as needed.
- Need LLM-based processing (Q&A, structured summaries)?
- Yes → Pipe transcripts into LLM Gateway via
chat/completions.
How Claude Should Work with This Skill
General principles
- Prefer official AssemblyAI SDKs (Python/JS) when available; fall back to
requests/websocket-clientonly if SDK cannot be installed. - Always:
- Validate HTTP responses and WebSocket status.
- Surface useful error messages (
status,errorfields in transcript JSON). - Respect documented min/max chunk sizes (50–1000ms of audio per binary message).
- For voice-agent code, optimize for:
- Immutable partials (
transcript) andutterancefield. - Minimal latency, avoid extra formatting passes.
Recipe 1 – Minimal Streaming from Microphone (Python SDK)
Goal: Stream mic audio to AssemblyAI and print transcripts in real time.
Use this when the environment has Python and assemblyai + pyaudio installed, and the user wants a quick streaming demo.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/assembly-ai-streaming/SKILL.md
Popularity
- Repository stars
- 56
- Repository forks
- 9
- 7-day trend score
- 25
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ratacat/claude-skills/assembly-ai-streaming)