warble / README.md
briancconnelly's picture
Keep the card focused on the voices
25f9120 verified
|
Raw
History Blame Contribute Delete
3.29 kB
---
license: apache-2.0
language:
- en
pipeline_tag: text-to-speech
tags:
- text-to-speech
- tts
- voice
- on-device
- mlx
- apple-silicon
base_model: Audio8/Audio8-TTS-Preview-0.6b
---
# Warble 🐦
**Five warm, ready-to-use voices you can run anywhere β€” even on your phone. Free.**
Warble is a small gift from [ScrappyLabs](https://scrappylabs.ai). It's five named voices
living in one tiny model: just say which one you want and it talks β€” no reference clip, no
cloud, no account, no meter. It runs on a laptop in real time, and it runs on an
Apple-Silicon phone-class chip too.
## Credit where it's due
Warble is built **entirely** on [`Audio8/Audio8-TTS-Preview-0.6b`](https://huggingface.co/Audio8/Audio8-TTS-Preview-0.6b)
by the [Audio8](https://huggingface.co/Audio8) team (Apache-2.0). The clever part β€” a
capable 0.6B text-to-speech model β€” is **theirs**. All we did was train a few voices we
liked onto it and package it so it's easy to run. If you like Warble, go star their work
first; none of this exists without them.
## The voices
Pick a voice by putting its token at the front of your text. No reference audio needed.
| token | voice | character |
|---|---|---|
| `<\|speaker:1\|>` | **Silas** | deep, gravelled, movie-trailer weight |
| `<\|speaker:2\|>` | **Narrator** | even, warm, broadcast baritone |
| `<\|speaker:3\|>` | **Clara** | clear, professional, friendly |
| `<\|speaker:4\|>` | **Pip** | bright, light, quick |
| `<\|speaker:5\|>` | **Nova** | confident morning-radio energy |
Samples for each are in [`samples/`](./samples).
## Use it
```python
from transformers import AutoProcessor, AutoModel
import torch, soundfile as sf
model_id = "scrappylabsai/warble"
proc = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
model = AutoModel.from_pretrained(model_id, trust_remote_code=True, dtype=torch.bfloat16).to("cuda").eval()
text = "<|speaker:2|>Hi there. This is Warble, running right here on your own machine."
inputs = proc(text=[text], return_tensors="pt")
inputs = {k: (v.to("cuda") if hasattr(v, "to") else v) for k, v in inputs.items()}
wavs, lens, _ = model.generate_audio(**inputs, max_new_tokens=1024)
sf.write("out.wav", wavs[0][:int(lens[0])].float().cpu().numpy(), 44100)
```
**On a Mac / phone:** an [MLX 4-bit build](./mlx-4bit) is included β€” it runs on Apple Silicon,
including phone-class chips, in about the memory a couple of browser tabs use.
## Honest notes
- **Our voices are consent-first.** Silas, Narrator, Clara, Pip, and Nova were *designed* by
us from scratch β€” not cloned from any real person, not scraped from anyone. We can't make
that claim about the base model's own training data (that's Audio8's and undocumented), so
we won't β€” but the five voices we're handing you are entirely our own.
- The MLX 4-bit build trades a little voice-likeness for size; Silas and Clara soften the
most there. Use the full-precision model if you want them exactly right.
- It's a preview-generation base model, so expect the occasional rough edge.
## License
**Apache-2.0**, matching the base. Use it for anything, including commercial work. No strings.
---
*Made by [ScrappyLabs](https://scrappylabs.ai). We make things work, and better. This one's on the house.* πŸ› οΈ