alt.freeweights.speech / phonon-31m-en-ONNX
From: onnx-community <huggingface.co/onnx-community>Newsgroups: alt.freeweights.speechSubject:

phonon-31m-en-ONNX

Date: 2026-11-15Commit: f0f522aSigned: 2DC28CC7B26A283B ✓

Text to speech model. Onnx weights, 669 MB in all. Published by onnx-community under Apache-2.0.

speech669MBphonon-31m-en-ONNXonnxpermissive
FactsParamsnot statedSize669 MBFormatsonnxTasktext to speechLicenseApache-2.0From sourcepermissive
$ fw get onnx-community/phonon-31m-en-ONNX
# manifest sha256 d870568e3089… · 669 MB · 152 files
$ fw verify ./phonon-31m-en-ONNX onnx-community/phonon-31m-en-ONNX
From sourceHosted (signed)onnx-community/phonon-31m-en-ONNXLast check: 2026-11-15 04:57 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of phonon-31m-en.

Works with

Convert with

Scan with

Overview

Size
669 MB
Weights
11.3 MB (smallest of 20 ONNX variants)
Parameters
not stated
Formats
onnx
Task
text to speech
License
Apache-2.0 (permissive)
Files
152, each with a sha256
Publisher
onnx-community
Added
2026-11-15
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Base model: gradium/phonon-31m-en

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:57 UTCpassed

Model card

From the publisher at commit f0f522a. Shown as plain text with links; images open at the publisher.

This is a Transformers.js-ready ONNX conversion of the original Hugging Face model gradium/phonon-31m-en. The original model card content follows below.

Usage with Transformers.js#

Native Phonon support (the text-to-speech pipeline below) comes with the Transformers.js release that includes huggingface/transformers.js#1811. On Transformers.js 4.2.0, use the snippet under "Streaming without the pipeline".

import { pipeline } from "@huggingface/transformers";

const tts = await pipeline("text-to-speech", "onnx-community/phonon-31m-en-ONNX", { dtype: "q4" });
// Any voice from "Available voices" below, as a URL, a Float32Array or a Tensor.
const speaker_embeddings = "https://huggingface.co/onnx-community/phonon-31m-en-ONNX/resolve/main/voices/LMDIYE0Oa377Qh6Z.bin";
const audio = await tts("Hello from Phonon!", { speaker_embeddings });
await audio.save("phonon.wav");

A voice URL is downloaded on every call. To speak several texts, load the voice once and pass the Float32Array instead. To receive audio chunk by chunk (each chunk is one or more whole sentences, up to about 50 tokens), call the model directly:

import { AutoProcessor, GradiumPhononTTSForConditionalGeneration, Tensor } from "@huggingface/transformers";

const id = "onnx-community/phonon-31m-en-ONNX";
const processor = await AutoProcessor.from_pretrained(id);
const model = await GradiumPhononTTSForConditionalGeneration.from_pretrained(id, { dtype: "q4" });
const data = new Float32Array(await (await fetch(`https://huggingface.co/${id}/resolve/main/voices/default.bin`)).arrayBuffer());
const speaker_embeddings = new Tensor("float32", data, [1, 512, data.length / 512]);
const chunks = await processor("Hello from Phonon. This is the second sentence.");
for await (const pcm of model.generate_speech({ chunks, speaker_embeddings })) {
  console.log(pcm.length); // mono 24 kHz samples, one text chunk at a time
}
How it works#

Phonon runs as two graphs. flow_lm is a causal transformer that is prompted with a voice and then the text, and emits one 32-dim latent per 80 ms frame, plus an end-of-speech logit. mimi_decoder turns latents into 1920 samples of 24 kHz audio each. Both graphs expose all their state (key/value caches, convolution context) as past* inputs and present* outputs; feed every output back under its past name on the next call.

The decoder takes any number of latents per call. The pipeline and generate_speech run the flow model to the end of a text chunk and then decode all of its latents in one call from an empty decoder state. The streaming snippet below decodes each latent as soon as it exists, so playback can start after the first 80 ms frame. Both give the same number of samples and the same audio up to rounding: above 120 dB SNR for fp32 and q4, and at least 45 dB for q4f16.

dtypeflow_lmmimi_decoderDownload
fp32flow_lm.onnxmimi_decoder.onnx (fp32)161 MB
q4flow_lm_q4.onnx (4-bit weights)mimi_decoder_q4.onnx (fp32)67 MB
q4f16flow_lm_q4f16.onnx (4-bit weights, fp16)mimi_decoder_q4f16.onnx (fp16)41 MB

Both graphs use the same dtype. The decoder's file suffix names the variant it belongs to, not its precision: the decoder is not 4-bit quantized in any variant, because 4-bit weights audibly degrade its audio. mimi_decoder_q4.onnx is a copy of the fp32 mimi_decoder.onnx, and mimi_decoder_q4f16.onnx (with mimi_decoder_q4f16.onnx_data) is the fp16 decoder. mimi_decoder_fp16.onnx is the same fp16 graph under its older name, kept so existing code keeps working.

All three run several times faster than real time in the browser. Seconds of compute per second of audio on an Apple M3 Max in Chrome, decoding per chunk (as the pipeline does) and per frame (as the streaming snippet does):

dtypeWebGPU, per chunkWebGPU, per frameWASM, per chunkWASM, per frame
fp320.070.110.080.10
q40.050.100.170.19
q4f160.050.090.200.23

Use q4f16 or q4 on WebGPU and fp32 on WASM (or q4 for a smaller download). WASM runs 4-bit matrix products slower than full precision for a model this size. On WebGPU, keep the state that is fed back into the graphs on the GPU, as the snippet below does (preferredOutputLocation); copying it to the CPU after every frame made WebGPU about three times slower. The figures were measured with this repository's runtime on the same graphs, not with the Transformers.js pipeline itself. fp32 output matches the reference Rust runtime (ptts) sample for sample (above 70 dB SNR at temperature 0). The quantized variants sample slightly different but equally intelligible speech: Whisper transcribed all of them identically to fp32 on a 12-sentence test set.

Streaming without the pipeline#

This snippet runs on Transformers.js 4.2.0 and yields audio frame by frame.

import { AutoConfig, AutoTokenizer, PreTrainedModel, Tensor } from "@huggingface/transformers";

const repo = "onnx-community/phonon-31m-en-ONNX";
const device = "webgpu"; // or "wasm"
const dtype = device === "webgpu" ? "q4f16" : "fp32"; // both graphs use the same one
const config = await AutoConfig.from_pretrained(repo);
const cfg = config.phonon;

// On WebGPU, keep every output that only goes back into a graph (caches, latent) on the GPU.
const onGpu = (names) => (device === "webgpu" ? { session_options: { preferredOutputLocation: Object.fromEntries(names.map((n) => [n, "gpu-buffer"])) } } : {});
const caches = ({ num_layers }) => Array.from({ length: num_layers }, (_, i) => [`present.${i}.key`, `present.${i}.value`]).flat();
const convStates = Object.keys(cfg.mimi_decoder.conv_states).map((name) => name.replace("past_", "present_"));
const tokenizer = await AutoTokenizer.from_pretrained(repo);
const flow = await PreTrainedModel.from_pretrained(repo, { config, model_file_name: "flow_lm", dtype, device, ...onGpu(["latent_out", ...caches(cfg.flow_lm)]) });
const mimi = await PreTrainedModel.from_pretrained(repo, { config, model_file_name: "mimi_decoder", dtype, device, ...onGpu([...caches(cfg.mimi_decoder), ...convStates]) });

// The tokenizer is Unigram with byte fallback, which Transformers.js does not apply
// yet: expand pieces missing from the vocabulary into their <0xXX> byte tokens.
const unigram = tokenizer._tokenizer.model;
if (!unigram.byte_fallback) {
  const encodePieces = unigram.encode.bind(unigram);
  unigram.encode = (tokens) => encodePieces(tokens).flatMap((piece) => {
    if (unigram.tokens_to_ids.has(piece)) return [piece];
    const bytes = Array.from(new TextEncoder().encode(piece), (b) => `<0x${b.toString(16).toUpperCase().padStart(2, "0")}>`);
    return bytes.every((b) => unigram.tokens_to_ids.has(b)) ? bytes : [piece];
  });
}

const f32 = (dims, data) => new Tensor("float32", data ?? new Float32Array(dims.reduce((a, b) => a * b, 1)), dims);
const i64 = (values, dims) => new Tensor("int64", BigInt64Array.from(values, BigInt), dims);
const emptyCache = ({ num_layers, num_heads, head_dim }) => Object.fromEntries(
  Array.from({ length: num_layers }, (_, i) => ["key", "value"].map((k) => [`past_key_values.${i}.${k}`, f32([1, num_heads, 0, head_dim])])).flat());
