Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

azure-speech-to-text — Claude Code skill: what it does, how to install

Transcribes local audio files into text with word-level timestamps and speaker diarization using Azure AI Speech. Speeds up subtitle creation and audio processing in OpenMontage pipelines.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add calesthio/OpenMontage --skill azure-speech-to-text -a claude-code
Open on GitHub

What azure-speech-to-text does

This skill hooks Azure Fast Transcription REST API into OpenMontage through the azure_stt tool. It uploads local audio files synchronously using a multipart POST request via requests. You do not need the native Azure Speech SDK or Azure Blob storage. The tool extracts text segments with word timestamps and labels speakers directly from the audio.

The output schema matches the local faster-whisper transcriber tool. That allows dropping azure_stt into subtitle_gen and downstream pipeline stages without data conversion. You can lock the spoken language to a code like en-US or pass candidate_locales for detection, and configure profanity_filter when needed.

Running this requires internet access and the AZURE_SPEECH_KEY plus AZURE_SPEECH_REGION environment variables. A single request caps out around 2 hours of audio or a few hundred megabytes. Without valid credentials, the tool fails immediately, making the local faster-whisper fallback mandatory for offline environments.

What it helps with

  • transcribe local audio files using the Azure Fast Transcription REST API
  • generate word-level timestamps for automated subtitle creation
  • separate speakers in multi-speaker audio without HuggingFace tokens
  • identify spoken languages automatically from a shortlist of locales

Example prompts for the agent

  • Transcribe audio/interview.mp3 using azure_stt with diarization for 2 speakers
  • Run azure_stt on projects/video/narration.mp3 using English locale en-US
  • Generate word timestamps for voice.wav via azure_stt and save results to artifacts

How to install azure-speech-to-text

1Skills CLI (Vercel)

npx skills add calesthio/OpenMontage --skill azure-speech-to-text -a claude-code

2Manually: put the files in place

~/.claude/skills/azure-speech-to-text/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/azure-speech-to-text/

From the same set28

The whole set →
video-understand calesthio This skill extracts video frames and transcribes audio locally with ffmpeg and Whisper. Use it to inspect video content without API keys. Claude Code CX Codex Cursor +1 1,300installs remotion calesthio Teaches AI agents toolkit-specific Remotion patterns, including custom transition shaders and 30 fps video rules. Claude Code CX Codex Cursor +1 1,200installs video-download calesthio Uses yt-dlp to fetch video, audio, subtitles, or URL metadata. Use it when you need a local file, a selected resolution, or details without downloading media. Claude Code CX Codex Cursor +1 1,200installs lottie-bodymovin calesthio Applies Disney's 12 animation principles to Lottie vector animations. Bridges After Effects setup with runtime JavaScript controls. Claude Code CX Codex Cursor +1 1,100installs create-video calesthio This skill turns a description into a finished video: write what you want to see, and HeyGen generates the script, picks an avatar, adds voiceover and editing. Good for quick demos, explainers and promos without tweaking every detail. Claude Code CX Codex Cursor +1 1,100installs video-toolkit calesthio Automates video creation: generates voiceovers, background music, animates talking heads, and composes scenes with Remotion. Requires Node.js, Python3, ffmpeg, and cloud GPU access (Modal or RunPod). Claude Code CX Codex Cursor +1 1,100installs text-to-speech calesthio Generates speech audio with HeyGen Starfish and lets you choose a voice, speed, and pitch. Useful for voiceovers, narration, and podcasts. Claude Code CX Codex Cursor +1 1,100installs bfl-api Black Forest Labs This skill helps connect BFL FLUX API for image generation and editing. It covers async requests, polling, rate limits, and webhooks. Claude Code CX Codex Cursor +1 1,000installs

Similar

