--- title: PrimeTTS vs Inflect-Nano WASM emoji: 🗣️ colorFrom: indigo colorTo: pink sdk: static pinned: false license: apache-2.0 short_description: 7-model on-device TTS A/B, 100% client-side (WASM) models: - owensong/Inflect-Nano-v1 - Luigi/PrimeTTS - MediaTek-Research/Breeze2-VITS-onnx - Luigi/vits-melo-tts-zh_en-8k - Luigi/matcha-zh-tw-en-8k --- # PrimeTTS vs Inflect-Nano — WASM edition Fully client-side port of the original Gradio A/B demo. Pick a model, type text, hit Generate — everything runs in your browser, no server. | Model | Runtime | |---|---| | PrimeTTS v2.1 (3-voice), V2 Lite | onnxruntime-web, single-pass MB-iSTFT-VITS | | PrimeTTS v1, Inflect-Nano-v1 | onnxruntime-web, FastSpeech + Snake-HiFiGAN (JS port of `host_regulate`) | | Breeze2-VITS, MeloTTS, Matcha | [sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx)'s official WASM TTS build (own compile per model — weights baked in at build time) | **MOSS-TTS-Nano was removed from this demo.** It was ported (AR loop, RVQ codec, from-scratch SentencePiece tokenizer, voice cloning from a built-in preset or an uploaded reference clip) and worked, but as a 100M-parameter autoregressive model it's a poor fit for a lightweight in-browser demo next to the much faster VITS/FastSpeech options. Model weights are fetched lazily from their original repos and cached by the browser — nothing is bundled beyond the small text-processing assets. ## Local development ```bash npm install npm run dev # http://localhost:5173 npm run build # outputs dist/ ```