Indic-Mio-LiteRT

LiteRT (.tflite) graph bundle of SPRINGLab/Indic-Mio (Qwen3-0.6B speech-token LM, Apache-2.0) with its Aratako/MioCodec-25Hz-24kHz codec (MIT), for CPU inference on Windows/Linux x86_64 through speech-core. Emotion is controlled with end-of-utterance suffix tags; voice cloning conditions on a 128-dim global speaker embedding extracted from reference audio.

LiteRT cannot express the autoregressive loop, so the bundle ships static graphs and the host owns the loop.

Graphs

File Inputs Outputs
indicmio-text-prefill.tflite (fp16) ids[1,64] i64 (right-pad with 151643), last_index scalar i64 logits[1,164480] f32, k/v[28,1,8,512,128] f32
indicmio-token-step.tflite (fp16) id[1,1], pos[1,1], write_index scalar, k/v in logits[1,164480], k/v out
indicmio-audio-decoder.tflite (fp32) codes[1,384] i64 (zero-pad), global[1,128] f32, valid_tokens scalar i64 STFT real[1,961,768], imag[1,961,768] f32
indicmio-ref-encoder.tflite (fp32) audio24k[1,240000] f32 (10 s bucket) global[1,128] f32

config.json carries the manifest (token offsets, stop ids, prompt template, bucket sizes); fidelity.json the parity results; the HF tokenizer files are included for host-side tokenization.

Host contract

  • Prompt: <|im_start|>user\n{text}<|im_end|>\n<|im_start|>assistant\n, right-padded to 64 tokens with 151643; pass the real last position as last_index. Emotion tags go at the end of the sentence: <happy> <sad> <angry> <disgust> <fear> <surprise>.
  • AR loop: sample from logits (upstream reference: temperature 0.9, top-p 0.9; suppress EOS until the first speech token), feed the sampled id back through token-step with pos = write_index = current length. Stop on 151645 or 151643. Speech codes are id - 151669 (12800 codes, 25 Hz, 960 samples/token at 24 kHz).
  • Decode: zero-pad the codes to 384, set valid_tokens to the real count (the graph masks attention and normalization statistics so padding cannot contaminate the result), then reconstruct audio from the spectrum frames: complex spec = real + i·imag, inverse rFFT per frame (n_fft 1920), Hann window, overlap-add at hop 480, divide by the (constant, precomputable) window envelope, trim (win-hop)/2 at both ends and keep valid_tokens*960 samples, guarding the final ~8 hops of the tail.
  • Cloning: crop/pad the reference to 10 s at 24 kHz and run the ref encoder (prefer cropping — zero-padding slightly dilutes the embedding); pass the result as global. Without a reference, pass zeros.

Parity (vs the upstream PyTorch stack)

Check Result
Prefill logits corr ~1.000000
Token-step logits corr (non-zero write index) ~1.000000
Decoder PCM corr vs exact-length upstream decode 0.998
Reference-encoder cosine 0.999
Hindi ASR roundtrip (keyword recovery, 4 cases) pass; emotion tags styled, never spoken

Licensing

The language model derives from SPRINGLab/Indic-Mio (Apache-2.0); the codec weights derive from Aratako/MioCodec-25Hz-24kHz (MIT) and its WavLM-base+ speaker path. This bundle preserves upstream weights (fp16/fp32) with no fine-tuning.

Links

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

Model tree for soniqo/Indic-Mio-LiteRT

Finetuned
(1)
this model