← Back to list
🛠️

azure-speech-to-text Checked

Transcribe audio to text using Azure AI Speech (Fast Transcription REST API). Use when converting…
🛠️ Developer Tools skills By calesthio Version v1.0.0 Added 2026-09-07 Updated 2026-09-07 Source ↗
8.6Overall rating
2Views
8Downloads
56.5kStars

Installation

🤖 Install via AI

Copy the prompt below and send it to your AI assistant (e.g. Claude Code) — it will follow the instructions and install automatically.

Install the "azure-speech-to-text" skill by following the instructions at https://skill123.me/install/azure-speech-to-text.
⌨️ Command line install

Run in your terminal — downloads and installs to ~/.claude/skills/.

curl -fsSL https://skill123.me/install/azure-speech-to-text.sh | bash
📦 Download ZIP

Download the zip and extract it into your skills directory (e.g. ~/.claude/skills/), then restart your session.

⬇ Download v1.0.0 · 3 KB
📊 Static rating
8.6/10
Trigger
8.0
Structure
8.7
Workflow
8.0
Content
9.0
Engineering
9.0
Security
9.5

Six-dimension rubric with reviewer rationale.

View scorecard ↓
🛡 Dynamic test
—

Not live-tested yet — this skill is rated on static analysis only.

About this skill

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.

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 · Speech service overview

Documentation

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.

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 · Speech service 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;

copy the key and region from its **Keys and Endpoint** page.


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.


from tools.tool_registry import registry
registry.discover()
stt = registry._tools["azure_stt"]
View full documentation

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:

{

"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.

Score breakdown

Trigger
8.0
Complete What/When/When-Not with env-key gating; synonyms like transcribe/subtitles covered but breadth modest.
Structure
8.7
Single 115-line SKILL.md, no extra files, clean sections; no offload needed so no disclosure design.
Workflow
8.0
Task-oriented with runnable example, success check, fallback chain and cue spot-check verification; no scripted guards.
Content
9.0
Concise imperative style, concrete parameter examples, well-formatted tables and code blocks.
Engineering
9.0
Valid frontmatter with name/description/license/metadata; no scripts or internal path references to check.
Security
9.5
No scripts, no injection or secrets; only trusted Microsoft docs and portal domains, env-var key handling.
Solid STT provider guide: clear API-surface comparison, drop-in schema mapping, fallback to local whisper, and timing spot-check verification; trigger keywords could be broader.