Inflect-Micro-v2 / README.md
owensong's picture
Polish model card navigation and evaluation presentation
a4d05f5 verified
|
Raw
History Blame
15.8 kB
metadata
license: apache-2.0
language:
  - en
pipeline_tag: text-to-speech
model_name: Inflect-Micro-v2
metrics:
  - wer
tags:
  - text-to-speech
  - speech-synthesis
  - local-tts
  - cpu
  - edge-ai
  - small-model
  - pytorch
  - vits
  - 24khz
thumbnail: assets/inflect-v2-repository-hero.png
inference: false

Inflect v2

Inflect-Micro-v2

Complete local text-to-waveform speech synthesis under 10M parameters.
24 kHz English TTS with the neural waveform decoder already inside the model.

GitHub Inflect Micro v2 Inflect Nano v2 Live playground Inflect v2 collection

9.36M complete parameters · 37.53 MB FP32 weights · one fixed English voice · no external vocoder


Complete means complete. The published parameter count includes text encoding, duration prediction, latent synthesis, and the integrated 24 kHz waveform decoder. Inflect does not hide a second vocoder, server model, or inference-time teacher.

Explore this model card

Listen

These are held-out text generations, not reconstructions of training audio. Each transcript is shown exactly as passed to the public frontend.

Test Exact transcript Generated audio
Conversational It wasn't until later that I realized what had actually happened.
Punctuation First, close the window; second, turn off the lamp; finally, lock the door.
Numbers The package weighs twelve point six kilograms and arrived on July twenty-first.
Names and places Gwendolyn photographed the eucalyptus trees outside Ljubljana.
Technical The system runs on three core components that all have to stay in sync.

Evaluation

No single metric captures TTS quality. Inflect v2 reports human preference, predicted naturalness, multi-ASR intelligibility, complete footprint, and runtime separately rather than compressing them into one unverifiable score.

Community preference ↑ UTMOS22 ↑ Two-ASR semantic WER ↓ Complete FP32 weights ↓
66.2% 4.395 3.99% 37.53 MB

The headline row always refers to Inflect-Micro-v2. Detailed competitor results and protocol boundaries are kept visible below.

1. Human blind preference

Community blind listening

Inflect-Micro-v2 recorded a 66.2% preference rate (21 wins · 10 losses · 3 ties) in the final anonymous community study. Systems were hidden, left/right order was randomized, and ties count as half a win. This is descriptive community evidence, not formal MOS.

2. Predicted naturalness versus footprint

Predicted quality versus footprint

The UTMOS22 run used 500 identical unseen prompts per voice. KittenTTS and Piper are equal-weight two-voice means; their observed voice ranges appear as whiskers. Supertonic 3-step is reported below the plotted range rather than flattening every other system.

Inflect-Micro-v2: 4.395 UTMOS22, 95% bootstrap CI 4.381–4.408. UTMOS22 is a learned predictor, not human MOS.

3. Intelligibility on unseen text

Two-ASR semantic WER consensus

The headline score is the equal-weight mean of Qwen3-ASR and Nemotron 3.5 corpus WER for every system. Whisper is excluded consistently from the headline because it produced insertion-heavy hallucinations on a subset of otherwise intelligible Supertonic 8-step clips. It is not deleted: the complete three-ASR evidence remains below.

Open the complete three-ASR audit

Semantic WER across Qwen3-ASR, Nemotron 3.5, and Whisper large-v3

System / voice Qwen3-ASR ↓ Nemotron 3.5 ↓ Whisper large-v3 ↓
Inflect-Micro-v2 2.52% 5.45% 2.73%
Inflect-Nano-v2 2.79% 5.63% 2.65%
KittenTTS Nano · Bruno 2.15% 3.96% 2.17%
KittenTTS Nano · Hugo 2.39% 3.80% 2.11%
Piper Low · Danny 2.62% 5.60% 2.55%
Piper Low · Ryan 2.81% 5.51% 2.87%
Supertonic 3 · M2 · 3-step 3.03% 6.04% 3.22%
Supertonic 3 · M2 · 8-step 2.05% 3.56% 8.08%

