Paradee-8M Pt-BR (Brazilian Portuguese)

Paradee-8M Pt-BR is an ultra-lightweight Text-to-Speech (TTS) model for Brazilian Portuguese, with 7.88M parameters, distilled from the Brazilian Portuguese voices of Kokoro-82M (pf_dora and pm_alex) using the architecture of Paradee-8M v1.2 by Sahil Mahendrakar.

  • Ultra-lightweight: The quantized int8 ONNX model is only 8.46 MB per voice (compared to >325 MB for Kokoro).
  • Extremely fast: Runs ~25x to 50x faster than real-time on a single CPU thread (no GPU required). One second of speech is generated in ~20–40 ms.
  • Embedded & Edge Ready: Designed to run seamlessly in the browser, mobile devices, servers, and microcontrollers (e.g., ESP32 using the companion zero-heap C/C++ G2P engine phonemas_ptbr).
  • High Audio Fidelity: 24 kHz mono output with clean prosody and natural intonation.

Audio Previews

Voz Dora (pf_dora - Feminino):

Voz Alex (pm_alex - Masculino):


Available Voices & Model Files

Both voices feature dedicated, highly-optimized ONNX and PyTorch checkpoints:

Voice Gender Description ONNX int8 (Recomendado) ONNX fp32
Dora (pf_dora) Feminino Natural, expressiva e amigável onnx/paradee_dora_int8.onnx onnx/paradee_dora.onnx
Alex (pm_alex) Masculino Claro, profissional e assertivo onnx/paradee_alex_int8.onnx onnx/paradee_alex.onnx

Samples & Comparison with Teacher (Kokoro-82M)

Ouça e compare o resultado do Paradee-8M int8 (8.46 MB) com o professor Kokoro-82M (>325 MB) nas 5 frases de teste de samples/sentences.txt:

1. Apresentação

"Olá! Eu sou o Paradee, um modelo de síntese de voz ultra compacto e veloz para o português brasileiro."

  • Dora — Paradee-8M:

  • Dora — Kokoro-82M (Professor):

  • Alex — Paradee-8M:

  • Alex — Kokoro-82M (Professor):


2. Tecnologia e Inteligência Artificial

"A inteligência artificial transforma a tecnologia em uma experiência cada vez mais humana, acessível e intuitiva."

  • Dora — Paradee-8M:

  • Dora — Kokoro-82M (Professor):

  • Alex — Paradee-8M:

  • Alex — Kokoro-82M (Professor):


3. Poético / Drummond

"No meio do caminho tinha uma pedra, tinha uma pedra no meio do caminho, nunca me esquecerei desse acontecimento."

  • Dora — Paradee-8M:

  • Dora — Kokoro-82M (Professor):

  • Alex — Paradee-8M:

  • Alex — Kokoro-82M (Professor):


4. Assistente Virtual

"Com certeza! A previsão do tempo para amanhã indica sol com algumas nuvens e temperatura máxima de vinte e oito graus."

  • Dora — Paradee-8M:

  • Dora — Kokoro-82M (Professor):

  • Alex — Paradee-8M:

  • Alex — Kokoro-82M (Professor):


5. Reflexivo / Expressivo

"Grandes realizações não são fruto do acaso, mas sim do trabalho constante, dedicação e paixão pelo que se faz."

  • Dora — Paradee-8M:

  • Dora — Kokoro-82M (Professor):

  • Alex — Paradee-8M:

  • Alex — Kokoro-82M (Professor):


Quickstart (Python + ONNX Runtime)

1. Requirements

pip install onnxruntime soundfile numpy misaki[pt]

(You can also use phonemas_ptbr or espeak-ng directly for zero-dependency phonemization).

2. Inference Code

import json
import numpy as np
import onnxruntime as ort
import soundfile as sf
from misaki.espeak import EspeakG2P

# 1. Load vocabulary and ONNX model (Dora or Alex)
with open("config.json", "r", encoding="utf-8") as f:
    vocab = json.load(f)["vocab"]

# Escolha: "onnx/paradee_dora_int8.onnx" ou "onnx/paradee_alex_int8.onnx"
model_path = "onnx/paradee_dora_int8.onnx"
session = ort.InferenceSession(model_path, providers=["CPUExecutionProvider"])

# 2. Phonemize text to IPA tokens
g2p = EspeakG2P(language="pt-br")
text = "Olá! Eu sou o Paradee, um modelo de síntese de voz ultra compacto e veloz para o português brasileiro."
phonemes, _ = g2p(text)

# 3. Convert phonemes to input IDs (padded with 0 at both ends)
tokens = [0] + [vocab[c] for c in phonemes if c in vocab][:510] + [0]
input_ids = np.array([tokens], dtype=np.int64)
speed = np.array([1.0], dtype=np.float32)

# 4. Generate audio (24 kHz)
waveform = session.run(None, {"input_ids": input_ids, "speed": speed})[0][0]
sf.write("saida_paradee.wav", waveform, 24000)
print("Áudio salvo com sucesso em saida_paradee.wav!")

Model Specifications & ONNX Interface

  • Input Tensors:
    • input_ids (int64 [1, T]): Phoneme IDs corresponding to the vocabulary in config.json, enclosed by 0 (pad token) at both start and end (maximum $T \le 512$).
    • speed (float32 [1]): Speech speed multiplier (1.0 = normal, 1.2 = faster, 0.9 = slower).
  • Output Tensor:
    • waveform (float32 [1, samples]): Generated audio signal at 24,000 Hz (mono PCM).

Repository Structure

├── onnx/
│   ├── paradee_dora_int8.onnx     # Quantized int8 model - Dora (~8.46 MB, recomendado)
│   ├── paradee_dora.onnx          # Full precision fp32 model - Dora (~34.7 MB)
│   ├── paradee_alex_int8.onnx     # Quantized int8 model - Alex (~8.46 MB, recomendado)
│   └── paradee_alex.onnx          # Full precision fp32 model - Alex (~34.7 MB)
├── pytorch/
│   ├── text_side_dora.pt          # TextStudent weights - Dora
│   ├── decoder_dora.pt            # VDecoder acoustic decoder weights - Dora
│   ├── text_side_alex.pt          # TextStudent weights - Alex
│   └── decoder_alex.pt            # VDecoder acoustic decoder weights - Alex
├── samples/                       # Audio demonstration samples (24 kHz WAV)
│   ├── dora_1_paradee.wav · dora_1_kokoro.wav
│   ├── alex_1_paradee.wav · alex_1_kokoro.wav
│   └── sentences.txt
├── config.json                    # Model config & 114 pt-BR phoneme vocabulary
├── tokenizer.json                 # Tokenizer configuration for web / JS runtimes
├── LICENSE                        # Apache 2.0
└── README.md                      # Model documentation & specs

Embedded G2P Frontend: phonemas_ptbr (Zero-Heap for ESP32)

For microcontrollers and edge hardware (such as ESP32 / FreeRTOS) where running Python or full G2P libraries like misaki / espeak-ng is unfeasible:

  • Companion C/C++ repository: github.com/astrowar/paradee_pt
  • Zero-Heap (malloc/free-free): Operates entirely on stack memory with static Flash LUTs (PROGMEM), preventing heap fragmentation.
  • Blazing Fast: Converts sentences to tokens in ~24 µs (>40,000 sentences/sec).
  • Syllabification & Stress Rules: Native rule-based Portuguese accentuation and palatalization (ti $\rightarrow$ ʧi, di $\rightarrow$ ʤi).

Training & Distillation Methodology

Paradee decomposes the TTS pipeline into two independently distilled halves:

  1. TextStudent (4.23M parameters): Predicts phoneme durations, $F_0$ pitch curves, energy, and hidden feature alignments directly from text phonemes, distilled from Kokoro-82M.
  2. VDecoder v2 (3.65M parameters): An acoustic decoder combining an AdaIN-conditioned trunk with a conv1d-based discrete Fourier transform synthesis head (source-filter model) free of complex-number operators, trained with multi-resolution STFT spectrogram and adversarial losses.
  3. Quantization: Weights are quantized per-channel to int8, while keeping sensitive residual scales in fp16 and computing trigonometric bases dynamically, minimizing size without perceptual loss.

Acknowledgements & Lineage

Citation

@misc{paradee_ptbr_2026,
  title  = {Paradee-8M Pt-BR: Distilling Kokoro into an 8M Text-to-Speech Model for Brazilian Portuguese},
  author = {Eraldo R. / astrowar},
  year   = {2026},
  url    = {https://huggingface.co/eraldohug/Paradee-8M-PtBr}
}
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for eraldohug/Paradee-8M-PtBr

Quantized
(119)
this model