v0.7.1
fatedier/frpv0.7.1May 10, 2026by KoljaB
AI Summary
A major feature update adding support for seven new AI voice cloning engines and inline voice control tags.
Key Highlights
- Added 7 new TTS engines (OmniVoice, Typecast, LuxTTS, Chatterbox, Sopro, Soprano, MOSS-TTS)
- Introduced inline voice switching and pause tags
- Reworked NeuTTS with explicit validation and GGUF support
- Fixed packaging issues from v0.7.0
New Features
- New AI TTS engines (OmniVoice, Typecast, LuxTTS, Chatterbox, Sopro, Soprano, MOSS-TTS)
- Inline voice and pause tag control
Full Release Notes
# RealtimeTTS v0.7.1 ### Features - **New TTS Engines** - **OmniVoice**: Added `OmniVoiceEngine` and `OmniVoiceVoice` for `k2-fsa/OmniVoice` voice cloning with reference audio and transcript support. - **Typecast**: Added `TypecastEngine` and `TypecastVoice` for Typecast API synthesis through the `typecast-python` SDK. - **Chatterbox Turbo**: Added `ChatterboxEngine` and `ChatterboxVoice` for prompt-audio voice cloning through `chatterbox-tts`. - **LuxTTS**: Added `LuxTTSEngine` and `LuxTTSVoice` for LuxTTS/ZipVoice-based zero-shot voice cloning with prompt audio and transcript support. - **SoproTTS**: Added `SoproTTSEngine` and `SoproTTSVoice` with reference-audio setup and native streaming support. - **SopranoTTS**: Added `SopranoEngine` and `SopranoVoice` for the upstream `soprano-tts` package. - **MOSS-TTS**: Added `MossTTSEngine` and `MossTTSVoice` for MOSS-TTS-Nano with ONNX and torch backend support. - **Inline Voice and Pause Tags** - Added inline voice switching in `TextToAudioStream` via `add_voice()`, `remove_voice()`, `clear_voices()`, and configurable tag delimiters. - Added inline pause tags with `add_pause()`, `remove_pause()`, `clear_pauses()`, and duration overrides such as `[pause=0.5]`. - Added `add_emotion()` / `remove_emotion()` aliases for emotion-style voice switching. - Active voice mappings are reapplied after fallback engine switches. ### Improvements - **NeuTTS** - Reworked `NeuTTSEngine` for explicit `NeuTTSVoice` validation, reference transcript checks, pre-encoded reference caching, and cleaner voice management. - Added support for separate backbone/codec devices, optional language selection, GGUF backbone cache resolution, and streaming configuration. - Added `neutts-gguf` extra for NeuTTS optional `llama`/`onnx` dependencies. - Added cleanup of reference cache and CUDA cache on shutdown. - **ZipVoice** - Improved prompt feature caching with metadata based on prompt audio identity, transcript, target RMS, feature scale, and sample rate. - Ignores stale or legacy prompt caches instead of silently reusing mismatched features. - Fixed tokenizer language argument handling for the `espeak` tokenizer path. - **Engine API Consistency** - Updated engine `synthesize()` methods to accept an optional `sentence_count` argument used by `TextToAudioStream`. - Added root lazy exports for `OmniVoiceEngine`, `TypecastEngine`, `LuxTTSEngine`, `ChatterboxEngine`, `SoproTTSEngine`, `SopranoEngine`, and `MossTTSEngine`. - Added matching exports under `RealtimeTTS.engines`. - **Packaging** - Expanded engine extras for the new local/cloud engines and broader neural-engine dependency stacks. - Added `modelslab`, `typecast`, `omnivoice`, `luxtts`, `zipvoice`, `chatterbox`, `sopro`, `soprano`, `neutts-gguf`, `styletts`, `parler`, `moss`, `moss-tts`, `pocket`, and `piper` extras. - Expanded `[all]` to include the broader engine dependency set. - Relaxed `camb-sdk` from `==1.5.8` to `>=1.5.8`. - Fixed `unidic-lite` requirement typo from `=>1.0.8` to `>=1.0.8`. - Excluded tests from built distributions. ### Fixes - Fixed the 0.7.0 PyPI packaging mismatch where `typecast` extra metadata existed but `typecast_engine.py` was missing from the distribution. - Fixed `TypecastEngine.synthesize()` to accept the stream-provided `sentence_count` argument. - Fixed Piper model config reading to use UTF-8 encoding. (#371) - Improved silence insertion so it respects stream channel count and avoids non-PCM/custom stream formats. - Preserved unknown inline tags as text instead of stripping them. - Added `tests/ref_audio.pt` to `.gitignore`. ### Documentation - Reworked the README into a compact overview with quick install, first audio, streaming, output, engine overview, and docs map. - Added focused English documentation pages for installation, quick start, engine selection, feed/playback, LLM streaming, output/files, and each concrete engine. - Added MkDocs navigation for the new English-first docs topology. - Documented engine-specific install caveats for local model checkouts, external binaries, CUDA/PyTorch choices, API keys, and manual upstream package installs. ### Tests and Examples - Added `tests/omnivoice_test.py`. - Added `tests/omnivoice_emotions.py` for inline emotion/voice tag demos. - Added emotional reference WAV assets and `reference_texts.json` for OmniVoice emotion tests. - Updated `tests/faster_qwen_emotions.py` with the full emotion dataset list. ### Notes - Some engines still require external setup that cannot be installed by Python extras alone, including Piper binaries/models, ZipVoice/LuxTTS/MOSS upstream assets, CUDA-specific PyTorch wheels, provider accounts, and local model files. - No intentional breaking changes.