README.md 4.68 KB
Newer Older
Yoach Lacombe's avatar
Yoach Lacombe committed
1
# Parler-TTS
sanchit-gandhi's avatar
setup  
sanchit-gandhi committed
2

Yoach Lacombe's avatar
Yoach Lacombe committed
3
4
5
[[Paper we reproduce]](https://arxiv.org/abs/2402.01912)
[[Models]](https://huggingface.co/parler-tts)
[[Training Code]](training)
Yoach Lacombe's avatar
Yoach Lacombe committed
6
[[Interactive Demo]](https://huggingface.co/spaces/parler-tts/parler_tts_mini)
Yoach Lacombe's avatar
Yoach Lacombe committed
7
8

> [!IMPORTANT]
9
10
> We're proud to release Parler-TTS v0.1, our first 300M parameter model, trained on 10.5K hours of audio data.
> In the coming weeks, we'll be working on scaling up to 50k hours of data, in preparation for the v1 model.
Yoach Lacombe's avatar
Yoach Lacombe committed
11

12
Parler-TTS is a lightweight text-to-speech (TTS) model that can generate high-quality, natural sounding speech in the style of a given speaker (gender, pitch, speaking style, etc). It is a reproduction of work from the paper [Natural language guidance of high-fidelity text-to-speech with synthetic annotations](https://www.text-description-to-speech.com)
Yoach Lacombe's avatar
Yoach Lacombe committed
13
14
by Dan Lyth and Simon King, from Stability AI and Edinburgh University respectively. 

15
16
17
Contrarily to other TTS models, Parler-TTS is a **fully open-source** release. All of the datasets, pre-processing, training code and weights are released publicly under permissive license, enabling the community to build on our work and develop their own powerful TTS models.

This repository contains the inference and training code for Parler-TTS. It is designed to accompany the [Data-Speech](https://github.com/ylacombe/dataspeech) repository for dataset annotation.
Yoach Lacombe's avatar
Yoach Lacombe committed
18

Yoach Lacombe's avatar
Yoach Lacombe committed
19
## Usage
Yoach Lacombe's avatar
Yoach Lacombe committed
20
21

> [!TIP]
Yoach Lacombe's avatar
Yoach Lacombe committed
22
> You can directly try it out in an interactive demo [here](https://huggingface.co/spaces/parler-tts/parler_tts_mini)!
Yoach Lacombe's avatar
Yoach Lacombe committed
23
24
25
26
27

Using Parler-TTS is as simple as "bonjour". Simply use the following inference snippet.

```py
from parler_tts import ParlerTTSForConditionalGeneration
28
from transformers import AutoTokenizer
Yoach Lacombe's avatar
Yoach Lacombe committed
29
30
import soundfile as sf

Yoach Lacombe's avatar
Yoach Lacombe committed
31
32
model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler_tts_300M_v0.1")
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler_tts_300M_v0.1")
Yoach Lacombe's avatar
Yoach Lacombe committed
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

prompt = "Hey, how are you doing today?"
description = "A female speaker with a slightly low-pitched voice delivers her words quite expressively, in a very confined sounding environment with clear audio quality. She speaks very fast."

input_ids = tokenizer(description, return_tensors="pt").input_ids
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)
```


## Installation steps

Parler-TTS has light-weight dependencies and can be installed in one line:
```sh
pip install parler-tts
sanchit-gandhi's avatar
sanchit-gandhi committed
51
52
```

Yoach Lacombe's avatar
Yoach Lacombe committed
53
## Gradio demo
sanchit-gandhi's avatar
sanchit-gandhi committed
54

Yoach Lacombe's avatar
Yoach Lacombe committed
55
You can host your own Parler-TTS demo. First, install [`gradio`](https://www.gradio.app/) with:
sanchit-gandhi's avatar
sanchit-gandhi committed
56

Yoach Lacombe's avatar
Yoach Lacombe committed
57
58
59
```sh
pip install gradio
```
sanchit-gandhi's avatar
sanchit-gandhi committed
60

Yoach Lacombe's avatar
Yoach Lacombe committed
61
Then, run:
sanchit-gandhi's avatar
sanchit-gandhi committed
62

Yoach Lacombe's avatar
Yoach Lacombe committed
63
64
65
```python
python helpers/gradio_demo/app.py
```
sanchit-gandhi's avatar
sanchit-gandhi committed
66

Yoach Lacombe's avatar
Yoach Lacombe committed
67
## Acknowledgements
sanchit-gandhi's avatar
sanchit-gandhi committed
68

Yoach Lacombe's avatar
Yoach Lacombe committed
69
This library builds on top of a number of open-source giants, to whom we'd like to extend our warmest thanks for providing these tools!
sanchit-gandhi's avatar
sanchit-gandhi committed
70

Yoach Lacombe's avatar
Yoach Lacombe committed
71
72
Special thanks to:
- Dan Lyth and Simon King, from Stability AI and Edinburgh University respectively, for publishing such a promising and clear research paper: [Natural language guidance of high-fidelity text-to-speech with synthetic annotations](https://arxiv.org/abs/2402.01912).
Yoach Lacombe's avatar
Yoach Lacombe committed
73
- the many libraries used, namely [🤗 datasets](https://huggingface.co/docs/datasets/v2.17.0/en/index), [🤗 accelerate](https://huggingface.co/docs/accelerate/en/index), [jiwer](https://github.com/jitsi/jiwer), [wandb](https://wandb.ai/), and [🤗 transformers](https://huggingface.co/docs/transformers/index).
74
75
- Descript for the [DAC codec model](https://github.com/descriptinc/descript-audio-codec)
- Hugging Face 🤗 for providing compute resources and time to explore!
sanchit-gandhi's avatar
setup  
sanchit-gandhi committed
76

Yoach Lacombe's avatar
Yoach Lacombe committed
77
78
79
80
81
82
83
84
85
86
87
## Contribution

Contributions are welcome, as the project offers many possibilities for improvement and exploration.

Namely, we're looking at ways to improve both quality and speed:
- Datasets:
    - Train on more data
    - Add more features such as accents
- Training:
    - Add PEFT compatibility to do Lora fine-tuning.
    - Add possibility to train without description column.
Yoach Lacombe's avatar
Yoach Lacombe committed
88
    - Add notebook training.
Yoach Lacombe's avatar
Yoach Lacombe committed
89
90
91
92
93
94
    - Explore multilingual training.
    - Explore mono-speaker finetuning.
    - Explore more architectures.
- Optimization:
    - Compilation and static cache
    - Support to FA2 and SDPA
Yoach Lacombe's avatar
Yoach Lacombe committed
95
96
- Evaluation:
    - Add more evaluation metrics
Yoach Lacombe's avatar
Yoach Lacombe committed
97

Yoach Lacombe's avatar
Yoach Lacombe committed
98
## Citation
99
If you found this repository useful, please consider citing this work and also the original Stability AI paper:
Yoach Lacombe's avatar
Yoach Lacombe committed
100
101
102
103
104
105
106
```
@misc{lacombe-etal-2024-parler-tts,
  author = {Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi},
  title = {Parler-TTS},
  year = {2024},
  publisher = {GitHub},
  journal = {GitHub repository},
Yoach Lacombe's avatar
Yoach Lacombe committed
107
  howpublished = {\url{https://github.com/huggingface/parler-tts}}
Yoach Lacombe's avatar
Yoach Lacombe committed
108
109
}
```