Paradee-8M for ExecuTorch

Paradee-8M v1.0 exported to ExecuTorch (.pte, XNNPACK, fp32), in the two-program shape that react-native-executorch's Kokoro text-to-speech pipeline loads.

Paradee is Kokoro-82M distilled to 8 million parameters by Sahil Mahendrakar. It speaks one voice, Kokoro's af_heart, in US English at 24 kHz. These files change how the model is packaged, not the model.

Files

File Size What it is
duration_predictor_paradee_xnnpack_fp32.pte 9.0 MB Tokens to durations and features
synthesizer_paradee_xnnpack_fp32.pte 39.7 MB Features to audio, with Paradee's phase filter
voices/pd_heart.bin 1 KB A row of zeros. The voice is in the weights; the pipeline still asks for a voice file

Both programs carry a get_model_schema method, which the pipeline reads for their dynamic shapes: 3 to 128 tokens and 16 to 296 frames (7.4 s of speech) a chunk.

Use

With react-native-executorch 0.10, as a Kokoro model with the library's own US English phonemizer:

import { createKokoroTextToSpeech, models } from 'react-native-executorch';

const ROOT = 'https://huggingface.co/dr33m/paradee-8m-executorch/resolve/main';
const tts = await createKokoroTextToSpeech({
  name: 'kokoro',
  modelPaths: {
    durationPredictor: `${ROOT}/duration_predictor_paradee_xnnpack_fp32.pte`,
    synthesizer: `${ROOT}/synthesizer_paradee_xnnpack_fp32.pte`,
  },
  phonemizer: models.textToSpeech.KOKORO.EN_US.DEFAULT.phonemizer,
  voices: { pd_heart: `${ROOT}/voices/pd_heart.bin` },
});

How it was made

Exported with executorch==1.4.1 (torch.export, then to_edge_transform_and_lower with the XNNPACK partitioner), following Software Mansion's Kokoro export. Checked against Paradee's own ONNX file on six sentences: the frame counts are identical, and the audio is as close to the reference as two runs of the reference are to each other.

Three things differ from the original graph, none of them audible in that check:

  • The Gaussian noise in the harmonic source is a fixed buffer, so a chunk always comes out the same.
  • The LSTMs are unrolled and padded to the chunk bounds.
  • The phase filter's 1024-tap transforms are a matrix product over windows rather than convolutions. As convolutions they made XNNPACK allocate gigabytes on a phone.

Measured

On a Samsung Galaxy A33 (Exynos 1280, sold as 6 GB), in a development build, it makes speech in about half the time the speech lasts, and adds about 370 MB to the app at its peak.

License and credit

Apache 2.0, the same as Paradee and Kokoro. Paradee is by Sahil Mahendrakar (code, model); Kokoro-82M is by hexgrad.

Downloads last month
28
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for dr33m/paradee-8m-executorch

Quantized
(3)
this model