byte-llm-tts-v1

A byte-level Qwen3 causal LM (38.2M params) finetuned for bilingual text-to-speech (English + Urdu) using the Kanade audio codec.

The base LM was pretrained from scratch on plain text using a 264-token byte-level vocab (256 UTF-8 bytes + 8 specials). For TTS finetuning the vocab was extended to 13,080 tokens by adding: • 16 TTS control specials — <|start_of_speech|>, <|speech|>, <|start_of_text|>, language tags (<|en|>, <|ur|>), prosody tags, and 7 reserved slots for future use. No voice / accent tags — prosody is conveyed by the audio tokens themselves. • 12,800 audio-code tokens <|code_0|> .. <|code_12799|> — Kanade codec content-token indices.

The first 264 ids are byte-identical to the pretrain checkpoint, so all byte-level language knowledge is preserved when the embedding matrix is resized. New rows are initialised with the mean of the existing 264 rows plus small Gaussian noise.

Sequence format

<|start_of_speech|> [lang]
<|start_of_text|> text bytes <|end_of_text|>
<|speech|> audio_code_tokens <|end_of_speech|>

Loss

total_loss = 3.0 × audio_loss + 1.0 × text_loss

with an additional 2× local weight on the <|speech|> and <|end_of_speech|> boundary tokens (missing them = total sequence failure).

Usage

See byte_tokenizer.py, byte_finetune.py, and infer.py in this repo for the full pipeline.

Downloads last month
62
Safetensors
Model size
38.2M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support