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
57
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