File size: 3,242 Bytes
e5e1cf3 196afe1 e5e1cf3 f44811e e5e1cf3 89b06e5 da70c8c e5e1cf3 89b06e5 f44811e e5e1cf3 f44811e 97cc1c5 e5e1cf3 f44811e 2f4ee0c f44811e 97cc1c5 f44811e 89b06e5 f44811e 89b06e5 f44811e 89b06e5 da70c8c f44811e e5e1cf3 f44811e da70c8c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | ---
title: BlueTTS - Multilingual TTS
emoji: 🔊
colorFrom: blue
colorTo: indigo
sdk: gradio
sdk_version: 6.9.0
app_file: app.py
pinned: false
python_version: "3.12"
---
# BlueTTS — Multilingual text-to-speech
**This Space:** [https://huggingface.co/spaces/notmax123/Blue](https://huggingface.co/spaces/notmax123/Blue)
Interactive demo for **[BlueTTS](https://github.com/maxmelichov/BlueTTS)**: fast on-device synthesis with **ONNX Runtime**. Type text, pick a language and voice, and generate audio in the browser. Project site: [lightbluetts.com](https://lightbluetts.com/).
This Space was duplicated from [thewh1teagle/lightblue-tts-hebrew](https://huggingface.co/spaces/thewh1teagle/lightblue-tts-hebrew) and adapted for the current BlueTTS ONNX bundle.
## Languages
- **English, Spanish, German, Italian** — phonemization with **espeak-ng** (via phonemizer), aligned with the multilingual tokenizer in the app.
- **Hebrew** — grapheme-to-phoneme via [Renikud](https://huggingface.co/thewh1teagle/renikud) (ONNX).
## Voices
Two built-in speaker styles (pre-extracted style JSON):
| Voice | File |
| ------ | ----------------------- |
| Female | `voices/female1.json` |
| Male | `voices/male1.json` |
## Implementation note
This Space runs **inference from `app.py`** (vocabulary, phonemization, ONNX sessions). It does **not** install the upstream [`blue`](https://github.com/maxmelichov/BlueTTS) Python package from GitHub (that package name replaced the old `lightblue-onnx` wheel and would conflict with pip’s expected name in a flat `requirements.txt`).
## Model weights
ONNX checkpoints are **not** stored in this Space repo (file-size limits). On first startup, `download_models.py` fetches them from the public model repo **[notmax123/blue-onnx](https://huggingface.co/notmax123/blue-onnx)** into `./onnx_models/`.
**Training / finetuning / voice-export weights** (PyTorch / Safetensors): **[notmax123/blue](https://huggingface.co/notmax123/blue)**.
If you fork this Space and point downloads at a **private** repo, set a Hugging Face **write** token as the Space secret `HF_TOKEN` so authenticated downloads still work.
## Links
- **This demo (Space):** [huggingface.co/spaces/notmax123/Blue](https://huggingface.co/spaces/notmax123/Blue)
- **ONNX weights:** [notmax123/blue-onnx](https://huggingface.co/notmax123/blue-onnx)
- **PyTorch / training weights:** [notmax123/blue](https://huggingface.co/notmax123/blue)
- **Source code:** [maxmelichov/BlueTTS on GitHub](https://github.com/maxmelichov/BlueTTS)
- **Hebrew G2P:** [thewh1teagle/renikud](https://huggingface.co/thewh1teagle/renikud)
## Local development
Dependencies are listed in `requirements.txt`. With Python 3.12:
```bash
pip install -r requirements.txt
python download_models.py # once, to populate onnx_models/
python app.py # or: gradio will launch from app_file when run by HF
```
To refresh `requirements.txt` from **uv**:
```bash
uv export --no-hashes --no-emit-project > requirements.txt
```
## License
See the [BlueTTS](https://github.com/maxmelichov/BlueTTS) repository and the [blue-onnx](https://huggingface.co/notmax123/blue-onnx) model card for licensing of code and weights.
|