LiveKit
Overview
LiveKit Agents supports Speechify TTS through the official livekit-plugins-speechify package. You install it, import speechify from livekit.plugins, and pass speechify.TTS(...) as the tts= argument on AgentSession alongside your STT and LLM providers.
LiveKit’s Speechify plugin is Python-only. There is no Node.js LiveKit Speechify plugin at time of writing — see LiveKit’s Speechify TTS plugin guide for the current language support matrix.
SpeechifyAI Agents — our own voice-agent platform
SpeechifyAI ships its own voice-agents platform powered by Simba 3.2, which ranks #1 on the Artificial Analysis TTS leaderboard as of July 2026. See SpeechifyAI Agents if you want an end-to-end voice-agent stack instead of routing TTS through LiveKit.
Prerequisites
- Speechify API key (platform.speechify.ai/api-keys)
- LiveKit project (URL, API key, and secret)
- Deepgram key for STT, OpenAI key for LLM (this guide’s stack — swap freely)
Install
Configure
Put credentials in .env:
The plugin reads SPEECHIFY_API_KEY automatically when you don’t pass api_key= to speechify.TTS(...) directly.
Wire Speechify into AgentSession
The tts=speechify.TTS(...) line is the whole integration. Pair voice_id and model deliberately — a Simba 3.2 voice needs model="simba-3.2", and a Simba English voice needs model="simba-english". See Models for the compatibility matrix.
Verify without a LiveKit room
The plugin’s synthesize(...) method calls Speechify directly, so you can prove the TTS path works before provisioning a room:
Set SPEECHIFY_API_KEY in the environment first. A successful run writes speechify-tts-smoke.wav at 24 kHz mono.
Run the full agent
Once the smoke test passes, run against a LiveKit room:
Troubleshooting
TLS certificate errors on macOS
If Python cannot verify TLS certificates when calling Speechify, point SSL_CERT_FILE at your system bundle or the certifi bundle before running:
SPEECHIFY_API_KEY not picked up
SPEECHIFY_API_KEY not picked up
The plugin only reads the env var when you construct speechify.TTS() without an explicit api_key=. If you pass an argument, it takes precedence — pass None or omit it to use the env var.
Resources
Runnable end-to-end demo with smoke_synthesize.py and agent.py.
LiveKit’s plugin reference — voice IDs, model options, plugin arguments.
Blog: step-by-step build, latency notes, FAQ.
GET /v1/voices — filter by models: ["simba-3.2"] for current voices.