Text-to-Speech
PyTorch
ONNX
Catalan
matcha-tts
acoustic modelling
speech
multispeaker
File size: 6,479 Bytes
4522849
e3c6df5
 
 
e69747c
 
e3c6df5
2913be0
e3c6df5
 
aa55120
 
3bbf249
4522849
e3c6df5
651d66f
e3c6df5
 
 
 
 
 
 
 
 
 
b9d9e1d
e3c6df5
 
 
 
2a49114
e3c6df5
651d66f
5c145f9
 
 
6a5a7ed
651d66f
d79d134
b780397
2a49114
e3c6df5
b9d9e1d
d79d134
 
b9d9e1d
 
d79d134
b9d9e1d
62c40e0
7705de4
 
 
5c145f9
 
 
 
 
 
 
7705de4
5c145f9
7705de4
5c145f9
651d66f
7705de4
 
 
 
 
 
 
 
 
 
 
 
 
e3c6df5
7930598
 
5c145f9
0fd399b
62c40e0
7930598
 
62c40e0
7930598
62c40e0
5c145f9
 
 
7930598
d927332
 
 
 
651d66f
 
d927332
e96083b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7930598
e96083b
7930598
 
 
d927332
fea5c8c
 
7705de4
d927332
 
c870205
 
 
d927332
2a49114
e3c6df5
 
 
1517df0
db09460
917b3c1
 
e43747c
f33f2e7
db09460
2a49114
e3c6df5
3e00824
 
 
 
917b3c1
 
 
5d63ecb
 
 
 
 
 
 
 
 
 
 
d8a4b8f
 
5d63ecb
e3c6df5
 
 
1b57147
d8a4b8f
 
 
 
e3c6df5
1b57147
 
6a5a7ed
 
 
 
 
 
 
 
 
 
 
 
 
 
e3c6df5
2a49114
e3c6df5
 
 
 
 
 
 
 
 
 
 
8d445aa
e3c6df5
 
88a3509
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
---
language:
- ca
tags:
- matcha-tts
- acoustic modelling
- speech
- multispeaker
pipeline_tag: text-to-speech
datasets:
- projecte-aina/festcat_trimmed_denoised
- projecte-aina/openslr-slr69-ca-trimmed-denoised
license: apache-2.0
---

# 🍵 Matxa-TTS Catalan Multispeaker

## Table of Contents
<details>
<summary>Click to expand</summary>