const nextState = (outputs) => Object.fromEntries(Object.entries(outputs)
  .filter(([name]) => name.startsWith("present"))
  .map(([name, value]) => [name.replace("present.", "past_key_values.").replace("present_", "past_"), value]));
// GPU tensors are not garbage collected: free each state once the next one replaces it.
const release = (...states) => states.forEach((state) => Object.values(state).forEach((t) => t.location === "gpu-buffer" && t.dispose()));

// A voice is raw little-endian float32 data in [1, 512, frames] order. voices/ has all of
// them (see "Available voices" below); voices/default.bin is the original model's default voice.
const voiceData = new Float32Array(await (await fetch(`https://huggingface.co/${repo}/resolve/main/voices/default.bin`)).arrayBuffer());
const voice = f32([1, cfg.voice_dim, voiceData.length / cfg.voice_dim], voiceData);

const runFlow = (past, { text = [], voiceLatents = f32([1, cfg.voice_dim, 0]), latent = f32([1, 0, cfg.latent_dim]), noise = f32([1, cfg.latent_dim]) }) =>
  flow({ text_ids: i64(text, [1, text.length]), voice_latents: voiceLatents, latent, noise, num_speakers: i64([1], [1]), duration_delta: f32([1]), ...past });

// Prompt the voice once; every sentence starts from this state.
const voiceState = nextState(await runFlow(emptyCache(cfg.flow_lm), { voiceLatents: voice }));

// Yields one Float32Array of 24 kHz audio per 80 ms frame. Keep each call to about one
// sentence (at most 50 tokens) and call it per sentence for longer text.
async function* speak(sentence, temperature = cfg.temperature) {
  let text = sentence.trim().replace(/\s+/g, " ");
  text = text[0].toUpperCase() + text.slice(1) + (/[\p{L}\p{N}]$/u.test(text) ? "." : "");
  const ids = tokenizer.encode(text, { add_special_tokens: false });
  let state = nextState(await runFlow(voiceState, { text: ids }));
  let codec = { past_offset: i64([0], [1]), ...emptyCache(cfg.mimi_decoder) };
  for (const [name, dims] of Object.entries(cfg.mimi_decoder.conv_states)) codec[name] = f32(dims);
  let latent = f32([1, 1, cfg.latent_dim], new Float32Array(cfg.latent_dim).fill(NaN)); // NaN = start
  const randn = () => Math.sqrt(-2 * Math.log(1 - Math.random())) * Math.cos(2 * Math.PI * Math.random());
  let countdown = null;
  try {
    for (let frame = 0; frame < Math.ceil((ids.length / 3 + 2) * cfg.frame_rate); frame++) {
      const noise = f32([1, cfg.latent_dim], Float32Array.from({ length: cfg.latent_dim }, () => randn() * Math.sqrt(temperature)));
      const step = await runFlow(state, { latent, noise });
      release(state, { latent });
      [state, latent] = [nextState(step), step.latent_out];
      const decoded = await mimi({ latent, ...codec });
      release(codec);
      codec = nextState(decoded);
      yield decoded.audio.data;
      // Stop a few frames after the end-of-speech logit crosses the threshold.
      if (countdown === null && step.eos_logit.data[0] > cfg.eos_threshold) countdown = text.split(" ").length <= 4 ? 3 : 1;
      if (countdown !== null && countdown-- === 0) break;
    }
  } finally {
    release(state, codec, { latent });
  }
}

const chunks = [];
for await (const pcm of speak("Hello from Phonon, running in Transformers.js.")) chunks.push(pcm); // or play each chunk as it arrives
const audio = new Float32Array(chunks.reduce((n, c) => n + c.length, 0));
chunks.reduce((offset, c) => (audio.set(c, offset), offset + c.length), 0);

Notes:

  • temperature (default 0.3) scales the sampling noise; 0 gives deterministic output.
  • Each call to speak resets the codec, so successive sentences join cleanly. The voice prompt is computed once and reused, not recomputed per sentence.
  • This model has no audio encoder, so it cannot clone a voice from a recording. It uses precomputed voice embeddings: the 102 voices listed under "Available voices" below.
  • The tokenizer prepares text the way the Python runtime does: it collapses whitespace, capitalizes the first letter, adds a final period, and folds typographic quotes, dashes and accented letters outside the model's alphabet. The Rust and Python runtimes also spell out currency, e-mail addresses and other symbols before tokenizing; this repo does not. Digits, times, percentages and phone numbers are read correctly without it, but €5.50 comes out in dollars and the @ of an address is skipped. Spell such symbols out ("5 euros 50", "at") for best results.
  • num_speakers (index into ["0", "1", "2"], default 1, the value the original runtime uses) and duration_delta (default 0.0) are the checkpoint's conditioning inputs.
  • Output is raw PCM. The Python processor's trailing-silence post-processing is not applied.
Export details#

The graphs were exported from gradium/phonon-31m-en at revision 52433c46975bfa13144c56204c9f4ee1c5b148aa, which config.json also records under phonon.source. All graphs have producer pytorch 2.13.0, IR version 8 and ONNX opset 18. The 4-bit flow graphs also import the com.microsoft opset (version 1) for MatMulNBits.

GraphPrecisionExternal data file
flow_lm.onnxfp32none
flow_lm_q4.onnx4-bit weights, fp32 activationsflow_lm_q4.onnx_data
flow_lm_q4f16.onnx4-bit weights, fp16flow_lm_q4f16.onnx_data
mimi_decoder.onnxfp32none
mimi_decoder_q4.onnxfp32 (copy of mimi_decoder.onnx)none
mimi_decoder_q4f16.onnxfp16mimi_decoder_q4f16.onnx_data
mimi_decoder_fp16.onnxfp16 (same graph, older name)mimi_decoder_fp16.onnx_data
Validation scope#
  • fp32 output was compared numerically with the reference Rust runtime (above 70 dB SNR at temperature 0). The quantized variants were checked by transcription, not sample for sample.
  • The speed figures above are from Chrome on an Apple M3 Max, using WASM and WebGPU. Other browsers, devices and WebNN have not been measured.
  • WebGPU fp16 needs the shader-f16 feature. Where it is missing, use fp32 or q4.

Available voices#

Each file in voices/ is one voice: raw little-endian float32 data in [1, 512, frames] order (here 125 frames, 256 000 bytes). Pass its URL or a Float32Array of it as the voice. voices/default.bin is the voice the original runtime uses by default.

All 102 voices of gradium/phonon-voices (Apache 2.0, revision 0ee17205), converted to the raw format above. The voice's language is the language it was designed in; this model always speaks English. Audio samples of every voice are on gradium/phonon-voices. voices/voices.jsonl lists the same voices with their metadata.

