Overview
Azure Cognitive Services provides high-quality text-to-speech synthesis with two service implementations:AzureTTSService (WebSocket-based) for real-time streaming with low latency, and AzureHttpTTSService (HTTP-based) for batch synthesis. AzureTTSService is recommended for interactive applications requiring streaming capabilities.
Azure TTS API Reference
Pipecat’s API methods for Azure TTS integration
Example Implementation
Complete example with streaming synthesis
Azure Speech Documentation
Official Azure Speech Services documentation
Voice Gallery
Browse available voices and languages
Installation
To use Azure services, install the required dependencies:Prerequisites
Azure Account Setup
Before using Azure TTS services, you need:- Azure Account: Sign up at Azure Portal
- Speech Service: Create a Speech resource in your Azure subscription
- API Key and Region: Get your subscription key and service region
- Voice Selection: Choose from available voices in the Voice Gallery
Required Environment Variables
AZURE_SPEECH_API_KEY: Your Azure Speech service API keyAZURE_SPEECH_REGION: Your Azure Speech service region (e.g., “eastus”)
Configuration
AzureTTSService
str
required
Azure Cognitive Services subscription key.
str
required
Azure region identifier (e.g.,
"eastus", "westus2").str
default:"en-US-SaraNeural"
deprecated
Voice name to use for synthesis. Deprecated in v0.0.105. Use
settings=AzureTTSService.Settings(voice=...) instead.int
default:"None"
Output audio sample rate in Hz. When
None, uses the pipeline’s configured
sample rate.TextAggregationMode
default:"TextAggregationMode.SENTENCE"
Controls how incoming text is aggregated before synthesis.
SENTENCE
(default) buffers text until sentence boundaries, producing more natural
speech. TOKEN streams tokens directly for lower latency. Import from
pipecat.services.tts_service.bool
default:"None"
deprecated
Deprecated in v0.0.104. Use
text_aggregation_mode instead.InputParams
default:"None"
deprecated
Deprecated in v0.0.105. Use
settings=AzureTTSService.Settings(...)
instead.AzureHttpTTSService
The HTTP service accepts the same parameters as the streaming service excepttext_aggregation_mode and aggregate_sentences:
str
required
Azure Cognitive Services subscription key.
str
required
Azure region identifier.
str
default:"en-US-SaraNeural"
deprecated
Voice name to use for synthesis. Deprecated in v0.0.105. Use
settings=AzureHttpTTSService.Settings(voice=...) instead.int
default:"None"
Output audio sample rate in Hz.
InputParams
default:"None"
deprecated
Deprecated in v0.0.105. Use
settings=AzureHttpTTSService.Settings(...)
instead.Settings
Runtime-configurable settings passed via thesettings constructor argument using AzureTTSService.Settings(...). These can be updated mid-conversation with TTSUpdateSettingsFrame. See Service Settings for details.
Usage
Basic Setup
With Voice Customization
HTTP Service
Notes
- Streaming vs HTTP: The streaming service (
AzureTTSService) provides word-level timestamps and lower latency, making it better for interactive conversations. The HTTP service is simpler but returns the complete audio at once. - SSML support: Both services automatically construct SSML from the
Settings. Special characters in text are automatically escaped. - Word timestamps:
AzureTTSServicesupports word-level timestamps for synchronized text display. CJK languages receive special handling to merge individual characters into meaningful word units. - 8kHz workaround: At 8kHz sample rates, Azure’s reported audio duration may not match word boundary offsets. The service uses word boundary offsets for timing in this case.