v0.7.1

airweave-ai/airweavev0.7.1May 10, 2026by KoljaB

AI Summary

A major feature release adding seven new TTS engines, inline voice and pause tags, and significant improvements to NeuTTS and ZipVoice.

Key Highlights

  • Added new TTS engines: OmniVoice, Typecast, Chatterbox Turbo, LuxTTS, SoproTTS, SopranoTTS, and MOSS-TTS
  • Implemented inline voice switching and pause tags within the TextToAudioStream
  • Reworked NeuTTS with explicit validation, GGUF support, and device separation

New Features

  • Support for OmniVoice, Typecast, Chatterbox Turbo, LuxTTS, SoproTTS, SopranoTTS, and MOSS-TTS engines
  • Inline voice switching via add_voice(), remove_voice(), and clear_voices() methods
  • Inline pause tags with duration overrides (e.g., [pause=0.5])
  • NeuTTS explicit voice validation and GGUF backbone cache resolution

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.