English (US)#
VoiceFileGenderAgeDescription
Zoeyvoices/NbpkqMVS3CJeq2j8.binfemaleAdultPlayful, upbeat and Gen Z energy voice with a standard American accent. Perfect for engaging conversations!
Junipervoices/NIWIOv5vTi5eRMj8.binfemaleYoung AdultCheerful presence with real resonance under it, personable when the copy turns intimate and decisive on the final line.
Everlyvoices/vjFyp2BcCyTlUmYb.binfemaleMiddle-ageRounded, soft-edged tone with gentle lift at the end of phrases and an easy, relaxed delivery.
Harpervoices/4SZHfMpw-p46Ywgs.binfemaleAdultModern, confident and friendly voice with a standard American accent.
Hadleyvoices/bXwrkHhURL1VFJdG.binfemaleMiddle-ageSettled, even-toned and genuinely kind, with crisp consonants that hold up over a handset.
Deliavoices/nGzMHMPAWGaJFHOo.binfemaleMiddle-ageLow, grounded and quick to the point, with a sincerity that keeps an apology honest.
Eastonvoices/LMDIYE0Oa377Qh6Z.binmaleYoung AdultPunchy and close in, with crisp consonant attack that cuts through a music bed and pitch that lifts across each line.
Micahvoices/40QrMVgAxFiUnP9f.binmaleYoung AdultBuoyant and high in energy, with a playful lift at the ends of phrases and clean attack that survives a loud mix.
Trevorvoices/0zLApsZfVLLNaEGl.binmaleMiddle-ageBuoyant energy over a resonant mid-low core, phrases landing softly and consonants cutting through a handset.
Russellvoices/_6Aslh2DxfmnRLmP.binmaleAdultA high-energy American adult voice that pushes and encourages with the intensity of someone who genuinely believes in you.
Prestonvoices/qIxlZ7Ei8KvWlyQH.binmaleMiddle-ageTrim, focused delivery with clean edges on every consonant and a steady, low-set core that carries through phone bandwidth.
Milesvoices/d9XCyhjo4JhkHF1d.binmaleYoung AdultResonant and decisive, with genuine dynamic range, dropping right down for one clause then driving back up.
English (UK)#
VoiceFileGenderAgeDescription
Maevevoices/6PWnV0Nq4wu7RVBT.binfemaleAdultA sparky, attentive British English adult voice that gets to the point with a smile. Ideal for fast, efficient customer support and helpful voice assistants.
Freyavoices/GgfEkEJtxZR7gnpy.binfemaleYoungA young British voice, glossy and confident with fast, girly chatter and bubbly sparkle, perfect for a friendly receptionist or assistant.
Pippavoices/uem82D50GRv2Dwma.binfemaleAdultA confident, upbeat British English adult voice with infectious energy. Perfect for proactive assistants and motivating customer success calls.
Elodie-Rosevoices/y9bQqIDnyxwqK01t.binfemaleYoungA young British voice with sharp, enthusiastic energy and crisp articulation, sparky and to the point for customer support and care.
Imogenvoices/gDT1nz7Ie36ZhL-C.binfemaleAdultA bubbly, friendly British English adult voice that puts callers instantly at ease. Great for onboarding assistants and warm concierge interactions.
Lottievoices/m9MxpY6IUGXtWp76.binfemaleYoung AdultSparky and to the point, high forward energy with clean edges on the consonants and the range to drop low for one line then climb back.
Alfievoices/X6NceqF285Gr04gb.binmaleYoung AdultPunchy and forward, with crisp consonant attack and a pitch that lifts across a line, sitting high over a music bed.
Hughvoices/YyKcxPG7iIgS3jsK.binmaleMiddle-ageSoft and close, airy in texture, with lively pitch movement and an attentive, sincere delivery.
Edwinvoices/zUCxzrOrugTSis03.binmaleMiddle-ageEfficient and firm, sincere in attention, with tidy articulation that holds up at phone bandwidth.
Spencervoices/JOW0vchyswkQUMDS.binmaleMiddle-ageLight and airy, sitting a touch higher, with crisp consonants and a slow, patient delivery.
Tobyvoices/dME3IWyZBvmh1n1q.binmaleAdultA sparky, attentive British English adult voice that gets to the point with a smile. Ideal for fast, efficient customer support and helpful voice assistants.
Teddyvoices/Zn7g6NxLqXlJb7Qi.binmaleYoung AdultSparky and close in, quick off the mark, with firm consonants and the range to drop right down for a clause then come back up.
Bryonyvoices/gfP44RlHwr2kEwk7.binfemaleMiddle-ageFull, rich mid-range tones, softly relaxed and spoken close to the mic, moving briskly with light pitch play.
English characters#
VoiceFileGenderAgeDescription
Captain Silas Blackwatervoices/xPDpsV3F592srkjA.binAn old British pirate captain from the West Country, around sixty. Deep, gravelly and booming, rolling his Rs, salt-cracked from decades of shouting over gales. Roguish and hearty, with a wicked chuckle under every boast.
Morwenna of the Deepvoices/nOykTmcH9ydsGGIc.binA sultry, seductive woman in her thirties. Low, husky alto, close to the microphone and almost whispered, slow and languid, purring, with a warm knowing smile in every word. Intimate, flirtatious and teasing, like a late-night torch singer luring someone closer, with a hint of danger underneath.
Old Mortlakevoices/lX3LavMNdlIbgEHH.binAn elderly gravedigger in a Victorian churchyard. Low, raspy and half whispered, melancholic, with heavy pauses that let every word settle like dirt on a coffin lid.
Azgorathvoices/dGyGDKo2osj7h3s7.binAn enormous ancient demon. A cavernous, impossibly deep bass voice that rumbles like stone grinding in a crypt, with a dry rasping edge and a faint hiss on every s. Calm, slow and amused, never shouting, every syllable set down deliberately, menace held under perfect control.
Fennick the Young Elfvoices/cXoIXJ2llS8S0WOW.binA curious, kind-hearted elf boy of about ten. A natural child's voice in a warm, soft middle range, never squeaky or shrill, earnest and wide-eyed, a little breathless with excitement, speaking quickly when amazed. Clean, close studio recording with no background noise or hiss.
The Thing Under the Stairsvoices/GXaSqMEmOg12OIYb.binA monstrous creature lurking in the dark. Gravelly, breathy and pitched near the floor, a threatening growl that stays quiet to stay frightening, with a slow mocking sneer.
Vyrmathrax the Ancientvoices/xO8xQo3BrB8FuI6J.binAn ancient dragon, thousands of years old. Very low and resonant, deep chest weight with gravel at the bottom of the register, slow and controlled with long pauses, dry and offhand, with the flat calm of something far too old to be impressed.
Grub the Ogrevoices/cYtsRSxV5q9IMehn.binA big, good-natured ogre who lives under a bridge. Gruff and grainy, rumbling low end, heavy chest resonance, slow lumbering rhythm with loose rounded words, and warm humour sitting just under the grumble.
Master Aldricvoices/gSgG5Tor0GPEnqzC.binA wise old British wizard, around eighty. Rich and resonant with an aged grain, warm and kindly, deliberate pace with weighted pauses before the words that matter, able to rise into a ringing incantation.
The Snow Queenvoices/NIWoEurJHMJjyUTe.binA regal, cold-hearted queen of ice. A cool, crystalline mezzo voice, poised and elegant, precise articulation, unhurried and quietly commanding, with an enigmatic chill and a faint smile that never warms.
Sir Bramwellvoices/y2eiKxtQo2B67deU.binA brave but pompous English knight, middle-aged. Booming, plummy and theatrical, full of puffed-up self-importance, rolling grand phrases, with a comic wobble of nerves showing through the bravado.
Fairy Godmothervoices/QXNr0SvkukLB4wPq.binA kind fairy godmother, an older woman in her sixties. A low, warm, velvety alto voice, cosy and grandmotherly, unhurried and soothing, with a soft rich chuckle and a twinkle in every word. Gentle and reassuring, never high, never thin.
French#
VoiceFileGenderAgeDescription
Noémievoices/FXxJ9mANRq6BCTX5.binfemaleYoungA young Parisian voice, warm and expressive with a quick playful pace and delicate high notes, a care specialist who stays bright and witty.
Coralievoices/ZeSg853xFACESHHI.binfemaleYoungA young Parisian voice, sweet and airy with fast, giggly girly charm, a bubbly assistant who makes every interaction feel light.
Tiphainevoices/0fvH6XAKvA748v2v.binfemaleMiddle-ageRounded, low-set tone with even phrasing and consonants that stay crisp through a handset.
Maëlysvoices/s048cR1l2Jmu4k3B.binfemaleYoungA young French voice, energetic and enthusiastic with a welcoming, upbeat delivery, sparky and to the point for responsive support.
Oriannevoices/TUk4X11S6UytB3G6.binfemaleMiddle-ageAiry and higher-set, gently buoyant, with sincerity that holds through an apology.
Solènevoices/YhIHaAfQ0cQPDV9R.binfemaleYoungA young French voice, bright and high-pitched, warm and enthusiastic at a lively pace, a receptionist who greets everyone with delight.
Augustinvoices/Tek4tJXiX6_yvXq7.binmaleAdultA curious, animated French adult voice that lights up when sharing an unexpected fact. Perfect for geeky explainers and trivia-driven dialogue.
Arnaudvoices/aXMVwiUhITMrwPzd.binmaleMiddle-ageLow and firm, quick to the point, consonants holding their shape at phone bandwidth.
Julesvoices/YKeBw3OV1RgpdhLh.binmaleAdultA lively, expressive French adult voice that lights up around topics it loves. Great for animated recommendations and high-energy dialogue.
Baptistevoices/rqqeErpASHVQXHDd.binmaleMiddle-ageLively and expressive, with pitch that lifts and dips across a phrase and a playful edge to every line.
Lucienvoices/LIv4NaG8ay4Mhqtd.binmaleMiddle-ageRounded and settled, phrases landing softly, with an apology that sounds genuinely meant and good news that sounds like good news.
Mariusvoices/biuhvu17TxVKOcyy.binmaleAdultAn energetic, well-poised French adult voice with the confident assurance of a natural closer. Ideal for sales pitches and high-conviction content.
Ninonvoices/qtPlUYAZ4EJDuWMm.binfemaleMiddle-agePitch that moves across a sentence, a rounded mid tone and a sense of humour kept well in check.
Lilouvoices/4iKxBtHBRzr1YOph.binfemaleYoungA young Parisian voice, buoyant and tender with rippling laughter, a light-hearted support voice that smiles while it helps.
Hélènevoices/Vvakv7iWZCUrBooR.binfemaleOlder AdultDeep and resonant, carrying authority through steadiness rather than volume, with diction that survives raised playback speed.
German#
VoiceFileGenderAgeDescription
Nelevoices/2A2fFf8SkDEJ8nzx.binfemaleMiddle-ageRounded, open tone with gentle lift at the ends of phrases and an easy, flowing rhythm.
Jettevoices/4Mn9VfG2wsLLEzi5.binfemaleYoungAn upbeat young German voice with a light girlish tone and warm bounce, a chipper assistant who keeps things moving with a smile.
Annikavoices/p6Uutkyi3j2iNAUu.binfemaleAdultA sparky, attentive German adult voice that gets to the point with a smile. Ideal for fast, efficient customer support and helpful voice assistants.
Julevoices/MxhgvuHuUER7qjmL.binfemaleYoung AdultOpen and cheerful, sitting high and close over music, with an airy lift that softens where the copy turns personal.
Lottavoices/MOrDPn052KUlnKXk.binfemaleYoung AdultHigh forward energy with a close, present tone and crisp consonant attack that cuts through a music bed, plus real lift on the punchline.
Josefinevoices/yadpmqsHVrYC0NJp.binfemaleMiddle-ageRounded and even in tone, sincere at the phrase ends, with consonants that hold up over a handset.
Antonvoices/3ZKKapPOvuWFcw9f.binmaleAdultA vibrant, engaging German adult voice that makes every explanation feel personal. Built for product guides and walk-through assistants.
Mirkovoices/Xn9xDzqSSr4xGTNg.binmaleYoung AdultPunchy and close-miked in feel, with hard edges on the consonants and a decisive drop on the final line.
Matsvoices/Kf5m22mROozoMWj3.binmaleAdultA sparky, attentive German adult voice that gets to the point with a smile. Ideal for fast, efficient customer support and helpful voice assistants.
Henrikvoices/yyS1KYWs6mXoEw7D.binmaleAdultAn easy-going, friendly German adult voice that puts callers instantly at ease. Great for onboarding assistants and warm concierge interactions.
Leonvoices/20zdyYrQPzKlCwkk.binmaleAdultA bright, welcoming German adult voice with the warmth of a great receptionist. Perfect for greeting customers and friendly front-line support.
Mikavoices/R3uU1GTAZJotUhUs.binmaleYoung AdultPunchy and to the point, with a firm, resonant core, clean word endings and real snap between loud and quiet.
Sveavoices/Adoh4wA9tp5QXJi9.binfemaleYoung AdultSparky and to the point, with clean consonant edges, brisk rhythm and a decisive drop on the final line.
Spanish (Spain)#
VoiceFileGenderAgeDescription
Noavoices/b6FvJAiokjdqIti4.binfemaleYoungA glossy, confident young Castilian Spanish voice with fast, girly charm and warmth, a bubbly assistant that makes every chat sparkle.
Lucía-Solvoices/3p0eIGbkmny71GlA.binfemaleYoungA bouncy, chipper young Castilian Spanish voice with a cute upward lilt, bringing playful energy to friendly reception and support.
Candelavoices/c9wqBDmQiBie5q6Y.binfemaleYoungAn enthusiastic, bubbly young Castilian Spanish voice, animated like a beauty guru mid-tutorial, adding fun energy to customer care.
Celiavoices/rmLBOdHrfkFym9MM.binfemaleYoung AdultSparky and forward, light on the air but firm on every consonant, landing the final line without pushing.
Albavoices/u2UscyAnHilpiwmf.binfemaleYoungA sweet, expressive young Castilian Spanish voice, soft and girly with lively emphasis, sparky and to the point for efficient support.
Aliciavoices/4701YgRXjkBcg6sL.binfemaleMiddle-ageRounded and softly resonant, settling low in the range, with phrases that land gently and an apology that sounds genuinely meant.
Marcosvoices/jvPx8j8zLGQ3utZz.binmaleAdultA confident, upbeat Peninsular Spanish adult voice with infectious energy. Perfect for proactive assistants and motivating customer success calls.
Borjavoices/tIjCgP8v3RY8UpgM.binmaleYoung AdultResonant and punchy, driving a rhythmic read that cuts over a loud music bed and lands squarely on the brand name.
Ikervoices/t-_TS1e-0GzDAX02.binmaleAdultAn easy-going, friendly Peninsular Spanish adult voice that puts callers instantly at ease. Great for onboarding assistants and warm concierge interactions.
Nunovoices/fghJGlv90qu8OJ36.binmaleMiddle-ageResonant and easy-going, with a relaxed mid-range delivery and a hint of playful lift at the end of phrases.
Izanvoices/Ejb29qHnSOK0cIHY.binmaleYoung AdultCrisp consonant attack, forward energy and a punchy delivery that sits on top of a music bed.
Guillermovoices/FaLVVqpFQcDOtq45.binmaleMiddle-ageLow and resonant, settled in tone, with phrases that land softly and an apology that sounds genuinely meant.
Nereavoices/EQcQFGkYfMn5YJgx.binfemaleMiddle-ageRounded, lightly resonant tone with gentle lift at the end of phrases and an even, relaxed delivery.
Spanish (Mexico)#
VoiceFileGenderAgeDescription
Rebecavoices/Sx8m6WdXBG06zwZT.binfemaleYoung AdultFuller and grounded in the low end, with hard consonant edges and a decisive punch saved for the brand name.
Reginavoices/s58clrg2fe0MO7Y-.binfemaleAdultA confident, upbeat Mexican Spanish adult voice with the natural assurance of a closer. Ideal for proactive assistants and sales-led customer interactions.
Danaevoices/evfxKSxpDIhmsNoq.binfemaleYoung AdultSparky and punchy, with a light, airy top end, clean attack on every word and a brisk rhythm that lands the brand name.
Azucenavoices/KJpIQlbYrZPA4aLq.binfemaleOlder AdultWeighted lower register with steady authority that comes from calm rather than volume, and diction that survives raised playback speed.
Jimenavoices/qG5BXOJYrKEnXLIX.binfemaleYoung AdultCrisp consonant attack and a forward, sparky delivery that sits over a music bed, with pitch that lifts and drops inside a single line.
Ximenavoices/VDwnGxAo68C8U8vC.binfemaleAdultA playful, expressive Mexican Spanish adult voice that turns everyday moments into stories. Great for engaging assistants and personable conversational AI.
Lalovoices/F05gqkzX7WhKVpSL.binmaleYoung AdultFuller and rounder low end, concise phrasing and a decisive drop on the last line, with range to pull back for one clause and push again.
Aldovoices/ax7dW1XB0eiMfHgO.binmaleYoung AdultForward, close-miked energy with crisp consonant attack and pitch that climbs and drops across a line.
Yaelvoices/ALczEazoF4n6PmGl.binmaleYoung AdultClose, ringing tone with a grin in it, dropping right down for one clause then climbing into the payoff.
Ulisesvoices/G5HLUsQd659UtRe7.binmaleMiddle-ageLow and resonant, with a settled delivery and consonants that survive a handset.
Leonelvoices/BkuASiOJRrJEB5qA.binmaleMiddle-ageVelvety and even tempered, sincere when an apology is due and genuinely pleased when the news is good.
Nicovoices/PwgPEaweQILZdGc4.binmaleYoung AdultSparky and to the point, with clean articulation that cuts through a loud music bed and a brisk rhythm that follows the copy's beats.
Portuguese (Brazil)#
VoiceFileGenderAgeDescription
Manuela-Luvoices/KgC2Nqnjj48NUiyV.binfemaleYoungA bright, sweet, chirpy young voice with breathless excitement and a constant smile, a warm receptionist who greets everyone like a friend.
Isadoravoices/CtNvKUUMrx1h56ih.binfemaleYoungAn upbeat young voice with a light girlish tone and warm bounce, quick and to the point, ideal for efficient, caring customer service.
Déboravoices/K8mj96kYHMy8q3Hb.binfemaleMiddle-ageLow-set and resonant, with firm even phrasing and short decisive sentences.
Rafaelavoices/6k6cRt7QJfm5ChrH.binfemaleYoungA spirited young voice with bell-like clarity and joyful bounce, narrating like the best sleepover ever, a light, fun personal assistant.
Claricevoices/sGCMzFIA53ppIngM.binfemaleOlder AdultQuiet authority in a deep, resonant lower range, even in dynamics and firm at the end of every sentence.
Fláviavoices/gOc90Rjmv5CobHCj.binfemaleMiddle-ageCompact, resonant timbre with crisp consonants and focused, forward phrasing.
Davivoices/NuUr_x5V90hSHzCJ.binmaleAdultA confident, upbeat Brazilian Portuguese adult voice with infectious energy. Perfect for proactive assistants and motivating customer success calls.
Igorvoices/l7520SIXi14iEamd.binmaleMiddle-ageLifted and lively, pitch moving across a phrase, articulation quick and tidy.
Kauãvoices/6HftnVU1XqVBJS8t.binmaleYoung AdultSparky and close, with clean attack, brisk rhythm and a decisive push on the final clause that cuts over a loud music bed.
Vitorvoices/mWgyMRkFED70QxQv.binmaleMiddle-ageLean and focused, with light pitch movement and a tidy rhythm that stays on point.
Otáviovoices/JYtmeaysoaR0Wybf.binmaleOlder AdultLow, chest-resonant and settled, with even dynamics and real pauses that hold a paragraph together.
Marcelovoices/qDeAnE4L4bk0BRz1.binmaleMiddle-ageLow and grounded, consonants firm, phrases short and sure of themselves.

