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.