File size: 4,186 Bytes
9c86155
 
06a4abd
3a8ff8c
 
9c86155
3502c7a
 
9c86155
 
 
 
1647edb
 
 
e4b5b28
 
 
f31d0fc
0660089
312c1fb
eb73539
 
8812d27
 
ca51157
 
26f7d46
 
 
a163565
ca51157
ab45ce0
8812d27
 
1c7c61b
 
8812d27
 
 
1c7c61b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ab45ce0
ca51157
e3a973e
c1ec4bf
 
 
 
 
 
c00658c
c1ec4bf
c00658c
c1ec4bf
c00658c
 
c1ec4bf
 
e3a973e
c1ec4bf
1647edb
bebc984
1647edb
 
 
8812d27
1647edb
bebc984
1647edb
 
 
 
8812d27
1647edb
 
 
06a4abd
1647edb
ab45ce0
eb8c82c
 
06a4abd
e80835d
 
a163565
 
7af6095
e80835d
 
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
---
title: "Ukrainian TTS"
emoji: 🐌
colorFrom: blue
colorTo: yellow
sdk: gradio
sdk_version : 3.3
python_version: 3.9
app_file: app.py
pinned: false
---

# Ukrainian TTS πŸ“’πŸ€–
Ukrainian TTS (text-to-speech) using Coqui TTS.

![pytest](https://github.com/robinhad/ukrainian-tts/actions/workflows/hf-sync.yml/badge.svg)
[![Open In HFπŸ€— Space ](https://img.shields.io/badge/Open%20Demo-%F0%9F%A4%97%20Space-yellow)](https://huggingface.co/spaces/robinhad/ukrainian-tts)
[![Open Bot](https://img.shields.io/badge/Open%20Bot-πŸ€–%20Telegram-blue)](https://t.me/uk_tts_bot)

Link to online demo -> [https://huggingface.co/spaces/robinhad/ukrainian-tts](https://huggingface.co/spaces/robinhad/ukrainian-tts)  
Note: online demo saves user input to improve user experience, by using it you give your consent to analyze this data.   
Link to source code and models -> [https://github.com/robinhad/ukrainian-tts](https://github.com/robinhad/ukrainian-tts)  
Telegram bot -> [https://t.me/uk_tts_bot](https://t.me/uk_tts_bot)  

Code is licensed under `MIT License`, models are under `GNU GPL v3 License`. 
# Support ❀️
If you like my work, please support ❀️ -> [https://send.monobank.ua/jar/48iHq4xAXm](https://send.monobank.ua/jar/48iHq4xAXm)  
For collaboration and question please contact me here:  
[Telegram https://t.me/robinhad](https://t.me/robinhad)  
[Twitter https://twitter.com/robinhad](https://twitter.com/robinhad)  
You're welcome to join UA Speech Recognition and Synthesis community: [Telegram https://t.me/speech_recognition_uk](https://t.me/speech_recognition_uk)
# Examples πŸ€–

`Mykyta (male)`:

https://user-images.githubusercontent.com/5759207/190852232-34956a1d-77a9-42b9-b96d-39d0091e3e34.mp4


`Olena (female)`:

https://user-images.githubusercontent.com/5759207/190852238-366782c1-9472-45fc-8fea-31346242f927.mp4


`Dmytro (male)`:

https://user-images.githubusercontent.com/5759207/190852251-db105567-52ba-47b5-8ec6-5053c3baac8c.mp4

`Olha (female)`:

https://user-images.githubusercontent.com/5759207/190852259-c6746172-05c4-4918-8286-a459c654eef1.mp4

`Lada (female)`:


https://user-images.githubusercontent.com/5759207/190852270-7aed2db9-dc08-4a9f-8775-07b745657ca1.mp4

# How to use: πŸ“’
## As a package:
1. Install using command:
```
pip install git+https://github.com/robinhad/ukrainian-tts.git
```
2. Run a code snippet:
```python
from ukrainian_tts.tts import TTS, Voices, Stress

tts = TTS(use_cuda=False)
with open("test.wav", mode="wb") as file:
    _, text = tts.tts("ΠŸΡ€ΠΈΠ²Ρ–Ρ‚", Voices.Dmytro.value, Stress.Model.value, file)
print("Accented text:", text)
```

## Run manually:  
`Caution: this won't use normalizer and autostress like a web demo. ` 
1. `pip install -r requirements.txt`.
2. Download `model.pth` and `speakers.pth` from "Releases" tab.
3. Launch as one-time command:  
```
tts --text "Text for TTS" \
    --model_path path/to/model.pth \
    --config_path path/to/config.json \
    --speaker_idx dmytro \
    --out_path folder/to/save/output.wav
```
or alternatively launch web server using:
```
tts-server --model_path path/to/model.pth \
    --config_path path/to/config.json
```

# How to train: πŸ‹οΈ
1. Refer to ["Nervous beginner guide"](https://tts.readthedocs.io/en/latest/tutorial_for_nervous_beginners.html) in Coqui TTS docs.
2. Instead of provided `config.json` use one from this repo.


# Attribution 🀝

- Model training - [Yurii Paniv @robinhad](https://github.com/robinhad)   
- Mykyta, Olena, Lada, Dmytro, Olha dataset - [Yehor Smoliakov @egorsmkv](https://github.com/egorsmkv)   
- Dmytro voice - [Dmytro Chaplynskyi @dchaplinsky](https://github.com/dchaplinsky)  
- Silence cutting using [HMM-GMM](https://github.com/proger/uk) - [Volodymyr Kyrylov @proger](https://github.com/proger)  
- Autostress (with dictionary) using [ukrainian-word-stress](https://github.com/lang-uk/ukrainian-word-stress) - [Oleksiy Syvokon @asivokon](https://github.com/asivokon)    
- Autostress (with model) using [ukrainian-accentor](https://github.com/egorsmkv/ukrainian-accentor) - [Bohdan Mykhailenko @NeonBohdan](https://github.com/NeonBohdan) + [Yehor Smoliakov @egorsmkv](https://github.com/egorsmkv)