Overview
PiperTTSService provides high-quality neural text-to-speech synthesis through a self-hosted HTTP server. The service offers complete privacy and control with no external API dependencies, making it ideal for on-premise deployments and applications requiring data sovereignty.
Piper TTS API Reference
Pipecat’s API methods for Piper TTS integration
Example Implementation
Browse examples using Piper TTS
Piper Documentation
Official Piper TTS documentation and setup
HTTP Server Setup
Configure Piper HTTP server for Pipecat
Installation
To use Piper services, no additional Pipecat dependencies are required:Prerequisites
Piper Server Setup
Before using PiperTTSService, you need:- Piper TTS Server: Set up a running Piper TTS server following the HTTP server documentation
- Voice Models: Download and configure voice models for your target languages
- Server Configuration: Configure server endpoint and voice selection
Required Configuration
- Server URL: Configure the Piper server endpoint in your service initialization
- Voice Models: Ensure required voice models are available on the server
Configuration
Piper offers two service implementations:PiperTTSService for local inference and PiperHttpTTSService for HTTP server-based synthesis.
PiperTTSService
Runs Piper locally, automatically downloading voice models as needed.str
required
deprecated
Piper voice model identifier (e.g.
en_US-ryan-high). Deprecated in
v0.0.105. Use settings=PiperTTSService.Settings(voice=...) instead.PiperTTSService.Settings
default:"None"
Runtime-configurable settings. See PiperTTSService
Settings below.
Path
default:"None"
Directory for storing voice model files. Defaults to the current working
directory.
bool
default:"False"
Re-download the voice model even if it already exists locally.
bool
default:"False"
Use CUDA for GPU-accelerated inference.
PiperTTSService Settings
Runtime-configurable settings passed via thesettings constructor argument using PiperTTSService.Settings(...). These can be updated mid-conversation with TTSUpdateSettingsFrame. See Service Settings for details.
PiperHttpTTSService
Connects to a running Piper HTTP TTS server.str
required
Base URL for the Piper TTS HTTP server.
aiohttp.ClientSession
required
An aiohttp session for HTTP requests.
str
default:"None"
deprecated
Piper voice model identifier (e.g.
en_US-ryan-high). Deprecated in
v0.0.105. Use settings=PiperHttpTTSService.Settings(voice=...) instead.PiperHttpTTSService.Settings
default:"None"
Runtime-configurable settings. See PiperHttpTTSService
Settings below.
PiperHttpTTSService Settings
Runtime-configurable settings passed via thesettings constructor argument using PiperHttpTTSService.Settings(...). These can be updated mid-conversation with TTSUpdateSettingsFrame. See Service Settings for details.
Usage
Local Inference
HTTP Server
Start the Piper HTTP server first:Notes
- Local execution:
PiperTTSServiceruns entirely locally with no network requests. Voice models are automatically downloaded on first use. - GPU acceleration: Set
use_cuda=Truefor GPU-accelerated inference withPiperTTSService(requires CUDA-compatible hardware). - Audio resampling: Audio output is automatically resampled to match the pipeline’s configured sample rate.
- No API key required: Piper is open-source and runs locally, so no API credentials are needed.
- GPL-3.0 license:
PiperTTSServiceruns Piper in-process via thepiper-ttspackage (thepiperextra), which is GPL-3.0 licensed. Distributing an application that includes it may subject the application to the GPL’s source-disclosure terms. To keep Piper out of your application’s license scope, usePiperHttpTTSServiceinstead, which talks to a separately installed Piper HTTP server.