For Inflect-Micro-v2, the individual results are 2.52% Qwen3-ASR, 5.45% Nemotron 3.5, and 2.73% Whisper large-v3. The former three-model mean, 3.57%, is retained only as a descriptive audit value and is not used as the headline score.

4. Complete weight footprint

Complete deployable model footprint

Voice variants sharing the same weights are merged. Inflect totals include the integrated waveform decoder.

Open the frozen protocol and host-specific runtime snapshot
  • Modern400 uses 400 identical unseen English prompts per system: 200 fixed modern/stress prompts plus 200 deterministic FLEURS en_us test prompts.
  • Exact-text exclusion was checked against 87,362 training transcripts.
  • All ASR inputs are resampled to 16 kHz and scored with the same disclosed English normalizer.
  • UTMOS22 uses tarepan/SpeechMOS v1.2.0 on a separate 500-prompt generation set.
  • Headline intervals use 10,000 bootstrap samples.
  • The Modern400 corpus SHA-256 is b7504ce2dce44a2da82770a6a5dfd2a034fe17e2113980f8a69663ade417a34c.
  • Prompts, hypotheses, compressed row-level reports, and summaries ship under evaluation/final/.

The retained CPU snapshot used one isolated process on an AMD EPYC 7K62, 50 prompts, three warmups, and runtime-default CPU threading:

RTF ↓ Audio generated / wall time ↑ Median utterance p95 utterance Cold load
0.743 1.35× real time 3.205 s 4.681 s 1.35 s

RTF is wall time divided by generated audio duration. This is a host-specific engineering snapshot, not a portable cross-system speed claim. A matched local CPU rerun is tracked before the public release.


Choose the right Inflect

Inflect-Nano-v2 Inflect-Micro-v2
Complete parameters 3,966,721 9,356,513
FP32 weights 15.97 MB 37.53 MB
Positioning Smallest practical footprint Strongest Inflect v2 quality
24 kHz waveform decoder Included Included
Python API and frontend Same Same

Inflect-Micro-v2 is the quality-focused member of the family. Both models use the same public API and complete text-to-waveform packaging.

Run locally

Install

git clone https://huggingface.co/owensong/Inflect-Micro-v2
cd Inflect-Micro-v2
python -m pip install -r requirements.txt

Python

from inference import InflectTTS

tts = InflectTTS(".", device="cpu")
tts.save(
    "A small voice can still have something meaningful to say.",
    "sample.wav",
    speed=1.0,
    variation=0.667,
    seed=7,
)

Download through the Hub

import sys
from huggingface_hub import snapshot_download

model_dir = snapshot_download("owensong/Inflect-Micro-v2")
sys.path.insert(0, model_dir)

from inference import InflectTTS

tts = InflectTTS(model_dir, device="cpu")
sample_rate, waveform = tts.synthesize("The complete model runs locally.")

The result is a 24 kHz mono float32 waveform. Long input is split at punctuation-aware boundaries, synthesized chunk by chunk, and joined with controlled pauses.

Why Inflect

Small enough to ship Complete by design
37.53 MB of FP32 model weights, with no server dependency. Text frontend, acoustic generator, duration model, and waveform decoder ship together.
Built for local inference Measured, not hand-picked
CPU-ready PyTorch runtime, deterministic seeds, and punctuation-aware long text. Frozen prompts, raw hypotheses, intervals, hashes, and per-system reports are included.
Architecture and parameter budget

Inflect v2 is a parameter-efficient VITS-family end-to-end text-to-waveform generator with an English phoneme frontend, monotonic alignment, stochastic latent synthesis, residual coupling flow, and an integrated alias-reduced neural waveform decoder.