Original model card#

phonon-31m English#

High-quality Text-to-Speech, on your device.

phonon-31m is a text-to-speech model from the Phonon family. It turns text into natural 24 kHz speech in English. It streams audio while it is still generating, and it is small enough to run in a browser tab, on a phone, or on a laptop CPU.

Phonon builds on Pocket TTS and the Mimi codec, developed by Kyutai.

Try it in your browser · All Phonon models · Runtime on GitHub · Python · Browser · Discord

Model details#

  • Model type: text-to-speech. A flow-matching transformer predicts audio latents from the text one 80 ms frame at a time, and the Mimi codec's decoder turns them into audio.
  • Parameters: 31M (excluding the audio tokenizer)
  • Weights file: model.q8.gguf, 64.5 MB (8-bit quantized)
  • Languages: English
  • Output: mono, 24 kHz
  • License: Apache 2.0

The Phonon family#

ModelParametersq8 weightsLanguagesLicense
phonon-31m-en31m64.5 MBEnglishApache 2.0
phonon-40m-en40m74.6 MBEnglishCC BY-NC 4.0
phonon-40m-fr40m74.6 MBFrenchCC BY-NC 4.0
phonon-40m-de40m74.6 MBGermanCC BY-NC 4.0
phonon-40m-es40m74.6 MBSpanishCC BY-NC 4.0
phonon-40m-pt40m74.6 MBPortugueseCC BY-NC 4.0
phonon-40m-multilingual40m74.6 MBAll 5 languagesCC BY-NC 4.0

