Loading…
Loading…
wfloat-tts is a lightweight multi-speaker English VITS text-to-speech model with speaker, emotion, and intensity control. Includes samples.
This Hugging Face repo contains the model files. Wfloat also ships packages that distribute and run wfloat-tts locally on the user's device:
Missing the platform or framework you need? Please request it!
mad_scientist_woman surprisesid: 7emotion: surpriseintensity: 0.8fun_hero_woman joysid: 3emotion: joyintensity: 0.7strong_hero_man angersid: 4emotion: angerintensity: 0.8Find more examples in the samples folder.
The intended inference inputs are:
text: the utterance to synthesizesid: numeric speaker idemotion: emotion labelintensity: value from 0.0 to 1.0You do not need to pass raw control symbols. The Python helper converts emotion and intensity into the control tokens the model was trained on.
For running the model from Hugging Face. Official Python package: wfloat-python.
pip install -e .
pip install "piper-phonemize==1.3.0" -f https://k2-fsa.github.io/icefall/piper_phonemize
Runtime dependencies:
torchnumpysafetensorspiper-phonemizepiper-phonemize is installed separately because the current recommended wheels are hosted here:
from wfloat_tts import load_generator, write_wave
generator = load_generator(
checkpoint_path="model.safetensors",
config_path="config.json",
)
audio = generator.generate(
text="Hey there, how are you today?",
sid=11,
emotion="neutral",
intensity=0.5,
)
write_wave("out.wav", audio.samples, audio.sample_rate)
This model was trained to condition on:
The reference inference path processes a full utterance, appends one emotion token and one intensity token for the whole utterance, and runs synthesis over that full sequence.
Use numeric sid values:
| Speaker | SID |
|---|---|
skilled_hero_man |
0 |
skilled_hero_woman |
1 |
fun_hero_man |
2 |
fun_hero_woman |
3 |
strong_hero_man |
4 |
strong_hero_woman |
5 |
mad_scientist_man |
6 |
mad_scientist_woman |
7 |
clever_villain_man |
8 |
clever_villain_woman |
9 |
narrator_man |
10 |
narrator_woman |
11 |
wise_elder_man |
12 |
wise_elder_woman |
13 |
outgoing_anime_man |
14 |
outgoing_anime_woman |
15 |
scary_villain_man |
16 |
scary_villain_woman |
17 |
news_reporter_man |
18 |
news_reporter_woman |
19 |
Supported emotion labels:
neutraljoysadnessangerfearsurprisedismissiveconfusionintensity is clamped to the range [0.0, 1.0] and mapped to one of ten discrete intensity levels.
model.safetensors is the main inference artifact in this repo.config.json includes the token mapping needed by the processor.