




















@@ -7,11 +7,12 @@ read_when:
77title: "Text-to-speech"
88---
9910-OpenClaw can convert outbound replies into audio using ElevenLabs, Google Gemini, Gradium, Inworld, Local CLI, Microsoft, MiniMax, OpenAI, Volcengine, Vydra, xAI, or Xiaomi MiMo.
10+OpenClaw can convert outbound replies into audio using Azure Speech, ElevenLabs, Google Gemini, Gradium, Inworld, Local CLI, Microsoft, MiniMax, OpenAI, Volcengine, Vydra, xAI, or Xiaomi MiMo.
1111It works anywhere OpenClaw can send audio.
12121313## Supported services
141415+- **Azure Speech** (primary or fallback provider; uses the Azure AI Speech REST API)
1516- **ElevenLabs** (primary or fallback provider)
1617- **Google Gemini** (primary or fallback provider; uses Gemini API TTS)
1718- **Gradium** (primary or fallback provider; supports voice-note and telephony output)
@@ -40,8 +41,10 @@ or ElevenLabs.
40414142## Optional keys
424343-If you want ElevenLabs, Google Gemini, Gradium, Inworld, MiniMax, OpenAI, Volcengine, Vydra, xAI, or Xiaomi MiMo:
44+If you want Azure Speech, ElevenLabs, Google Gemini, Gradium, Inworld, MiniMax, OpenAI, Volcengine, Vydra, xAI, or Xiaomi MiMo:
444546+- `AZURE_SPEECH_KEY` plus `AZURE_SPEECH_REGION` (also accepts
47+`AZURE_SPEECH_API_KEY`, `SPEECH_KEY`, and `SPEECH_REGION`)
4548- `ELEVENLABS_API_KEY` (or `XI_API_KEY`)
4649- `GEMINI_API_KEY` (or `GOOGLE_API_KEY`)
4750- `GRADIUM_API_KEY`
@@ -67,6 +70,8 @@ so that provider must also be authenticated if you enable summaries.
67706871- [OpenAI Text-to-Speech guide](https://platform.openai.com/docs/guides/text-to-speech)
6972- [OpenAI Audio API reference](https://platform.openai.com/docs/api-reference/audio)
73+- [Azure Speech REST text-to-speech](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech)
74+- [Azure Speech provider](/providers/azure-speech)
7075- [ElevenLabs Text to Speech](https://elevenlabs.io/docs/api-reference/text-to-speech)
7176- [ElevenLabs Authentication](https://elevenlabs.io/docs/api-reference/authentication)
7277- [Gradium](/providers/gradium)
@@ -145,6 +150,36 @@ Full schema is in [Gateway configuration](/gateway/configuration).
145150}
146151```
147152153+### Azure Speech primary
154+155+```json5
156+{
157+ messages: {
158+ tts: {
159+ auto: "always",
160+ provider: "azure-speech",
161+ providers: {
162+"azure-speech": {
163+// apiKey falls back to AZURE_SPEECH_KEY.
164+// region falls back to AZURE_SPEECH_REGION.
165+ voice: "en-US-JennyNeural",
166+ lang: "en-US",
167+ outputFormat: "audio-24khz-48kbitrate-mono-mp3",
168+ voiceNoteOutputFormat: "ogg-24khz-16bit-mono-opus",
169+ },
170+ },
171+ },
172+ },
173+}
174+```
175+176+Azure Speech uses a Speech resource key, not an Azure OpenAI key. Resolution
177+order is `messages.tts.providers.azure-speech.apiKey` ->
178+`AZURE_SPEECH_KEY` -> `AZURE_SPEECH_API_KEY` -> `SPEECH_KEY`, plus
179+`messages.tts.providers.azure-speech.region` -> `AZURE_SPEECH_REGION` ->
180+`SPEECH_REGION` for the region. New config should use `azure-speech`; `azure`
181+is accepted as a provider alias.
182+148183### Microsoft primary (no API key)
149184150185```json5
@@ -495,7 +530,21 @@ Then run:
495530- `maxTextLength`: hard cap for TTS input (chars). `/tts audio` fails if exceeded.
496531- `timeoutMs`: request timeout (ms).
497532- `prefsPath`: override the local prefs JSON path (provider/limit/summary).
498-- `apiKey` values fall back to env vars (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `GEMINI_API_KEY`/`GOOGLE_API_KEY`, `GRADIUM_API_KEY`, `INWORLD_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`, `VYDRA_API_KEY`, `XAI_API_KEY`, `XIAOMI_API_KEY`). Volcengine uses `appId`/`token` instead.
533+- `apiKey` values fall back to env vars (`AZURE_SPEECH_KEY`/`AZURE_SPEECH_API_KEY`/`SPEECH_KEY`, `ELEVENLABS_API_KEY`/`XI_API_KEY`, `GEMINI_API_KEY`/`GOOGLE_API_KEY`, `GRADIUM_API_KEY`, `INWORLD_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`, `VYDRA_API_KEY`, `XAI_API_KEY`, `XIAOMI_API_KEY`). Volcengine uses `appId`/`token` instead.
534+- `providers.azure-speech.apiKey`: Azure Speech resource key (env:
535+`AZURE_SPEECH_KEY`, `AZURE_SPEECH_API_KEY`, or `SPEECH_KEY`).
536+- `providers.azure-speech.region`: Azure Speech region such as `eastus` (env:
537+`AZURE_SPEECH_REGION` or `SPEECH_REGION`).
538+- `providers.azure-speech.endpoint` / `providers.azure-speech.baseUrl`: optional
539+ Azure Speech endpoint/base URL override.
540+- `providers.azure-speech.voice`: Azure voice ShortName (default
541+`en-US-JennyNeural`).
542+- `providers.azure-speech.lang`: SSML language code (default `en-US`).
543+- `providers.azure-speech.outputFormat`: Azure `X-Microsoft-OutputFormat` for
544+ standard audio output (default `audio-24khz-48kbitrate-mono-mp3`).
545+- `providers.azure-speech.voiceNoteOutputFormat`: Azure
546+`X-Microsoft-OutputFormat` for voice-note output (default
547+`ogg-24khz-16bit-mono-opus`).
499548- `providers.elevenlabs.baseUrl`: override ElevenLabs API base URL.
500549- `providers.openai.baseUrl`: override the OpenAI TTS endpoint.
501550- Resolution order: `messages.tts.providers.openai.baseUrl` -> `OPENAI_TTS_BASE_URL` -> `https://api.openai.com/v1`
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。