Skip to content

owenawsong/Inflect

Inflect v2

Complete 24 kHz English text-to-waveform TTS at 3.97M and 9.36M parameters.
Two local models. One runtime. No external vocoder or hosted inference component.

Playground Inflect Nano v2 Inflect Micro v2 Evaluation Discord

Models · Evaluation · Run it · Architecture · Documentation


Choose your model

Inflect-Micro-v2 Inflect-Nano-v2
Inflect Micro v2 cover Inflect Nano v2 cover
Quality first. The stronger overall release at 9,356,513 complete parameters. Footprint first. The full synthesis path in 3,966,721 complete parameters.
Model and weights Model and weights

Both packages expose the same Python API and CLI. The counts include text encoding, duration prediction, latent speech generation, and the integrated waveform decoder. Training-only discriminators are excluded because they are not loaded for synthesis.

Micro v2 Nano v2
Complete inference parameters 9,356,513 3,966,721
FP32 weights 37.53 MB 15.97 MB
Output 24 kHz mono 24 kHz mono
Voice Fixed English male Fixed English male
Managed CPU throughput 6.28x real time 10.72x real time

Listen first

Use the live Inflect v2 playground to compare Micro and Nano on identical text and seeds. It supports speaking speed, delivery variation, restrained pitch adjustment, punctuation-aware long-text generation, and downloadable WAV output.

Every output is synthesized from the entered text by the selected published checkpoint. The Space does not substitute prerecorded clips.

Evaluation

Inflect reports human preference, predicted naturalness, multi-ASR intelligibility, footprint, and runtime separately. They answer different questions and are not collapsed into a single score.

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

Predicted quality versus complete model footprint

Semantic WER across two ASR systems on 400 matched unseen prompts

CPU deployment profile

Inflect Micro and Nano managed CPU throughput

The CPU run used the managed Hugging Face CPU Upgrade reference (8 vCPU, 32 GB RAM), four framework threads, 100 fixed Modern400 prompts, and three passes. The first cache-building pass was excluded; passes 2 and 3 form the steady-state pool. Micro measured RTF 0.1593 and Nano RTF 0.0933.

Metric notes

  • Community preference is anonymous randomized pairwise listening. The rates are normalized by model appearances, with ties counting as half a win. It is descriptive community evidence, not formal MOS.
  • UTMOS22 is a learned quality predictor evaluated on 500 matched unseen prompts per voice. It is not human MOS.
  • Headline 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 retained in the raw audit but excluded consistently from the headline due to insertion-heavy failures on part of the comparison set.

See the full evaluation methodology for scope, competitor selection, limitations, and reproducibility details. Raw manifests, hypotheses, intervals, and integrity hashes ship in each Hugging Face model repository under evaluation/.

Run it

From this repository

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.

Render both models with the same prompt and seed:

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

From a model repository

git clone https://huggingface.co/owensong/Inflect-Micro-v2
cd Inflect-Micro-v2
python -m pip install -r requirements.txt
python inference.py --text "Small models can still speak clearly." --output out.wav
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; it is not one globally planned pass or acoustic streaming. See deployment for controls, hardware interpretation, and format support.

Architecture

Inflect v2 is a compact VITS-family end-to-end generator:

flowchart LR
  A["English text"] --> B["Normalization + phonemes"]
  B --> C["Transformer text encoder"]
  C --> D["Duration + latent speech model"]
  D --> E["Residual coupling flow"]
  E --> F["Alias-reduced 24 kHz decoder"]
  F --> G["Mono waveform"]
Loading

The deployed path includes an English normalization and phoneme frontend, transformer text encoder, stochastic duration predictor, monotonic alignment, latent-variable speech generation, residual coupling flows, and an integrated alias-reduced neural waveform decoder. Micro allocates more capacity to hidden and decoder width; Nano preserves the same deployment contract with a narrower network.

Inflect v2 is an open-weight release. Deployable weights, inference code, frontend code, evaluation artifacts, and integrity hashes are public. Private corpus construction and full optimization infrastructure are not included.

Scope

Supported

  • local PyTorch FP32 inference on CPU and CUDA;
  • one fixed English male voice per model;
  • deterministic seeds, speaking speed, and delivery variation;
  • punctuation-aware long-text chunking;
  • complete waveform generation through a Python API and CLI.

Not claimed

  • voice cloning, selectable speakers, female voices, or multilingual speech;
  • acoustic streaming or measured time-to-first-audio;
  • validated ONNX, GGUF, Core ML, TFLite, FP16, or integer-quantized exports;
  • use for medical, legal, emergency, or accessibility-critical communication.

Documentation

Document Purpose
Deployment guide Install, controls, long text, measured CPU behavior, and export status
Evaluation Protocols, metrics, comparison policy, and reproducibility
Architecture Shipped inference path and parameter accounting
Technical report Compact system and evaluation report
Release notes Frozen v2 capabilities, results, and limitations
Project structure Public code, research code, and release boundaries
Contributing Reproducible bug reports and contribution standards
Security Private vulnerability reporting and responsible use

v1

Legacy Inflect Nano v1

Inflect-Nano-v1 remains available for reproducibility and historical comparison. Inflect v2 is the recommended family for new integrations. v1 is not mixed into the v2 runtime, documentation, or install path.

License and contact

Original Inflect code and released weights are Apache-2.0. Bundled third-party components retain their own notices. Designed and developed independently by Owen Song.

Citation

@software{song2026inflectv2,
  author = {Owen Song},
  title = {Inflect v2: Complete Local Text-to-Waveform TTS at 3.97M and 9.36M Parameters},
  year = {2026},
  url = {https://github.com/owenawsong/Inflect}
}

About

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.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages