- Paradee-8M Pt-BR (Brazilian Portuguese)
- Audio Previews
- Available Voices & Model Files
- Samples & Comparison with Teacher (Kokoro-82M)
- Quickstart (Python + ONNX Runtime)
- Model Specifications & ONNX Interface
- Repository Structure
- Embedded G2P Frontend:
phonemas_ptbr(Zero-Heap for ESP32) - Training & Distillation Methodology
- Acknowledgements & Lineage
- Citation
- Audio Previews
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
int8ONNX 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 inconfig.json, enclosed by0(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:
- TextStudent (4.23M parameters): Predicts phoneme durations, $F_0$ pitch curves, energy, and hidden feature alignments directly from text phonemes, distilled from Kokoro-82M.
- 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.
- Quantization: Weights are quantized per-channel to
int8, while keeping sensitive residual scales infp16and computing trigonometric bases dynamically, minimizing size without perceptual loss.
Acknowledgements & Lineage
- Base Architecture: Paradee-8M v1.2 by Sahil Mahendrakar.
- Teacher Model: Kokoro-82M by hexgrad.
- Source Code (Fork pt-BR): github.com/astrowar/paradee_pt.
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
- -