open-notebook K-Dense-AI Organizes research notes, citations, and document chat using self-hosted storage and AI providers. Helpful for managing an Open Notebook setup directly from your agent. Claude Code CX Codex Cursor +1 1,900installs scikit-survival K-Dense-AI A skill that walks an agent through scikit-survival 0.28.0: building, tuning and auditing survival models on censored data, with metrics that account for censoring. Claude Code CX Codex Cursor +1 1,900installs ads-microsoft AgriciDaniel Audits Microsoft Ads, Bing Ads, UET, and audience network campaigns: measurement, conversions, Google imports, keywords, creative, bidding, and budgets. Read-only; use ads-optimize to make changes. Claude Code CX Codex Cursor +1 3,800installs langgraph-persistence langchain-ai A Claude Code skill for LangGraph persistence: wiring a checkpointer, keeping conversations apart by thread_id, and replaying older graph state. Claude Code CX Codex Cursor +1 18,000installs langgraph-fundamentals langchain-ai Skill for writing LangGraph code across platforms. Covers StateGraph, state schemas, nodes, edges, Command, Send, invoke, streaming, and error handling. Claude Code CX Codex Cursor +1 18,000installs langchain-rag langchain-ai Equips coding agents with reference RAG implementations in Python and TypeScript using LangChain loaders, splitters, and vector stores. Claude Code CX Codex Cursor +1 17,500installs skill-creator official anthropics Creates and refines skills, then tests them with prompts, evaluations, and performance checks. Claude Code Claude.ai 414,180installs writing-for-agents Matt Pocock Guidance for writing skills and agent-facing documents. Use it when editing AGENTS.md, CLAUDE.md, or reference files reached from them. Claude Code 466,719installs

Questions about azure-speech-to-text

How do I install azure-speech-to-text in Claude Code?

Run npx skills add calesthio/OpenMontage --skill azure-speech-to-text -a claude-code. The skill definition will be added to ~/.claude/skills/azure-speech-to-text/SKILL.md.

What does azure-speech-to-text do?

It sends local audio files to the Azure Fast Transcription REST API and outputs text with word timestamps, language tags, and speaker labels. It acts as an optional cloud alternative to the local faster-whisper transcriber in OpenMontage.

What credentials are required to use azure-speech-to-text?

Set the AZURE_SPEECH_KEY and AZURE_SPEECH_REGION (or AZURE_SPEECH_ENDPOINT) environment variables. If these credentials are missing, OpenMontage falls back to the local faster-whisper tool.

Source text

SKILL.md · MIT
---
name: azure-speech-to-text
description: Transcribe audio to text using Azure AI Speech (Fast Transcription REST API). Use when converting audio/video to text, generating subtitles, or processing spoken content in OpenMontage. Optional cloud STT provider — preferred when AZURE_SPEECH_KEY is configured; the local faster-whisper `transcriber` is the default offline path.
license: MIT
compatibility: Requires internet access and an Azure AI Speech resource (AZURE_SPEECH_KEY + AZURE_SPEECH_REGION).
metadata: {"openclaw": {"requires": {"env": ["AZURE_SPEECH_KEY", "AZURE_SPEECH_REGION"]}, "primaryEnv": "AZURE_SPEECH_KEY"}}
---

# Azure AI Speech — Speech-to-Text

Transcribe audio to text with **Azure Fast Transcription** — synchronous,
word-level timestamps, speaker diarization, and multi-language identification.
In OpenMontage this is exposed through the `azure_stt` tool (`capability=analysis`,
`provider=azure`). It is an **optional cloud STT provider** — when
`AZURE_SPEECH_KEY` is configured, prefer it for cloud transcription. The local
`transcriber` tool (faster-whisper) remains the **default offline path** and the
fallback when Azure is unavailable.