- [Model description](#model-description)
- [Intended uses and limitations](#intended-uses-and-limitations)
- [How to use](#how-to-use)
- [Training](#training)
- [Evaluation](#evaluation)
- [Citation](#citation)
- [Additional information](#additional-information)

</details>

## Model Description

🍵 **Matxa-TTS** is based on **Matcha-TTS** that is an encoder-decoder architecture designed for fast acoustic modelling in TTS. 
The encoder part is based on a text encoder and a phoneme duration prediction that together predict averaged acoustic features.
And the decoder has essentially a U-Net backbone inspired by [Grad-TTS](https://arxiv.org/pdf/2105.06337.pdf), which is based on the Transformer architecture. 
In the latter, by replacing 2D CNNs by 1D CNNs, a large reduction in memory consumption and fast synthesis is achieved.

**Matxa-TTS** is a non-autorregressive model trained with optimal-transport conditional flow matching (OT-CFM). 
This yields an ODE-based decoder capable of generating high output quality in fewer synthesis steps than models trained using score matching.

## Intended Uses and Limitations

This model is intended to serve as an acoustic feature generator for multispeaker text-to-speech systems for the Catalan language. 
It has been finetuned using a Catalan phonemizer, therefore if the model is used for other languages it may will not produce intelligible samples after mapping 
its output into a speech waveform. 

The quality of the samples can vary depending on the speaker. 
This may be due to the sensitivity of the model in learning specific frequencies and also due to the quality of samples for each speaker.

## How to Get Started with the Model

### Installation

This model has been trained using the espeak-ng open source text-to-speech software. 
The espeak-ng containing the Catalan phonemizer can be found [here](https://github.com/projecte-aina/espeak-ng)

Create a virtual environment:
```bash
python -m venv /path/to/venv
```
```bash
source /path/to/venv/bin/activate
```

For training and inferencing with Catalan Matxa-TTS you need to compile the provided espeak-ng with the Catalan phonemizer:
```bash
git clone https://github.com/projecte-aina/espeak-ng.git

export PYTHON=/path/to/env/<env_name>/bin/python
cd /path/to/espeak-ng
./autogen.sh
./configure --prefix=/path/to/espeak-ng
make
make install

pip cache purge
pip install mecab-python3
pip install unidic-lite
```
Clone the repository:

```bash
git clone -b dev-cat https://github.com/langtech-bsc/Matcha-TTS.git
cd Matcha-TTS

```
Install the package from source:
```bash
pip install -e .

```


### For Inference

#### PyTorch

Speech end-to-end inference can be done together with **Catalan Matxa-TTS**. 
Both models (Catalan Matxa-TTS and alVoCat) are loaded remotely from the HF hub.  

First, export the following environment variables to include the installed espeak-ng version:

```bash
export PYTHON=/path/to/your/venv/bin/python
export ESPEAK_DATA_PATH=/path/to/espeak-ng/espeak-ng-data
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/espeak-ng/lib
export PATH="/path/to/espeak-ng/bin:$PATH"

```
Then you can run the inference script:
```bash
cd Matcha-TTS
python3 matcha_vocos_inference.py --output_path=/output/path --text_input="Bon dia Manel, avui anem a la muntanya."

```
You can also modify the length scale (speech rate) and the temperature of the generated sample:
```bash
python3 matcha_vocos_inference.py --output_path=/output/path --text_input="Bon dia Manel, avui anem a la muntanya." --length_scale=0.8 --temperature=0.7

```

#### ONNX

We also release a ONNX version of the model

### For Training

The entire checkpoint is also released to continue training or finetuning. 
See the [repo instructions](https://github.com/langtech-bsc/Matcha-TTS/tree/dev-cat)


## Training Details

### Training data

The model was trained on 2 **Catalan** speech datasets

| Dataset             | Language | Hours   | Num. Speakers   |
|---------------------|----------|---------|-----------------|
| [Festcat](https://huggingface.co/datasets/projecte-aina/festcat_trimmed_denoised)             | ca       | 22      | 11              |
| [OpenSLR69](https://huggingface.co/datasets/projecte-aina/openslr-slr69-ca-trimmed-denoised)           | ca       | 5       | 36              |

### Training procedure

***Catalan Matcha-TTS*** was finetuned from the English multispeaker checkpoint, 
which was trained with the [VCTK dataset](https://huggingface.co/datasets/vctk) and provided by the model authors.

The embedding layer was initialized with the number of catalan speakers (47) and the original hyperparameters were kept.

### Training Hyperparameters

* batch size: 32 (x2 GPUs)
* learning rate: 1e-4
* number of speakers: 47
* n_fft: 1024
* n_feats: 80
* sample_rate: 22050
* hop_length: 256
* win_length: 1024
* f_min: 0
* f_max: 8000
* data_statistics:
  * mel_mean: -6578195
  * mel_std: 2.538758
* number of samples: 13340

## Evaluation

Validation values obtained from tensorboard from epoch 2399*: 

* val_dur_loss_epoch: 0.38
* val_prior_loss_epoch: 0.97
* val_diff_loss_epoch: 2.195

(Note that the finetuning started from epoch 1864, as previous ones were trained with VCTK dataset)

## Citation

If this code contributes to your research, please cite the work:

```
@misc{mehta2024matchatts,
      title={Matcha-TTS: A fast TTS architecture with conditional flow matching}, 
      author={Shivam Mehta and Ruibo Tu and Jonas Beskow and Éva Székely and Gustav Eje Henter},
      year={2024},
      eprint={2309.03199},
      archivePrefix={arXiv},
      primaryClass={eess.AS}
}
```

## Additional Information

### Author
The Language Technologies Unit from Barcelona Supercomputing Center.

### Contact
For further information, please send an email to <langtech@bsc.es>.

### Copyright
Copyright(c) 2023 by Language Technologies Unit, Barcelona Supercomputing Center.

### License
[Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)

### Funding
This work has been promoted and financed by the Generalitat de Catalunya through the [Aina project](https://projecteaina.cat/).