All of them run on the same runtime and use the same file layout, so switching models means changing the repo ID.

Quickstart#

Every runtime names this model as hf://gradium/phonon-31m-en, and takes lang, which selects how text is normalized (numbers, symbols, dates). This model speaks English, so use en.

Command line#
uvx ptts --lang en --quant q8 \
  --voice en_us_Easton "Hello from Phonon." -o speech.wav

uvx runs the Python package's command without installing it. The standalone ptts binary from GitHub Releases or Homebrew (brew install gradium-ai/tap/ptts) takes the same flags.

Python#
pip install ptts
import ptts

tts = ptts.TTS("hf://gradium/phonon-31m-en", lang="en", quant="q8")
tts.save("speech.wav", "Hello from Phonon.", voice="en_us_Easton")

# Or stream: chunks arrive while the rest is still being generated.
with tts.stream("Speech can start playing right away.", voice="en_us_Easton") as audio:
    for pcm in audio:
        ...  # float32 chunks at audio.sample_rate
Other platforms#
PlatformGuide
Python scripts and backendsptts on PyPI · Python guide
Web apps, in the browserphonon-tts on npm · Browser guide
iPhone, iPad and Mac apps (Core ML)Swift guide
Android appsAndroid guide · Snapdragon NPU preview
Android system voice, for TalkBack and every app that uses TextToSpeechAndroid TTS engine
Server with an OpenAI-compatible API (Docker)Server guide
Home AssistantHome Assistant setup
Streaming over WebSocketWebSocket server
Rustptts on crates.io · Rust guide
C and C++ptts.h

Voices#

Phonon comes with a catalog of ~100 voices available in the gradium/phonon-voices repo. Instant voice cloning and voice design are available through the Gradium studio.

Benchmarks#

Phonon was compared with other open text-to-speech models on three measures, per language:

  • Elo: human preference from blind pairwise listening tests (higher is better).
  • Hard set LLM WER: word error rate on hard sentences full of structured data (numbers, dates, codes, units), scored with an LLM-assisted ASR comparison (lower is better).
  • Seed-TTS LLM WER: the same metric on the Seed-TTS evaluation sentences (lower is better).

In every language, a Phonon model is first on all three measures.

English (US) (Elo from 468 raters, 8,290 votes)

ModelEloHard set LLM WERSeed-TTS LLM WER
phonon-31m-en20981.5%0.51%
phonon-40m-en21172.3%0.45%
phonon-40m-multilingual20972.0%0.48%
Kokoro20433.5%0.45%
Magpie193928%0.46%
NeuTTS20348.7%0.62%

French (Elo from 172 raters, 2,270 votes)

ModelEloHard set LLM WERSeed-TTS LLM WER
phonon-40m-fr20722.4%1.3%
phonon-40m-multilingual20162.7%1.5%
Kokoro15785.5%1.8%
Magpie160830%2.0%
NeuTTS18539.9%2.7%

German (Elo from 168 raters, 2,220 votes)

ModelEloHard set LLM WERSeed-TTS LLM WER
phonon-40m-de20972.2%0.83%
phonon-40m-multilingual20462.9%0.90%
Magpie164029%1.6%
NeuTTS17689.3%2.6%

Spanish (Spain) (Elo from 201 raters, 2,290 votes)

ModelEloHard set LLM WERSeed-TTS LLM WER
phonon-40m-es21032.1%0.85%
phonon-40m-multilingual20762.6%1.0%
Kokoro16293.8%0.93%
Magpie187025%0.92%
NeuTTS177816%5.1%

Portuguese (Brazil) (Elo from 171 raters, 2,000 votes)

ModelEloHard set LLM WERSeed-TTS LLM WER
phonon-40m-pt21442.9%1.1%
phonon-40m-multilingual20483.2%1.1%
Kokoro16334.1%1.3%

Intended use#

Phonon is made for applications that speak on the user's device: offline and private assistants, screen readers and other accessibility tools, games, and interactive apps that cannot wait for a cloud round trip. It also runs as a local server with an OpenAI-compatible API and as a voice for Home Assistant.

Limitations#
  • The model speaks only the languages above. Text in other languages is read with the wrong pronunciation.
  • Text is normalized before synthesis (numbers, currency, dates, emails and so on), and that step needs the right language. Choose lang to match the text.
  • Very long inputs are split into sentences and spoken one after the other, so prosody does not carry across the whole text.
Responsible use#

Do not use Phonon to impersonate a real person, to deceive listeners about who is speaking, or to clone a voice without the speaker's consent. Tell listeners when speech is synthetic where that matters to them.

License#

The weights, tokenizer and voices in this repository are released under Apache 2.0, which allows commercial use. The runtime is a separate project, licensed MIT OR Apache-2.0.

Files

152 files · 669 MBWeights 11.3 MB (smallest of 20 ONNX variants). Sizes and sha256 from the signed manifest.
Show all 152 files with their sha256
FileSizesha256
.gitattributes2.95 KBc9757c061467cef3c2bba87337587a136d47990880b5ae18cb69e7edc0cbccb6
README.md43.9 KBa0c332f8b76647b6581c71d8856a4f35f59d74dc881ab56e6aa4596ea53e05ec
config.json5.43 KB955e91c9ce60c6d98254b558b412b3d1e989e9998941ce6274868296dfd8fcd5
generation_config.json144 Bd8fe14f837757d0a947db545cce6d6f0d6dd3c50f4259f32ff1a303fdf0e58ad
onnx/mimi_decoder.onnx33.5 KB3a33403772d285ac77279b61902e836c1ef031568548f83831f04da889a457f8
onnx/mimi_decoder.onnx_data43.7 MB35c735bfde62100182ee84747135515612c960f9b54e74233d44a9b509e4128e
onnx/mimi_decoder_bnb4.onnx36.1 KBbbd196d241a7a1720b5b55daf1b6572febb2edc3054430b92d8d8ed27f47c388
onnx/mimi_decoder_bnb4.onnx_data22.0 MB4c6113a524f09a9fae4aeafe39ba4b685efa2cbbe30b3a63acc09a93513b5dec
onnx/mimi_decoder_fp16.onnx33.2 KB69c67f52723080f913c7ec9cb1dc77d8d99f762d882da4cd9e9b9be2fea79fdf
onnx/mimi_decoder_fp16.onnx_data21.8 MB9bec29824bab84ff7a5a643819460d822803369caf6a65d1d537a33ea7d91dcb
onnx/mimi_decoder_int8.onnx90.4 KB3594e7fce7b57d561b7e81816e2eb2b7fe7b3561cafcf58678f713065d1981b6
onnx/mimi_decoder_int8.onnx_data24.8 MB89a98f731f14acf6d17874dfdf706f90cfa5d44279e7249986aeb643147831e5
onnx/mimi_decoder_q2.onnx36.2 KBd3ff00d05613e3814cdcac3191378f3b2655bd03f01ae336854db91853b2407f
onnx/mimi_decoder_q2.onnx_data20.9 MB06b5bb3ae53a0ed939b889b7f37a3c98910d06889b0c203539c9aeeadbfbd6f9
onnx/mimi_decoder_q2f16.onnx35.8 KBfe0b1dcc408d9c34bcbfbfb0a0192e11520580e945bcd015494b2b12173c0952
onnx/mimi_decoder_q2f16.onnx_data11.2 MB40ae8466040edfe98e63a1b7508a4539df6be0d1e0f747719809f6c16417fe09
onnx/mimi_decoder_q4.onnx37.9 KB26e34eba9a43fbf1427beb0b3647a2004e8ee98de192cfd5ffde4e7bc8b70ca2
onnx/mimi_decoder_q4.onnx_data22.5 MB66dda5c5521d5ff8e50124406113ad9edfdc4c744ef0d491fe22d2b0d07a8b84
onnx/mimi_decoder_q4f16.onnx37.6 KB6dfef770c4972241d949ff5d554f4eb56fa1923484bd54cd976e53c26e01b16a
onnx/mimi_decoder_q4f16.onnx_data12.9 MBc137432c0ace4cad67a034b343a099550a962768c6eda597eef1d962d193711e
onnx/mimi_decoder_quantized.onnx90.6 KBf6e3d543d7f0e8bc9561dbba2752737e0c33b3bc0cdd28122c97ead51595ae6f
onnx/mimi_decoder_quantized.onnx_data24.8 MB89a98f731f14acf6d17874dfdf706f90cfa5d44279e7249986aeb643147831e5
onnx/mimi_decoder_uint8.onnx94.9 KBd2763c27f6a5b3d33d87c48dec4daafdcfa4dace7ec55a7865af3493884fb40a
onnx/mimi_decoder_uint8.onnx_data24.8 MB690f937965201a4e5bec2c273c43e65dc2c5531004957f3a3d29016e993e91e7
onnx/model.onnx225 KB4374b2f3bf69f2dcc0bcecfc91742f46d3b0934c9c4fa2f52126d02fb2de6c94
onnx/model.onnx_data122 MB404bd74fa953816404a5be303f3362bf7afebd4f9b752b4e5c80f86589a50138
onnx/model_bnb4.onnx275 KB6e66a6976948ab1ab85f155e00a65468fe0f54b785aede019cf536c9e0391726
onnx/model_bnb4.onnx_data26.1 MB3a666bfc97d4575a1b5f366bae962ddce674ce71e76ca421edef9b5174a25e0f
onnx/model_fp16.onnx228 KB9b0c22adbf3d94f90cb27e9f823d5f177001af5cf557dab45e038ba33f298bff
onnx/model_fp16.onnx_data60.9 MB3ed687fa6a2edde9ba992ae4b1f162191c612979e63272d2ed1519a894c5c04b
onnx/model_int8.onnx771 KB58b6cdf0b79a10ad426d960258ef8017083f2eaa0a430985bdf0297070566d66
onnx/model_int8.onnx_data38.3 MB35582f56a6e78e49e03bd21f5adc5581a0ea9b111caf5f691ae3e5d3618cf91b
onnx/model_q2.onnx279 KBbc39203c7e60c290e16e081ada05cd7fcf0157b09aaa31e0dfc0e858b1de9049
onnx/model_q2.onnx_data20.9 MB51ee151f2ed7b8593b7a33423766da088eebbab9adc5221bd81b2230efb110df
onnx/model_q2f16.onnx281 KBbea4dd1b45670714311e99b3630184a73e274e9be515d703056b58bb452a8c3f
onnx/model_q2f16.onnx_data13.9 MB298344b585277f1250767e80895726b2b202280235c2653af82eaeb3a978ccea
onnx/model_q4.onnx284 KBdc2f4885ca6c148368effc74dd7e7bc593c780731867f0f43ce5a3dc26fe42b5
onnx/model_q4.onnx_data28.4 MB1b253aa56a8961cd8ffb96d5f3239af3bfebc19b8f9112de16ff2dedc6474a4c
onnx/model_q4f16.onnx286 KBb101fccdfd131f629f3796aaa52a07ad3d5b1edcf3973cf03b2738a32947ea43
onnx/model_q4f16.onnx_data21.4 MB4e1069010c9344554811070056682eb11c190b53cb62119eb9b58e12e3312f82
onnx/model_quantized.onnx772 KB4991864bd97424593ca4d1916de03e83f446531aeabd0bc5f0a3b76c67eb463d
onnx/model_quantized.onnx_data38.3 MB35582f56a6e78e49e03bd21f5adc5581a0ea9b111caf5f691ae3e5d3618cf91b
onnx/model_uint8.onnx794 KBe31c69eca7711450d61e4e85c3a93f91056e46150e0d7e89199f5e8dd859e6bc
onnx/model_uint8.onnx_data38.3 MB4210105355b81eeb7b6854fbb2713cd2387b5d339814b59ec9f5e7b2c47dd429
preprocessor_config.json600 Bdd2f303cf9cfa7b243cadc09c156097f95cabfec6bf3c72937ca28ad176e0626
processor_config.json747 B1ba08d75f0aba95fb494e8264e65e6b3e6b0b50981e1d49f183cb70eed58cfee
tokenizer.json170 KBbb2fb782d5a88704e224b6cb23663b44e60a29dc7c15fde71a2991a3efd0bdf0
tokenizer_config.json1.71 KB59536927c187437a8dbf19413c7c11212f594f35d194dee3758d8583074d7045
voices/0fvH6XAKvA748v2v.bin256 KB200f04771ddef4e592444c728ceda3a7394b42ef8c7084016a468c3e4d9c16f2
voices/0zLApsZfVLLNaEGl.bin256 KBfc996d45cca76d38aa33f9cbedf5ac9c70bd692029287c8d4c49bc2a06b90206
voices/20zdyYrQPzKlCwkk.bin256 KB5a91615d23150f9cad8eebc347846e4c88bb954fc8b5cf0eeed5be40136379a3
voices/2A2fFf8SkDEJ8nzx.bin256 KB3c8e72ee59cde8d0d134fa3ae59637f479847f08477e0d4946ca9cfdf18451d6
voices/3ZKKapPOvuWFcw9f.bin256 KB0a559071e40abe4e9c792120799681d258fa34148539b73eca4ae6fccf0bc4b8
voices/3p0eIGbkmny71GlA.bin256 KBfb59420a37640887d270af1c940906a2edc9b97cc4070b70845c290686b5db6f
voices/40QrMVgAxFiUnP9f.bin256 KB186b193668d0e53f7570d24aa0f68609b6111208740eede15c15d52861c0457a
voices/4701YgRXjkBcg6sL.bin256 KB6bcc1f559426c812d02ccadf2c7004f18a00297bbfe0923c4a91c34c690597cb
voices/4Mn9VfG2wsLLEzi5.bin256 KB9703881a3826d3f9da3c5fa90d6d97f7d22309929b5bd52d2af325cb4f8e1c61
voices/4SZHfMpw-p46Ywgs.bin256 KB331b969dbe31746edfdff9937fa8c27029d21c1fb3f41a6aa3dee6def0d17ce2
voices/4iKxBtHBRzr1YOph.bin256 KB426993c6e236c6ae0121e4cca7da9183a7434f841b8c9960dd9523ea52846568
voices/6HftnVU1XqVBJS8t.bin256 KB28ad260529e7c5982f69afba0c40ecd9c7d7d3af24496dd78573b90c500a5ff0
voices/6PWnV0Nq4wu7RVBT.bin256 KBf00756d86bcd873c0ab3c240a52a7470ac7f02e8cb12718e86d7563ecd9fa932
voices/6k6cRt7QJfm5ChrH.bin256 KBcc4c5ac7e05d44d3e06f3d62ed3872f5dfcee799ff2b9e065c48760524703d5c
voices/ALczEazoF4n6PmGl.bin256 KBf61c52133a721aefc7bbeeae13f9c9855a0e9758fb98c2b51207ab357f48ddb9
voices/Adoh4wA9tp5QXJi9.bin256 KBc65357d4c36661b232e95679cb8dca120499d120be4e4ff69b052428345d0a75
voices/BkuASiOJRrJEB5qA.bin256 KB5c61e89284b35535df144f9b799bed60c45583a023c10c08385bdccaaa31cce0
voices/CtNvKUUMrx1h56ih.bin256 KBf862ea0c080b0a4b69f1a261e8a1d0ce9104d8040ed1f7879bf1c8eddee9ad77
voices/EQcQFGkYfMn5YJgx.bin256 KBa74fa6fb648d9bfe07e41bf2cade131825ad07c9690b8e933311150bd50e96bf
voices/Ejb29qHnSOK0cIHY.bin256 KBcd7bc0489947635087bdc43e3d4b548a151b648e06ccc954fcd167053e9db0cb
voices/F05gqkzX7WhKVpSL.bin256 KBe355d6eff2c4fc55045774e6089093b3820081b12f1011e83a4e534611ac1dc0
voices/FXxJ9mANRq6BCTX5.bin256 KB8078abe34bd7aac3239661a398d3ec0544e8d5f2c7d59cd0dcfcdbef1c39f860
voices/FaLVVqpFQcDOtq45.bin256 KBc76378bc3009951aec6224ed1164403e9f20b402f7e41f0c927215df6d94e0cb
voices/G5HLUsQd659UtRe7.bin256 KB29d4ea3186e72c03a50a5a1a80e093244993972fa273cc9ce1f9b6fef1949887
voices/GXaSqMEmOg12OIYb.bin256 KBdec73768fcc4d11c6d41b4abe59eb297e0c033c9b7a039ae26729e049a069387
voices/GgfEkEJtxZR7gnpy.bin256 KBad1c36dc0e9a601ee13c75a418314263b7555ab44ee4428490c27c36d9b0ffa6
voices/JOW0vchyswkQUMDS.bin256 KB40de871900a04e3ba8ca5c4cb2cbff899d2c1f0e763584758fb775f0a641c99d
voices/JYtmeaysoaR0Wybf.bin256 KBc9ffd8e13fa516c560355468925743fbfde41f2a653c9c548046f38a8d98abb9
voices/K8mj96kYHMy8q3Hb.bin256 KB73acec4a6d54deb110bbfea5a3ae8234d05923abb6e41946fd677ea5e64cce12
voices/KJpIQlbYrZPA4aLq.bin256 KBd08b2f4196ba8b4aee8fbb1ee4832411ea268fb298283d97166a857e31024f9f
voices/Kf5m22mROozoMWj3.bin256 KB502fa8d1181769ca7f9ef9195849b1712c95f1ad28915ddbbafb67354a057128
voices/KgC2Nqnjj48NUiyV.bin256 KBbec195995bd2b419db9bef1909b940047e7805c465a765ae34e8ea953216f4ee
voices/LIv4NaG8ay4Mhqtd.bin256 KBb693ac8cb76f26e8825b9589947f007192bba12388124a1b44016aa818daa328
voices/LMDIYE0Oa377Qh6Z.bin256 KB6467e69cb22525b9a2784f661a543c0b018cba655ccc30be2e153ed2ac0f30ef
voices/MOrDPn052KUlnKXk.bin256 KBba79370b6a21f3281939ca07f165e81a92c70332f3f9fc24486b50748f2c8a2e
voices/MxhgvuHuUER7qjmL.bin256 KBe0de80c2f89e55597ecb8c122f05d9a85464e92231488df41b292dfe3a201a96
voices/NIWIOv5vTi5eRMj8.bin256 KB762de2a472be583d3e358ad1c1e3fca0e16e7d0be7c96c70ff5116ce7437e633
voices/NIWoEurJHMJjyUTe.bin256 KB9a1eab420fa3bc69962fe9db70a256eeb0ebad7f37a90acb6eb001e106227038
voices/NbpkqMVS3CJeq2j8.bin256 KB2023c0fddede488a609b911803345ebc333b406fbfb39d3444fae5c7459000db
voices/NuUr_x5V90hSHzCJ.bin256 KBf5a321893b81416ffcbda8ea819fb06ba520548d2553f3b9eb32cf1dae091585
voices/PwgPEaweQILZdGc4.bin256 KBe0e61817ed8ea192573978ef25d2127e34c1cb8ca0e398d1bbe6a72f2177ec08
voices/QXNr0SvkukLB4wPq.bin256 KB216361b1ee1bf207a54d6f69e2ca7006856bef7f479ef3b76ea904a1069e9da8
voices/R3uU1GTAZJotUhUs.bin256 KB63b0963e52c6559a2ef058d9c714396151dbe8c440b85da5895552ea3c8cd2de
voices/Sx8m6WdXBG06zwZT.bin256 KB2db967c6a8c985ef41876f11bb6118aa48bda973d98af44c2b61f9aa5be741f0
voices/TUk4X11S6UytB3G6.bin256 KBbae1e2a47a1c4c536f6654ee397cd24f83b66e808ba4c6f35c88925eea45ad3a
voices/Tek4tJXiX6_yvXq7.bin256 KBf07554b2d4df7c477c8e6ae9bea9a403b31ae87e6634412acbf70ff6b589e2b9
voices/VDwnGxAo68C8U8vC.bin256 KBed6892d430241c948df2dbe47fc9cbd7bac5e310bab898785dc668ba61580107
voices/Vvakv7iWZCUrBooR.bin256 KB8a5638efbc25b166a34d84023c93ee366d7981dba75e0a8c5b6f6a8b8830e5bb
voices/X6NceqF285Gr04gb.bin256 KB58792454eab6b4f10235bec6f37c50794965ad60e24af349acaf784cdae3539b
voices/Xn9xDzqSSr4xGTNg.bin256 KBb3ac3c0d01b99823b5b4666abe78e9a4eef063e79a11befec3dc4e4b652ab4fb
voices/YKeBw3OV1RgpdhLh.bin256 KB790bea6084bbd21408d2b5092a033aa23575661555be3b82d6c538106c76f010
voices/YhIHaAfQ0cQPDV9R.bin256 KB9c65f1b494836930382cefcce90b9099d7f7a9ee134c3f75f69209ca8f773f34
voices/YyKcxPG7iIgS3jsK.bin256 KBf73e14157996adc0b4269acbe3d5b6d7d069e814452edd811686aaa913090af4
voices/ZeSg853xFACESHHI.bin256 KB602579b41804bbd863562d17360e5e208a68ac2cbf94bc8fb4b602f3cff20da5
voices/Zn7g6NxLqXlJb7Qi.bin256 KBb9e3ac95e09b85eea9bf92b79ac498bea93ab8c3c6e1402e14af5968bdcc0f14
voices/_6Aslh2DxfmnRLmP.bin256 KBc1d99829cddde28781e82aa81f020fb33a529b79c980406e0e03fb57f3dc1e08
voices/aXMVwiUhITMrwPzd.bin256 KB1dcb89b47c53dd25d0e991053e8bd88e56df69e3299b70b9924f07096739383f
voices/ax7dW1XB0eiMfHgO.bin256 KB0ca70807444171a9d2d710d3ec6231436425f1e6c260bcb0a99ab8fc50fa6f0e
voices/b6FvJAiokjdqIti4.bin256 KB45b80271c12fa6899c9b74f1ba28c118ae88f0d3c42730fb1e1f4c8d9b66d484
voices/bXwrkHhURL1VFJdG.bin256 KB6c0812d2a2da1659202b46b8e08c68708a6ba30cf684ffc05737a1e7eda01383
voices/biuhvu17TxVKOcyy.bin256 KBd20422ec65f145ba77ad90c1e3701ad4e89759c974a3385e4ac6a543c5430595
voices/c9wqBDmQiBie5q6Y.bin256 KB9f45cf23bc282bed3849b2ea40018650f0b6951a6192405e31f9efae49f0fb1f
voices/cXoIXJ2llS8S0WOW.bin256 KB1c29ad1330431a1e575abe8f8e4202e424219ec359a166743f69f2167d8ecb1f
voices/cYtsRSxV5q9IMehn.bin256 KB1b7bad4d3a81d7ad1dd3117166df6fd5a94a75db2f1e3431451bda3aaedef89b
voices/d9XCyhjo4JhkHF1d.bin256 KBab542932f553e16be04d530ea2cddf1fbfc655d13074343d416bb76efaee86ae
voices/dGyGDKo2osj7h3s7.bin256 KB500fcf0eac0af082f35da94cd5ddd52908ca1ec81f9e57ac3445fa864f0bea63
voices/dME3IWyZBvmh1n1q.bin256 KB235d93042993b414466b634d85a819525962f4eabd49f6b72bc04dcc452b493b
voices/default.bin256 KBd9291d795d2b3b3ca5aaf0d61c44b378918c840824e7c0bc41cfb63e5b0c560b
voices/evfxKSxpDIhmsNoq.bin256 KB0b2d93f27cbf2ce7de2145adf04284d5148bb5dad82cd51832c199c8371ad29f
voices/fghJGlv90qu8OJ36.bin256 KB8fe9bf03417b69fa21567af63aed0fd83e91e5b869d045fdf861ce00e4a08e2f
voices/gDT1nz7Ie36ZhL-C.bin256 KB3158772a170e412789815f86182f953c8b55abf1d657817b7d0c4fa80498a06c
voices/gOc90Rjmv5CobHCj.bin256 KB98ea72621e8ac2ce733a05e08140d8441f6bcf8f9b367778cb483f0b4f72171c
voices/gSgG5Tor0GPEnqzC.bin256 KB7d092280b59854b57ca6bd8775203dd9bd54b09983bcc9975cc4bdfb2488ded7
voices/gfP44RlHwr2kEwk7.bin256 KB03e842cf581b6ca3071706e8314c5536dc9b0b649aef602477100e6c22406bd2
voices/jvPx8j8zLGQ3utZz.bin256 KBd6e316c4471be691b896d0303fa3e76f869be9a1b16c2ee34ef97a5ea199f8b0
voices/l7520SIXi14iEamd.bin256 KBf662a1d650fd55815cc39247fa3d3b649288feb8ec4ef640cccfbcd24bc8abb7
voices/lX3LavMNdlIbgEHH.bin256 KB7a283d9b61198604ad9b63109b60286988dc89b4f5bf449a3dea673f7f98eff5
voices/m9MxpY6IUGXtWp76.bin256 KB4a5e5aa843c7f0435301924a168b02578a532b4bd9e174af8036738214383625
voices/mWgyMRkFED70QxQv.bin256 KBe15b2c60d386003e23730686a3966c9035f678bb6cf3994e4a194a271c7686fb
voices/nGzMHMPAWGaJFHOo.bin256 KBa5e6eadb0436a229373833fe0cb790d3317e04ab227d4c8fbd2e3e68411dd329
voices/nOykTmcH9ydsGGIc.bin256 KBa722d2c1add8deb449126e573cd07a09d5412df62fc171f71ec9121a46819323
voices/p6Uutkyi3j2iNAUu.bin256 KB7a3e18ab85c53da798548a5a47723b6e67e625685b16d0f4747fe376cd144d66
voices/qDeAnE4L4bk0BRz1.bin256 KBcc1ad68bf3d15717802ca8e7b44eaa553ee16421a42303fedf306190fc5fd602
voices/qG5BXOJYrKEnXLIX.bin256 KB9c3c99d048bbd5847569b11f76db9d57339b3f648ede7ee58c2177f245eec140
voices/qIxlZ7Ei8KvWlyQH.bin256 KB1b81d1228569972a7abeb81a854d34f18f37c1f6f7243a02b31c184308ebbae7
voices/qtPlUYAZ4EJDuWMm.bin256 KB07736f7ed2ca933d3112702a41e66c753fd16d03b0b6f61e1a7610e610c51b5c
voices/rmLBOdHrfkFym9MM.bin256 KB39083ea4d1c98b04ec0732e855ffa1c716ad23c2d0c22e619b5d0bd35304f6d0
voices/rqqeErpASHVQXHDd.bin256 KB224c681b2ecb40336733751fe5dff80c46c871a1a1f51b458d972291af13120c
voices/s048cR1l2Jmu4k3B.bin256 KBd180677b69a9b4e6033f9dba225715ae4034fcdf1c9a70b6670331e631a9f067
voices/s58clrg2fe0MO7Y-.bin256 KB09e1f105b308606197d179cc1819b5ec9abfd184c900e38fc633491f8afc75c3
voices/sGCMzFIA53ppIngM.bin256 KB29d818fdea06f22234212e3682715c282decdf79b75b3da33a81c890fdc9c2a8
voices/t-_TS1e-0GzDAX02.bin256 KBe824680ab0e40a8a2cd2e01fecb9d479d8e60fa810328fe44dbf36ebdabf132e
voices/tIjCgP8v3RY8UpgM.bin256 KBbb2a51068940a505ff1d93ec6a62aae7e94d49b464a4a9daa066e6628931f251
voices/u2UscyAnHilpiwmf.bin256 KBf8c3625cefa77fecf02847240f41d47632d780a07646ee4238989aa3eec5b1dd
voices/uem82D50GRv2Dwma.bin256 KBd6f8b84bd21462f3adf3b9a1b867ed01cfb57f7bc07ec000e7745d792f6be6d3
voices/vjFyp2BcCyTlUmYb.bin256 KBa2bbd50a8587c0236c0d84ed81e10d91bce89ff92bb6604f830c4dcc0fc294e2
voices/voices.jsonl32.6 KBdde51468b3be4de200133b568aa6998ac57c53fea06eab74e2c51fbf45fe04a0
voices/xO8xQo3BrB8FuI6J.bin256 KB83a6971ff65e789a539f06fe6e70b65a0376ceb89bfb4c5c45b5f776a2c47556
voices/xPDpsV3F592srkjA.bin256 KB912924e4e01b22611359e2410242a97b8144dc7b7303f848e7bfce766f720d01
voices/y2eiKxtQo2B67deU.bin256 KB1b2d2326e4d9de2bbcf9d15a7aa4f1959636c455c048f3d529482b14a9d4d5c8
voices/y9bQqIDnyxwqK01t.bin256 KB67398bd736ee16da7c4311f7810b5e4c31f7470780e36538f1a9ad5574f857ea
voices/yadpmqsHVrYC0NJp.bin256 KB6b02a05ed68852fed30377bb2434c7c1888d5226fa5a696f72149ac4e53c912d
voices/yyS1KYWs6mXoEw7D.bin256 KBc84bf376eb63cff1945b2071357bc3dc33cd6f58666d01532c53877685e14f12
voices/zUCxzrOrugTSis03.bin256 KB4c24cb5301e5a0412d4db3161f76b710f6674b25226c9ea6851c900873c7c0fb
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
f0f522a750 pinned now2026-11-15 04:57 UTC152 files · 669 MB

Use it

$ fw get onnx-community/phonon-31m-en-ONNX
# manifest sha256 d870568e3089… · 669 MB · 152 files
$ fw verify ./phonon-31m-en-ONNX onnx-community/phonon-31m-en-ONNX
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/onnx-community/phonon-31m-en-ONNX.json --dir ./phonon-31m-en-ONNX $ python3 fw.py verify ./phonon-31m-en-ONNX ./onnx-community__phonon-31m-en-ONNX.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download onnx-community/phonon-31m-en-ONNX --revision f0f522a750bf515227cb478abb97b2ffca7e6d8c --local-dir ./phonon-31m-en-ONNX

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
a0c332f8b76647b6581c71d8856a4f35f59d74dc881ab56e6aa4596ea53e05ec
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: onnx-community <huggingface.co/onnx-community>Newsgroups: alt.freeweights.speechSubject: phonon-31m-en-ONNXDate: 2026-11-15Commit: f0f522aSigned: 2DC28CC7B26A283B ✓
Upstream
onnx-community/phonon-31m-en-ONNX
Pinned commit
f0f522a750bf515227cb478abb97b2ffca7e6d8c
Manifest
phonon-31m-en-ONNX.json · .minisig
Manifest sha256
d870568e308942da78b2d21ea498e3ac0cc3ee2bb72398d741ed7fff67da5be3
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:57 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/onnx-community/phonon-31m-en-ONNX.json $ curl -O https://freeweights.allternit.com/manifests/onnx-community/phonon-31m-en-ONNX.json.minisig $ minisign -Vm phonon-31m-en-ONNX.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

gradium/phonon-31m-en · this model is a quantization of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download onnx-community/phonon-31m-en-ONNX
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. phonon-31m-en-ONNX.json. Provenance. Takedown history: none.
From: MIT <huggingface.co/MIT>Subject: ast-finetuned-audioset-10-10-0.4593
From: onnx-community <huggingface.co/onnx-community>Subject: ast-finetuned-audioset-10-10-0.4593-ONNX
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Preview-0.6b
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Realistic-Air
From: facebook <huggingface.co/facebook>Subject: audiobox-aesthetics
From: mlx-community <huggingface.co/mlx-community>Subject: chatterbox-4bit