> Docs: [Fast Transcription](https://learn.microsoft.com/azure/ai-services/speech-service/fast-transcription-create) · [Speech service overview](https://learn.microsoft.com/azure/ai-services/speech-service/spx-overview)

## Why Fast Transcription (not Batch)

Azure exposes three STT surfaces. OpenMontage uses **Fast Transcription** because
the pipeline transcribes **local audio files**:

| Surface | Input | Latency | Needs |
|---------|-------|---------|-------|
| **Fast Transcription** (used here) | local file, multipart POST | synchronous, sub-real-time | key + region |
| Batch Transcription | audio at a URL (Blob + SAS) | async job + polling | Blob storage plumbing |
| Speech SDK (`spx`) | mic / stream / file | streaming | native `azure-cognitiveservices-speech` package |

Fast Transcription needs no Blob storage, no SAS URLs, and no native SDK — just
`requests` and the two env vars.

## Setup

Create a **Speech** resource in the [Azure portal](https://portal.azure.com);
copy the key and region from its **Keys and Endpoint** page.

```bash
export AZURE_SPEECH_KEY=your_speech_resource_key
export AZURE_SPEECH_REGION=eastus          # your resource's region
# export AZURE_SPEECH_ENDPOINT=https://...  # optional: overrides region
```

`azure_stt` reports `AVAILABLE` once `AZURE_SPEECH_KEY` plus either
`AZURE_SPEECH_REGION` or `AZURE_SPEECH_ENDPOINT` are set.

## Using it in a pipeline

Prefer `azure_stt` over `transcriber` unless the run must be offline. Its output
matches the `transcriber` schema exactly, so it is a drop-in for `subtitle_gen`
and any stage that consumes a transcript.

```python
from tools.tool_registry import registry
registry.discover()
stt = registry._tools["azure_stt"]

result = stt.execute({
    "input_path": "projects/my-video/assets/audio/narration.mp3",
    # "language": "en",          # ISO 639-1 or BCP-47 ("en-US"); omit for auto-ID
    # "diarize": True,           # speaker labels, no HuggingFace token needed
    # "max_speakers": 4,
    "output_dir": "projects/my-video/artifacts",
})
if result.success:
    segs = result.data["segments"]          # [{id,start,end,text,words:[...]}]
    words = result.data["word_timestamps"]  # flat [{word,start,end,probability}]
```

If `azure_stt` is unavailable (no key) or errors, fall back to `transcriber`
(local whisper) — its `execute` signature and output are identical.

## Parameters that matter

- **`language`** — pass an ISO code (`"en"`) or a full locale (`"en-US"`). Pin it
  when you know the language; it is faster and more accurate than auto-ID.
- **`candidate_locales`** — when `language` is omitted, Azure runs language
  identification across this shortlist. Narrow it to the languages you actually
  expect; a huge list slows detection and invites misclassification.
- **`diarize` / `max_speakers`** — enable for multi-speaker audio (interviews,
  podcasts). Set `max_speakers` to the real upper bound.
- **`profanity_filter`** — `None` | `Masked` (default) | `Removed` | `Tags`.

## Response shape (mapped to the transcriber schema)

The raw Azure response (`phrases[]` with `offsetMilliseconds` / `words[]`) is
converted to seconds and the OpenMontage transcript schema:

```json
{
  "segments": [
    {"id": 0, "start": 0.0, "end": 2.4, "text": "Hello world",
     "speaker": 1,
     "words": [{"word": "Hello", "start": 0.0, "end": 0.5, "probability": 0.98}]}
  ],
  "word_timestamps": [{"word": "Hello", "start": 0.0, "end": 0.5, "probability": 0.98}],
  "language": "en-US",
  "duration_seconds": 2.4,
  "provider": "azure"
}
```

Note: Fast Transcription has no *per-word* confidence, so each word carries the
**phrase** confidence in `probability`.

## Limits & tips

- Single file up to ~2 hours / a few hundred MB per request. For longer or bulk
  jobs, use Azure Batch Transcription instead.
- Send clean audio (16 kHz+ mono is plenty). Transcode video to audio first if
  you only need speech — smaller upload, same result.
- Verify timing: word timestamps drive subtitle cues in `subtitle_gen`. Spot-check
  the first and last cues against the source audio.

© calesthio · MIT · calesthio/OpenMontage

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor