# Azure Text To Speech > Genera narración con voces neuronales usando Azure AI Speech (text-to-speech REST). Proveedor TTS en la nube opcional, preferido cuando AZURE_SPEECH_KEY está configurada. Fuente: https://skillsagentes.com/skills/calesthio/openmontage/azure-text-to-speech Markdown: https://skillsagentes.com/skills/calesthio/openmontage/azure-text-to-speech.md Repositorio: https://github.com/calesthio/OpenMontage Autor: calesthio Licencia: MIT Actualizado: el mes pasado Coste de contexto: 79 tok instalada, 1.4k tok al activarse, 1.4k tok con todos los archivos del bundle Bundle: 1 archivo, 5 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add calesthio/OpenMontage --skill azure-text-to-speech --agent claude-code # Cursor npx -y skills add calesthio/OpenMontage --skill azure-text-to-speech --agent cursor # Codex npx -y skills add calesthio/OpenMontage --skill azure-text-to-speech --agent codex # Gemini CLI npx -y skills add calesthio/OpenMontage --skill azure-text-to-speech --agent gemini # Windsurf npx -y skills add calesthio/OpenMontage --skill azure-text-to-speech --agent windsurf # Cline npx -y skills add calesthio/OpenMontage --skill azure-text-to-speech --agent cline ``` ## Qué hace - Genera narración con voces neuronales mediante la API REST de text-to-speech de Azure AI Speech - Comparte el mismo recurso de Speech que `azure_stt`, aunque el host de TTS es un subdominio distinto - Cubre selección de voz, los parámetros que importan y el coste - Es la ruta preferida cuando `AZURE_SPEECH_KEY` está configurada; si no, piper_tts local sigue siendo la ruta offline por defecto ## Cuándo usarla - Sintetizar voces en off o narración dentro de OpenMontage - Se prefiere un proveedor TTS en la nube frente al local ## Cuándo no - No hay clave de Azure configurada: la ruta por defecto es piper_tts local ## Qué la activa - "Genera la narración de este guion" - "Ponle voz en off a este texto" - "Necesito una locución neuronal para el vídeo" ## Antes de instalar - Necesita acceso a internet y un recurso de Azure AI Speech con `AZURE_SPEECH_KEY` y `AZURE_SPEECH_REGION`. - makes network requests ## Archivos - SKILL.md — 5 KB ## SKILL.md Reproducido tal cual desde calesthio/OpenMontage bajo MIT. Esta sección es el documento original y está en inglés. # Azure AI Speech — Text-to-Speech Generate narration with **Azure neural TTS** — high-quality multilingual voices, SSML prosody control, and express-as styles, served synchronously by the REST `/cognitiveservices/v1` endpoint (no token exchange, Blob storage, or job polling). In OpenMontage this is exposed through the `azure_tts` tool (`capability=tts`, `provider=azure`). It is an **optional cloud TTS provider** — when `AZURE_SPEECH_KEY` is configured, prefer it for high-quality cloud narration. The local `piper_tts` remains the **default offline path** and the fallback when Azure is unavailable; `elevenlabs_tts` remains the choice for voice cloning. > Docs: [REST text to speech](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech) · [Voice gallery](https://speech.microsoft.com/portal/voicegallery) ## Setup Same Speech resource as `azure_stt` — **one key/region unlocks both directions** (STT and TTS). 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_TTS_ENDPOINT=https://... # optional: full custom TTS host # (the TTS host is https://.tts.speech.microsoft.com — a different # subdomain than the STT endpoint, hence the separate override var) ``` `azure_tts` reports `AVAILABLE` once `AZURE_SPEECH_KEY` plus either `AZURE_SPEECH_REGION` or `AZURE_TTS_ENDPOINT` are set. ## Using it in a pipeline Route through `tts_selector` as usual (it auto-discovers `azure_tts`), or call the provider tool directly when the user has approved Azure: ```python from tools.tool_registry import registry registry.discover() tts = registry._tools["azure_tts"] result = tts.execute({ "text": "Every design decision in this dashboard has a reason.", "voice": "andrew", # alias or full Azure short name "rate": "-4%", # slightly slower for narration # "style": "narration-professional", # for voices that support styles "output_path": "projects/my-video/assets/audio/seg_001.mp3", "output_format": "mp3", # or "wav" (48kHz PCM) for mixing }) ``` If `azure_tts` is unavailable (no key) or errors, fall back per its declared chain: `elevenlabs_tts` → `openai_tts` → `piper_tts`. ## Voice selection Curated shortlist (aliases accepted by the `voice` param): | Alias | Voice | Character | |-------|-------|-----------| | `andrew` | en-US-AndrewMultilingualNeural | warm, confident, conversational — the default; founder/explainer register | | `brandon` | en-US-BrandonMultilingualNeural | deeper, measured | | `ava` | en-US-AvaMultilingualNeural | confident, bright female | | `guy` | en-US-GuyNeural | authoritative | | `jenny` | en-US-JennyNeural | friendly, clear | Any valid Azure voice short name may be passed verbatim (e.g. `de-DE-KatjaNeural`); the *Multilingual* voices handle non-English text well — set `locale` to match the text's language for correct SSML. ## Parameters that matter - **`rate` / `pitch`** — SSML prosody. Narration usually reads best slightly slowed (`"-4%"` to `"-8%"`); leave pitch at `"0%"` unless correcting a voice. - **`style`** — express-as style for voices that support it (`narration-professional`, `calm`, `newscast`). Unsupported styles are silently ignored by Azure, so listen to a sample before batch runs. - **`output_format`** — `mp3` (48kHz/192kbit) for delivery, `wav` (48kHz PCM) when the segment feeds `audio_mixer` for further processing. - Determinism: a fixed voice + SSML re-renders effectively identical audio — safe to regenerate individual segments without re-recording the whole set. ## Cost Azure neural TTS Standard tier bills roughly **$16 per 1M characters** (~$0.016 per 1k chars; a 150-word narration segment ≈ $0.015). The tool reports per-call `cost_usd` for the cost tracker. See [Azure AI Speech pricing](https://azure.microsoft.com/pricing/details/cognitive-services/speech-services/) for current rates. ## Limits & tips - One `execute` call = one narration segment. Generate per script section (the asset stage convention) rather than one giant paragraph — smaller segments align cleanly to scene timings and are cheap to regenerate. - The synchronous endpoint caps a request at 10 minutes of audio — far above any segment OpenMontage generates. - Text is XML-escaped automatically; do not pre-escape or wrap in SSML — pass plain text plus the `rate`/`pitch`/`style` params. - Verify quality: listen to the first generated segment before batch-running a full script (voice/style fit is a creative decision — surface it at the proposal stage per the Decision Communication Contract). ## Dónde encaja - Categoría: [Diseño y UI](https://skillsagentes.com/categorias/diseno-ui.md) — Sistemas de diseño, trabajo con componentes y acabado visual. - Creador: [calesthio](https://skillsagentes.com/creators/calesthio.md) — 0 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Seedance 2 5](https://skillsagentes.com/skills/calesthio/openmontage/seedance-2-5.md): Genera vídeo cinematográfico de 4-30 s con ByteDance Seedance 2.5 por fal.ai, Volcengine Ark, Runway o ComfyUI. Cubre el contrato de prompt 2.5, cortes duros, locks de continuidad y voz. - [Comfyui](https://skillsagentes.com/skills/calesthio/openmontage/comfyui.md): Úsalo al trabajar con workflows de ComfyUI en OpenMontage: comfyui_image/video/music, workflows propios, selección de output_node, modelos que faltan, LoRAs, poca VRAM e importación de workflows de la comunidad. - [Fish Audio Tts](https://skillsagentes.com/skills/calesthio/openmontage/fish-audio-tts.md): Genera narración expresiva y multilingüe con fish.audio (modelos S1 / S2) y reutiliza voces clonadas mediante reference_id. - [Minimax H3](https://skillsagentes.com/skills/calesthio/openmontage/minimax-h3.md): Genera vídeo con MiniMax H3 (Hailuo 3.0) por la API oficial v2, fal.ai, Runway, nodos partner de ComfyUI o pesos abiertos locales. Clips de 4-15s a 2K con animación de primer/último fotograma. - [Gemini Omni](https://skillsagentes.com/skills/calesthio/openmontage/gemini-omni.md): Genera y edita conversacionalmente vídeos cortos con Google Gemini Omni Flash: itera con ediciones en lenguaje natural, clips de 3-10s a 720p con audio y texto en pantalla, e imágenes de referencia por etiquetas. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)