File size: 3,087 Bytes
b9c74dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3cf87cd
 
b9c74dd
 
 
 
 
 
 
 
 
 
 
 
 
98aa56d
b9c74dd
 
 
 
 
 
 
 
98aa56d
b9c74dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
---
license: mit
language:
  - lb
tags:
  - text-to-speech
  - tts
  - vits2
  - luxembourgish
pipeline_tag: text-to-speech
---

# VITS2 - Claude (Luxembourgish Gender-Neutral Voice)

A VITS2-based text-to-speech model for Luxembourgish, featuring a synthetic gender-neutral voice.

## Model Description

This model was trained using the VITS2 architecture on Luxembourgish speech data from the [Lëtzebuerger Online Dictionnaire (LOD)](https://lod.lu) example sentences.

"Claude" is a synthetic gender-neutral Luxembourgish voice created by modulating the original LOD recordings.

### Model Details

- **Architecture:** VITS2 with duration discriminator and transformer flows
- **Language:** Luxembourgish (lb)
- **Speaker:** Single speaker (gender-neutral, synthetic)
- **Sample Rate:** 24000 Hz
- **Checkpoint:** G_57000 (57,000 steps)
- **License:** MIT

## Usage

**Note:** Text should be lowercased before synthesis. Additional text normalization may be required.

This model requires the included Python source files for inference.

### Basic Usage

```python
import torch
import scipy.io.wavfile as wavfile
from vits2_engine import VITS2Engine

# Load the model
engine = VITS2Engine(model_dir="path/to/vits2-claude")

# Generate speech
wav = engine.tts("moien, wéi geet et dir?")

# Save to file
wavfile.write("output.wav", engine.sample_rate, wav)
```

### Command Line

```bash
python inference.py "moien, wéi geet et dir?"

# With custom parameters
python inference.py "Text" --noise_scale 0.5 --length_scale 1.1 -o output.wav
```

### Parameters

- `noise_scale`: Controls voice variation (default: 0.667, lower = more consistent)
- `noise_scale_w`: Controls duration variation (default: 0.8)
- `length_scale`: Controls speech speed (default: 1.0, higher = slower)

## Technical Specifications

| Parameter | Value |
|-----------|-------|
| Hidden Channels | 192 |
| Filter Channels | 768 |
| Attention Heads | 2 |
| Encoder Layers | 6 |
| Mel Channels | 80 |
| FFT Size | 1024 |
| Hop Length | 256 |

## Requirements

- Python 3.8+
- PyTorch
- scipy
- numpy
- Cython (for monotonic_align)

## Citation

If you use this model, please cite:

```bibtex
@misc{zls2025vits2claude,
  title={VITS2 Claude - Luxembourgish Gender-Neutral Voice},
  author={Zenter fir d'Lëtzebuerger Sprooch},
  year={2025},
  publisher={Hugging Face},
  url={https://huggingface.co/ZLSCompLing/VITS2-Claude}
}
```

## Acknowledgments

Developed by [Zenter fir d'Lëtzebuerger Sprooch](https://zls.lu).

Voice data sourced from the [Lëtzebuerger Online Dictionnaire (LOD)](https://lod.lu). The original audio files are available via the [LOD linguistic data on data.public.lu](https://data.public.lu/en/datasets/letzebuerger-online-dictionnaire-lod-linguistesch-daten/), which provides an XML file containing example sentence IDs. Audio files can be accessed at:

```
https://lod.lu/uploads/examples/AAC/{folder}/{id}.m4a
```

where `{folder}` is the first 2 characters of `{id}`.

This model is used in [Sproochmaschinn](https://sproochmaschinn.lu), a Luxembourgish speech processing platform.