Silencio-2
Small English text-to-speech with emotions, sounds and voice cloning.
Silencio-2 turns English text into 24 kHz speech in any voice, from a few seconds of reference audio.
You direct it inside the text: put [sigh] where a sigh belongs and <whisper> where the delivery changes.
It runs about 20x faster than real time on four CPU threads of an Apple M4, and all weights fit in one 112 MB file.
tts.generate("What a long day. [sigh]")
tts.generate("<whisper> Keep your voice down.")
Silencio-2 is a fine-tune of Pocket TTS 18M by Kyutai, retrained on a
custom dataset to follow tags. It has its own inference package, silencio2, so pip install pocket-tts is not needed.
Tags
| Sounds, placed where they happen | Emotions, apply to the text after them |
|---|---|
[laugh] [sigh] [gasp] [cough] [clear_throat] |
<happy> <sad> <angry> <fear> <surprised> <whisper> |
An unknown tag raises an error instead of being read aloud.
Quickstart
pip install -r requirements.txt
Run this from a clone of the repo, or add the snapshot folder to sys.path:
from silencio2 import Silencio2TTS
tts = Silencio2TTS.from_pretrained() # or a local folder; add quantize=True for int8 on CPU
# A bundled voice
tts.save("hello.wav", "Hi, I'm Silencio.", voice="260")
# Sounds go right into the text
tts.save("sigh.wav", "What a long day. [sigh]")
# An emotion for the whole text, or several inside it: each holds until the next one
tts.save("happy.wav", "We did it, we actually won!", emotion="happy")
tts.save("mixed.wav", "<whisper> Keep your voice down. <angry> I said stop!")
# Any voice from a short clean clip
tts.save("clone.wav", "Hi! This is my voice.", voice="my_clip.wav")
# Streaming: float32 chunks at tts.sample_rate
for chunk in tts.stream("A longer text, played as it is generated."):
...
wav = tts.generate("The same line, the same take.", seed=7) # a 1-D float32 tensor
generate raises quiet takes to speech level, since a true whisper comes out about ten times quieter than speech.
Pass normalize=False to keep the raw level. stream does not change the level.
Bundled voices: 1320, 2094, 260, 3575, 5639, 6930, 7127, 7729 (tts.voices).
Samples
| Text | Audio |
|---|---|
Hi, I'm Silencio. |
hi.wav |
What a long day. [sigh] |
long_day_sigh.wav |
<whisper> Keep your voice down. |
whisper.wav |
Hi! This is my voice. (voice 7729) |
cloned_voice.wav |
[sigh] Finally... a voice that breathes. |
finally_sigh.wav |
Model details
- Model type: a flow-based language model that predicts latents of the Mimi codec from text and a voice prompt, one step per frame.
- Size: 27.9M parameters in
model.safetensors: 18.2M generate speech, and the rest is the Mimi encoder that voice cloning needs. - Audio: 24 kHz mono, streamed as it is generated.
- Language: English.
- Text: a sentencepiece tokenizer with 11 extra tokens, one per tag.
How it was made
We extended the Pocket TTS 18M tokenizer and text table with the tag tokens, then fine-tuned the model on a custom dataset with Kyutai's training code. A tag was removed from a fifth of the training texts, and the voice prompt of tagged clips was often a neutral take of the same voice, so that the tag, not the prompt, sets the delivery. A final distillation stage bakes classifier-free guidance into the weights, so inference needs one pass per frame.
Limitations
- The delivery changes from take to take: try a few seeds. The same tag can come out strong in one take and faint in another.
<whisper>is the least steady tag. It works best on short lines, and varies by voice.- Check important lines by ear.
- English only.
Responsible use
Clone a voice only with its owner's permission. Do not use Silencio-2 to impersonate people or to deceive. Say that speech is synthetic where listeners could take it for real.
Files
| File | What it is |
|---|---|
model.safetensors |
the weights |
tokenizer.model |
the tokenizer with the tag tokens |
config.yaml |
the model configuration |
silencio2/ |
the inference package; silencio2/core is adapted from Pocket TTS |
voices/ |
reference clips of the bundled voices |
samples/ |
the samples above |
NOTICE.md |
third-party notices |
License
The weights are released under CC-BY-4.0, the license of Pocket TTS. The code in silencio2/core is MIT. See NOTICE.md.
Citation
@misc{silencio22026,
title = {Silencio-2: Small English Text-to-Speech with Emotions, Sounds and Voice Cloning},
author = {{BlueRose Labs}},
year = {2026},
url = {https://huggingface.co/BlueRoseLabs/Silencio-2}
}
- Downloads last month
- 59
Model tree for BlueRoseLabs/Silencio-2
Base model
kyutai/pocket-tts