Overview
FloeTTSService provides an OpenAI-compatible interface for text-to-speech
through Floe — a unified billing ledger for voice AI
where one key powers the LLM, STT, and TTS legs of an agent, metered per call
and bounded by pre-call spend caps. It extends Pipecat’s OpenAITTSService, so
streamed audio, metrics, and tracing work unchanged.
BYOK-first. Pass provider_key= with your own vendor key and Floe routes the
call on your key, billing only its service fee while still metering the call and
enforcing your spend caps. Omit it to go keyless and let Floe manage the keys.
Source Repository
Source code, examples, and issues for the Floe integration
PyPI Package
The
pipecat-floe package on PyPIFloe
Documentation and supported models for Floe
API Keys
Create and manage your Floe agent keys
Installation
This is a community-maintained package distributed separately frompipecat-ai:
Prerequisites
Floe Account Setup
Before using the Floe TTS service, you need:- Floe Account: Sign up at the Floe dashboard
- API Key: Create an agent key from your dashboard. New keys come with welcome credit that covers the first calls.
Required Environment Variables
FLOE_API_KEY: Your Floe agent key for authentication
Configuration
str
default:"None"
Floe agent key. Falls back to the
FLOE_API_KEY environment variable if not
provided. Raises ValueError if neither is set.str
default:"openai/tts-1"
Fully qualified
provider/model identifier (for example "openai/tts-1"). A
bare model name is rejected by Floe.str
default:"alloy"
Voice identifier to synthesize with.
str
default:"https://credit-api.floelabs.xyz/v1"
Floe OpenAI-compatible base URL.
str
default:"None"
Optional Floe task ID sent as the
X-Floe-Task-Id header, so a per-task
budget can bound one conversation. Attached via a custom httpx client; if
you pass your own http_client, add the header to it yourself.str
default:"None"
BYOK. Your upstream vendor key, sent as the
X-Floe-Provider-Key header.
Floe routes the call on your key and bills only its service fee, while still
metering the call and enforcing your spend caps. Omit for the keyless path.
Like task_id, it’s attached via a custom httpx client; if you pass your own
http_client, add the header to it yourself.Additional keyword arguments passed through to the underlying
OpenAITTSService.