To install realtimetts, you need to specify the TTS engine(s) you wish to use.
For example, to install all supported engines:
pip install realtimetts[all]
To install with the Coqui TTS engine:
pip install realtimetts[coqui]
Available engine options include:
- all: Install all supported engines
- system: Local system TTS via
pyttsx3 - azure: Azure Speech Services support
- elevenlabs: ElevenLabs API integration
- openai: OpenAI TTS services
- gtts: Google Text-to-Speech
- edge: Microsoft Edge TTS
- coqui: Coqui TTS engine
- camb: CAMB AI MARS TTS
- minimax: MiniMax Cloud TTS
- cartesia: Cartesia API integration
- modelslab: ModelsLab API integration
- orpheus: Orpheus TTS support
- qwen: Native qwentts.cpp Qwen3 TTS integration
- qwen-server: OpenAI-compatible native Qwen3 TTS HTTP server
- omnivoice: Omnivoice TTS integration
- luxtts: LuxTTS integration
- chatterbox: Chatterbox Turbo integration
- inflect: Inflect-Micro-v2 local TTS integration
- inflect-pytorch: Inflect-Micro-v2 PyTorch backend only
- inflect-onnx: Inflect-Micro-v2 ONNX backend only
- sopro: SoproTTS integration
- soprano: SopranoTTS integration
- neutts: NeuTTS integration
- zipvoice: ZipVoice dependency support
- moss: MOSS-TTS dependency support
- pockettts: PocketTTS integration
- parler: Parler TTS integration
- styletts: StyleTTS integration
- piper: Piper executable engine support
- typecast: Typecast API integration
- nltk: Default NLTK plus rule-based sentence tokenizer (included by default)
- stanza: Add the optional Stanza sentence tokenizer
- minimal: Core package only (for custom engine development)
You can install multiple engines by separating them with commas. For example:
pip install realtimetts[azure,elevenlabs,openai]
RealtimeTTS
RealtimeTTS is a Python text-to-speech library for applications that need to turn strings, generators, and LLM token streams into audio with low latency. It can play speech locally, stream chunks to another process, write WAV files, and fall back across multiple engines.
The project supports a broad engine matrix: local system voices, cloud APIs, free service wrappers, local neural models, and voice-cloning stacks.
Support RealtimeTTS
If RealtimeTTS saved you time, one GitHub star is a simple way to help make it more stable.
Stars improve visibility, and visibility brings more users, more real-world testing, more bug reports, more fixes, and better releases for everyone.
Demo
https://github.com/KoljaB/RealtimeTTS/assets/7604638/87dcd9a5-3a4e-4f57-be45-837fc63237e7
Recommended Engine: QwenEngine
For supported Windows and Linux systems with an NVIDIA GPU, QwenEngine is currently the recommended and preferred RealtimeTTS engine for high-quality, low-latency conversational speech. It offers multilingual Qwen3-TTS quality, x-vector and ICL voice cloning, native 24 kHz PCM streaming, fast cancellation, and the same engine either in-process or behind the production Qwen server.
In 10 warm Linux runs on our tuned RTX 4090 setup, the timeline was: about 35 ms engine TTFT, another 35 ms until RealtimeTTS emits its first PCM chunk, and about 10 ms of silence inside that chunk. Predicted audible onset was 80.9 ms and RTF was 0.108. These are orientation figures; measure the complete path on your target system.
python -m pip install --only-binary=realtimetts-qwen-native "realtimetts[qwen]"
python -m qwentts_cpp doctor
See the QwenEngine guide for setup and details.
InflectEngine is the documented lightweight
alternative for one fixed English voice on CUDA or ONNX CPU.
Install
For the fastest local smoke test, install the system engine:
pip install "realtimetts[system]"
The system and other traditional engine extras use PyAudio. On Linux, install
PortAudio headers before those extras:
sudo apt-get update
sudo apt-get install python3-dev portaudio19-dev
On macOS:
brew install portaudio
The native qwen and Inflect extras use the established PyAudio/PortAudio
playback path. Windows has prebuilt PyAudio wheels for Python 3.10–3.13. On
Linux and macOS, install PortAudio first using the commands above. The Qwen
native wheel itself does not require a local CUDA Toolkit. RealtimeTTS 0.7.4
declares validated native Qwen wheels only for x86-64 Windows and Linux; macOS
and other platforms are not supported release targets.
Install realtimetts[qwen-server] to expose the same native engine through
an OpenAI-compatible HTTP API. The server provides /v1/audio/speech, dynamic
voice registration, persistent voice latents, and watchdog-ready request/stall
metrics on /health; it is headless and does not install PyAudio/PortAudio.
The server defaults to loopback (127.0.0.1). LAN exposure requires a
deliberate --allow-lan bind plus a built-in API key, or a trusted reverse
proxy that terminates TLS and enforces authentication. CORS defaults to
explicit localhost origins and rejects wildcard *; CORS is not an access
control boundary. See the Qwen guide for
deployment, protocol, licensing, and asset boundaries.
Sentence splitting defaults to stream2sentence's nltk+rule-based consensus
mode. The normal install, including realtimetts[qwen], installs
stream2sentence[nltk] but not Stanza or PyTorch. Add Stanza only when wanted:
pip install "realtimetts[stanza]"
# or
pip install "realtimetts[qwen,stanza]"
For cloud engines, local neural engines, CUDA, mpv, and current packaging
caveats, see docs/installation.md.
First Audio
from RealtimeTTS import TextToAudioStream, SystemEngine
if __name__ == "__main__":
stream = TextToAudioStream(SystemEngine())
stream.feed("Hello from RealtimeTTS.")
stream.play()
Use the if __name__ == "__main__": guard in scripts, especially on Windows and
when using engines that start worker processes.
Streaming Text
feed() accepts an iterator, so text can arrive while audio is already playing:
from RealtimeTTS import TextToAudioStream, SystemEngine
def text_chunks():
yield "This starts speaking quickly. "
yield "More text can arrive while audio is already playing."
if __name__ == "__main__":
stream = TextToAudioStream(SystemEngine())
stream.feed(text_chunks())
stream.play()
Use the same pattern with an LLM client by yielding only non-empty text chunks. See docs/llm-streaming.md.
Output
Write audio to a WAV file without local speaker playback:
from RealtimeTTS import TextToAudioStream, SystemEngine
if __name__ == "__main__":
stream = TextToAudioStream(SystemEngine())
stream.feed("Save this speech to a file.")
stream.play(output_wavfile="speech.wav", muted=True)
For output devices, mpv playback, muted mode, callbacks, and chunk formats,
see docs/output-and-files.md.
Features
- Low-latency playback from strings, generators, and streamed model output.
- Multiple engines with local, cloud, free-service, and neural model options.
- Fallback engines for more resilient synthesis.
- Sync and async playback with pause, resume, stop, and state inspection.
- Text, audio, sentence, character, word-timing, and audio-chunk callbacks.
- WAV output, muted synthesis, selected output devices, and volume control.
- Voice switching and voice-cloning workflows where supported by the engine.
Engine Overview
| Engine | Type | Install/status note | Best first use |
|---|---|---|---|
QwenEngine (recommended) |
Local native neural / HTTP server | realtimetts[qwen] or realtimetts[qwen-server] with a matching native wheel |
High-quality multilingual realtime speech, voice cloning, and fast cancellation. |
InflectEngine |
Local lightweight | realtimetts[inflect] |
Fast fixed English voice through PyTorch CUDA or ONNX CPU. |
SystemEngine |
Local | realtimetts[system] |
First local audio smoke test. |
GTTSEngine |
Free service | realtimetts[gtts] |
Simple network-backed speech. |
EdgeEngine |
Free service | realtimetts[edge], needs mpv |
Free streamed voices. |
OpenAIEngine |
Cloud API | realtimetts[openai] |
OpenAI TTS voices. |
AzureEngine |
Cloud API | realtimetts[azure] |
Azure voices and word timings. |
ElevenlabsEngine |
Cloud API | realtimetts[elevenlabs], needs mpv |
High-quality API voices. |
CambEngine |
Cloud API | realtimetts[camb] |
CAMB MARS API voices. |
MiniMaxEngine |
Cloud API | realtimetts[minimax] |
MiniMax cloud voices. |
CartesiaEngine |
Cloud API | realtimetts[cartesia] |
Cartesia API voices. |
TypecastEngine |
Cloud API | realtimetts[typecast] |
Typecast API voices. |
ModelsLabEngine |
Cloud API | realtimetts[modelslab] |
ModelsLab API voices. |
CoquiEngine |
Local neural | realtimetts[coqui] |
Local XTTS voice cloning. |
PiperEngine |
Local executable | realtimetts[piper], external Piper setup |
Fast local executable TTS. |
StyleTTSEngine |
Local neural | realtimetts[styletts], local checkout/assets |
StyleTTS experiments. |
ParlerEngine |
Local neural | realtimetts[parler] |
GPU local model experiments. |
KokoroEngine |
Local neural | realtimetts[kokoro] |
Local voices and timing support. |
OrpheusEngine |
Local/API-style | realtimetts[orpheus] |
Orpheus model workflows. |
OmniVoiceEngine |
Local neural | realtimetts[omnivoice] |
Multilingual voice cloning. |
PocketTTSEngine / PocketTTSGpuEngine |
Local lightweight | realtimetts[pockettts], realtimetts[pockettts-gpu] plus GPU fork |
CPU-oriented voice cloning, optional CUDA fork path. |
NeuTTSEngine |
Local neural | realtimetts[neutts], optional neutts-gguf |
Reference-audio voice cloning. |
ZipVoiceEngine |
Local neural | realtimetts[zipvoice], external checkout |
ZipVoice cloning/server demos. |
LuxTTSEngine |
Local neural | realtimetts[luxtts] |
LuxTTS voice cloning. |
ChatterboxEngine |
Local neural | realtimetts[chatterbox] |
Chatterbox prompt-audio voices. |
SoproTTSEngine |
Local neural | realtimetts[sopro] |
Sopro reference-audio voices. |
SopranoEngine |
Local neural | realtimetts[soprano] |
Soprano local synthesis. |
MossTTSEngine |
Local neural | realtimetts[moss], runtime assets |
MOSS-TTS experiments. |
See docs/engine-selection.md before choosing an engine for an application. The engine-specific docs are being split out from the old README and source audit.
Documentation
- Quick start: shortest working examples.
- Installation: extras, platform setup, external tools, API keys, and known packaging mismatches.
- Engine selection: engine matrix and selection guidance.
- Feed and playback:
feed(),play(),play_async(), pause, resume, stop, text state, and inline tags. - LLM streaming: provider-neutral streamed text patterns and latency tuning.
- Output and files: WAV files, audio chunks, muted mode, output devices, mpv, buffering, and volume.
- Engine setup pages now link one focused page for each concrete engine source.
- FAQ: legacy troubleshooting page while topic docs are being split out.
Legacy translated docs remain under docs/<locale>/ while English is refactored
as the canonical source.
Server Example
The browser and WebSocket server example lives in example_fast_api/:
python -m pip install fastapi uvicorn websockets pyaudio
python example_fast_api/async_server.py
Open http://localhost:8000 or connect to ws://localhost:8000/ws.
Related Project
RealtimeSTT is the speech-to-text counterpart for realtime voice input.
Contributing
Focused docs, tests, and engine fixes are easiest to review. During the docs refactor, keep English docs canonical and note mismatches between source, packaging, examples, and tests rather than hiding them.
License
RealtimeTTS source code is MIT licensed. Engine providers, model weights, voice data, datasets, generated audio, and third-party services can have separate terms. Read LICENSING_ADDENDUM.md and the relevant provider or model licenses before commercial use.
For the native Qwen/Inflect paths, qwentts.cpp and realtimetts-qwen-native are
MIT-licensed; Qwen 0.6B Base/tokenizer and Inflect Micro-v2/ONNX are
Apache-2.0. Model weights, voice latents, and reference audio are not bundled,
and users are responsible for the rights to every voice or recording they
provide.
Audio samples derived from the EARS dataset by Meta are licensed under CC BY-NC 4.0. See the original dataset terms for details.
Author
Kolja Beigel
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file realtimetts-0.7.4.tar.gz.
File metadata
- Download URL: realtimetts-0.7.4.tar.gz
- Upload date:
- Size: 603.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23c9552ed2aba1460546af07c3c14c1d289185a2d1959908acd132f4e5c2a849
|
|
| MD5 |
4e6f6eef9cfeb2479426c5119dc47020
|
|
| BLAKE2b-256 |
e848fcbc53ffbad6da356d8a9292f4a52805618feefecac5c58b62b74af1700b
|
File details
Details for the file realtimetts-0.7.4-py3-none-any.whl.
File metadata
- Download URL: realtimetts-0.7.4-py3-none-any.whl
- Upload date:
- Size: 616.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64cdc2842d4ca9ad029b81b718fead43724858bc30b3afd8723420f63dde616c
|
|
| MD5 |
0645cde6bdcfb542ff8c538b2f6ec00d
|
|
| BLAKE2b-256 |
2052bc8b5a22db890cc3c283c2edb47326e7195d3ae905c1e4ef759b25fc6ba9
|