# Azure Speech-to-Text

Transcribes audio to text with Azure AI Speech for subtitles and spoken content.

- Repository: https://github.com/calesthio/OpenMontage (74341 stars)
- Category: Media
- License: MIT
- Last updated: 2026-10-28
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add calesthio/OpenMontage --skill azure-speech-to-text -g -a claude-code -y`
Codex: `npx skills add calesthio/OpenMontage --skill azure-speech-to-text -g -a codex -y`
Cursor: `npx skills add calesthio/OpenMontage --skill azure-speech-to-text -g -a cursor -y`
Gemini CLI: `npx skills add calesthio/OpenMontage --skill azure-speech-to-text -g -a gemini-cli -y`

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

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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

The rest: https://github.com/calesthio/OpenMontage/blob/HEAD/.agents/skills/azure-speech-to-text/SKILL.md
