Azure Speech is a bundled Azure AI Speech text-to-speech provider. Apus
calls the Azure Speech REST API directly with SSML, synthesizing MP3 for
standard replies, native Ogg/Opus for voice notes, and 8 kHz mulaw for
telephony channels such as Voice Call. The request sends the provider-owned
output format through the X-Microsoft-OutputFormat header.
| Detail | Value |
|---|---|
| Provider ID | azure-speech (alias: azure) |
| Website | Azure AI Speech |
| Docs | Speech REST text-to-speech |
| Auth | AZURE_SPEECH_KEY plus AZURE_SPEECH_REGION |
| Default voice | en-US-JennyNeural |
| Default file output | audio-24khz-48kbitrate-mono-mp3 |
| Default voice-note file | ogg-24khz-16bit-mono-opus |
Getting started
Create an Azure Speech resource
In the Azure portal, create a Speech resource. Copy **KEY 1** from
Resource Management > Keys and Endpoint, and copy the resource location
such as `eastus`.
```
AZURE_SPEECH_KEY=<speech-resource-key>
AZURE_SPEECH_REGION=eastus
```
Select Azure Speech in tts
```json5
{
tts: {
auto: "always",
provider: "azure-speech",
providers: {
"azure-speech": {
voice: "en-US-JennyNeural",
lang: "en-US",
},
},
},
}
```
Send a message
Send a reply through any connected channel. Apus synthesizes the audio
with Azure Speech and delivers MP3 for standard audio, or Ogg/Opus when
the channel expects a voice note.
Configuration options
All options live under tts.providers["azure-speech"].
| Option | Description |
|---|---|
apiKey |
Azure Speech resource key. Falls back to AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY, or SPEECH_KEY. |
region |
Azure Speech resource region. Falls back to AZURE_SPEECH_REGION or SPEECH_REGION. |
endpoint |
Optional Azure Speech endpoint override. Falls back to trusted AZURE_SPEECH_ENDPOINT. |
baseUrl |
Optional Azure Speech base URL override. |
voice |
Azure voice ShortName (default en-US-JennyNeural). Legacy alias: voiceId. |
lang |
SSML language code (default en-US). |
outputFormat |
Audio-file output format (default audio-24khz-48kbitrate-mono-mp3). |
voiceNoteOutputFormat |
Voice-note output format (default ogg-24khz-16bit-mono-opus). |
timeoutMs |
Request timeout override in milliseconds. Falls back to the global tts.timeoutMs. |
The provider is considered configured once apiKey is set plus one of
region, endpoint, or baseUrl. Env vars are only checked as a fallback
for config keys left unset. Workspace .env files cannot set
AZURE_SPEECH_ENDPOINT; use the process environment, global runtime dotenv,
or explicit config for endpoint routing.
Notes
Authentication
Azure Speech uses a Speech resource key, not an Azure OpenAI key. The key
is sent as `Ocp-Apim-Subscription-Key`; Apus derives
`https://<region>.tts.speech.microsoft.com` from `region` unless you
provide `endpoint` or `baseUrl`.
Voice names
Use the Azure Speech voice `ShortName` value, for example
`en-US-JennyNeural`. The bundled provider can list voices through the
same Speech resource and filters out voices marked deprecated, retired,
or disabled.
Audio outputs
Azure accepts output formats such as `audio-24khz-48kbitrate-mono-mp3`,
`ogg-24khz-16bit-mono-opus`, and `riff-24khz-16bit-mono-pcm`. Apus
requests Ogg/Opus for `voice-note` targets so channels can send native
voice bubbles without an extra MP3 conversion, and forces
`raw-8khz-8bit-mono-mulaw` for telephony targets.
Alias
`azure` is accepted as a provider alias for existing config, but new
config should use `azure-speech` to avoid confusion with Azure OpenAI
model providers.
Related
Text-to-speech
TTS overview, providers, and `tts` config.
Configuration
Full config reference including `tts` settings.
Providers
All bundled Apus providers.
Troubleshooting
Common issues and debugging steps.