Inflect v2: Local Text-to-Waveform TTS at 3.96M and 9.36M Parameters

Inflect v2 delivers complete 24 kHz English TTS in two compact models (3.96M and 9.36M params) with no external vocoder. Explore architecture, evaluation, and CPU deployment.

Inflect v2: Local Text-to-Waveform TTS at 3.96M and 9.36M Parameters

Text-to-speech has long been dominated by cloud APIs and heavyweight models that demand GPU clusters. But what if you could run a complete, natural-sounding TTS system entirely on a CPU, with a footprint small enough to embed in any application? That's exactly what Inflect v2 delivers.

Inflect v2 is an open-weight, end-to-end text-to-waveform model that synthesizes 24 kHz mono English speech from raw text. It comes in two variants: Inflect-Micro-v2 (9,356,513 parameters, 37.53 MB FP32) and Inflect-Nano-v2 (3,966,721 parameters, 15.97 MB FP32). Both share the same Python API and CLI, so you can switch between them without changing your code.

Why Inflect v2 Matters

Most modern TTS systems rely on a separate vocoder (like HiFi-GAN) to convert mel spectrograms into waveforms. Inflect v2 integrates the waveform decoder directly into the model, eliminating the need for an external vocoder or any hosted inference component. This means:

  • True local inference — no cloud calls, no latency, no privacy concerns.
  • Minimal dependencies — just PyTorch (or ONNX Runtime) and a few standard libraries.
  • Deterministic output — seeds control generation, making it reproducible for testing and evaluation.

For developers building voice assistants, accessibility tools, or edge applications, this is a game-changer. You can ship a complete TTS pipeline in under 40 MB of weights.

Architecture: A Compact VITS-Family Generator

Inflect v2 follows the VITS (Variational Inference with adversarial Training for end-to-end Text-to-Speech) family architecture, but with a focus on efficiency. The synthesis path includes:

  1. English normalization and phoneme frontend — converts raw text to phonemes.
  2. Transformer text encoder — encodes the phoneme sequence.
  3. Stochastic duration predictor — predicts phoneme durations with variation control.
  4. Monotonic alignment — aligns text to latent speech representations.
  5. Latent-variable speech generation — generates a latent speech sequence.
  6. Residual coupling flow — refines the latent representation.
  7. Alias-reduced 24 kHz decoder — directly produces the final waveform.

Micro allocates more capacity to hidden and decoder widths, while Nano preserves the same deployment contract with a narrower network. Both models output a fixed English male voice, with deterministic seeds, speaking speed, and delivery variation controls.

Evaluation: Quality and Footprint, Measured Separately

Inflect v2 reports metrics that answer different questions, rather than collapsing them into a single score. Here's the headline data:

Model Community Preference ↑ UTMOS22 ↑ Two-ASR Semantic WER ↓ FP32 Weights ↓
Inflect-Micro-v2 66.2% 4.395 3.99% 37.53 MB
Inflect-Nano-v2 63.9% 4.386 4.21% 15.97 MB
  • Community preference is from anonymous randomized pairwise listening, normalized by model appearances, with ties counting as half a win. It's descriptive evidence, not formal MOS.
  • UTMOS22 is a learned quality predictor evaluated on 500 matched unseen prompts per voice.
  • Semantic WER is the equal-weight corpus-level mean of Qwen3-ASR and Nemotron 3.5 on 400 matched unseen prompts. Whisper large-v3 is excluded from the headline due to insertion-heavy failures on part of the comparison set.

CPU Deployment Profile

On a managed Hugging Face CPU Upgrade reference (8 vCPU, 32 GB RAM) with four framework threads, 100 fixed Modern400 prompts, and three passes (excluding the first cache-building pass), Inflect measured:

  • Micro: RTF 0.1593 (6.28x real time)
  • Nano: RTF 0.0933 (10.72x real time)

That means Nano can synthesize a 10-second sentence in under a second on a typical CPU — impressive for a fully local model.

Getting Started: Run It Locally

Cloning the repository and running your first synthesis is straightforward:

git clone https://github.com/owenawsong/Inflect.git
cd Inflect
python -m pip install -r requirements.txt

python examples/download_and_speak.py \
  --model micro \
  --text "A complete local voice can fit almost anywhere." \
  --output inflect.wav

The first run downloads and caches the selected model from Hugging Face. Switch --model micro to --model nano without changing the interface.

You can also render both models with the same prompt and seed for comparison:

python examples/compare_models.py \
  --text "The same sentence, rendered by both Inflect models." \
  --output-dir comparison

Using the Python API

From a model repository, you can use the InflectTTS class directly:

from inference import InflectTTS

tts = InflectTTS(".", device="cpu")
sample_rate, waveform = tts.synthesize(
    "The model returns a complete waveform.",
    speed=1.0,
    variation=0.667,
    seed=7,
)
tts.save("The same runtime can write a WAV directly.", "sample.wav", seed=7)

Long input is split at punctuation-aware boundaries, synthesized chunk by chunk, and joined with controlled pauses. This bounds memory usage; it's not a globally planned pass or acoustic streaming.

Scope and Limitations

Inflect v2 is an open-weight release, but it's important to know what it does and doesn't do.

Supported:

  • Local PyTorch FP32 inference on CPU and CUDA
  • ONNX Runtime inference for published ONNX packages
  • One fixed English male voice per model
  • Deterministic seeds, speaking speed, and delivery variation
  • Punctuation-aware long-text chunking
  • Complete waveform generation via Python API and CLI

Not claimed:

  • Voice cloning, selectable speakers, female voices, or multilingual speech
  • Acoustic streaming or measured time-to-first-audio
  • GGUF, Core ML, TFLite, FP16, or integer-quantized exports
  • Use for medical, legal, emergency, or accessibility-critical communication

Documentation and Community

The repository includes comprehensive documentation: a deployment guide, evaluation methodology, architecture details, a technical report, and a guide for language and fixed-voice adaptation (including data preparation, training, and export).

Inflect v2 is Apache-2.0 licensed, with bundled third-party components retaining their own notices. It was designed and developed independently by Owen Song, and the community can join via the Inflect Discord.

Final Thoughts

Inflect v2 proves that high-quality TTS doesn't require massive models or cloud infrastructure. With 3.96M parameters and 10.72x real-time CPU throughput, it's an excellent choice for developers who want to embed natural-sounding speech into their applications without sacrificing performance or privacy.

Whether you're building a voice assistant, an accessibility tool, or just experimenting with modern TTS, Inflect v2 is worth a try. Clone the repo, run the examples, and hear for yourself what a compact model can do.

Source

owenawsong/Inflect: Inflect is a lightweight, high‑quality text‑to‑speech model designed to deliver surprisingly natural audio with a minimal footprint. It’s an active work‑in‑progress focused on fast iteration, strong voice quality, and simple integration for developers experimenting with modern TTS systems.