Component Inflect-Micro-v2
Latent channels 192
Text hidden channels 96
Encoder layers / heads 3 / 2
Feed-forward channels 768
Flow coupling blocks 4
Initial decoder channels 320
Upsample rates 8, 8, 2, 2
Training segment 16,384 samples
Output 24 kHz mono waveform

The release describes the deployable architecture. Private corpus-construction and optimization details are not part of this open-weight package.

Controls, determinism, and long text
Control Default Public range Meaning
speed 1.0 0.5–2.0 Lower is slower; higher is faster.
variation 0.667 0.0–1.0 Lower is steadier; higher samples more latent variation.
seed 0 integer Repeats the same stochastic sample on the same runtime stack.

Long passages are punctuation-aware chunks, not one unlimited autoregressive pass. Chunk boundaries receive short pauses and edge fades. See docs/API.md for waveform contracts and concurrency notes.

Data, voice, and adaptation status

The release voice was trained on a single-speaker synthetic English corpus generated with a larger third-party TTS teacher. No teacher model is required or shipped at inference. The package does not redistribute a real speaker dataset and does not claim the synthetic voice as the identity of a real person.

This release is inference-first. New-voice and new-language adaptation are not currently validated or supported. A new voice would replace the fixed speaker rather than add a selectable speaker; language adaptation also requires rebuilding normalization, phonemes, symbols, embeddings, and training data. See docs/DATA_AND_VOICE.md and docs/FINETUNING.md.

Package map

Path Purpose
model.pth Inference-only generator checkpoint
config.json Architecture and audio configuration; also the Hub download-count query file
inference.py Public Python API and CLI
inflect_vits_frontend.py English normalization, phonemization, and punctuation frontend
runtime/ Self-contained model implementation
samples/ Held-out example generations
evaluation/final/ Frozen benchmark prompts, reports, and protocol artifacts
docs/ API, deployment, evaluation, data, and adaptation documentation
release_manifest.json File sizes and SHA-256 hashes

Limitations

  • English only, with one fixed male voice. This is not zero-shot voice cloning.
  • Unfamiliar phrasing can become flatter, less expressive, or less stable.
  • Numbers, abbreviations, homographs, and uncommon names remain frontend- and context-sensitive.
  • Long passages use punctuation-aware chunking; transitions can differ from a native long-form model pass.
  • Stochastic variation can alter timing and pronunciation. Fix the seed for comparisons.
  • UTMOS22 and ASR scores do not replace controlled human MOS or MUSHRA-style evaluation.
  • Not validated for medical, legal, emergency, or accessibility-critical communication.

Responsible use

Do not use the included voice to impersonate a real person, deceive listeners, or create fraudulent content. Disclose synthetic speech where the context could otherwise mislead. Users are responsible for applicable laws and the Apache-2.0 license.

License, integrity, and attribution

Original Inflect code and weights are released under Apache-2.0. Bundled third-party components retain their own notices in THIRD_PARTY_NOTICES.md. release_manifest.json records packaged file sizes and SHA-256 hashes.

Private training scope and contact

Inflect v2 is an open-weight release. Deployable weights, inference code, frontend code, evaluation prompts, and release reports are public. The training corpus-generation pipeline, private filtering infrastructure, and full optimization recipe are not part of the public package.

Owen Song may share additional technical context privately for credible research, collaboration, reproducibility, or deployment inquiries when the request has a clear purpose and does not conflict with licensing or data-provenance constraints.

  • Discord: b111ue — fastest for informal technical questions
  • Email: owen.aw.song@gmail.com — preferred for professional inquiries

Citation

@software{song2026inflectmicrov2,
  author = {Owen Song},
  title = {Inflect-Micro-v2: Complete Local Text-to-Waveform TTS Under 10M Parameters},
  year = {2026},
  url = {https://huggingface.co/owensong/Inflect-Micro-v2}
}

Designed and developed independently by Owen Song · open weights · Apache-2.0 · complete local text-to-waveform inference