File size: 6,235 Bytes
0c9ade6 c1be6b2 98ed83e 0c9ade6 9a161e2 6b11349 0c9ade6 fe595a2 7d289ad 0c9ade6 7d289ad 243e310 0c9ade6 243e310 0c9ade6 243e310 0c9ade6 243e310 1906a4f 0c9ade6 1906a4f 60d46cc 1906a4f 0c9ade6 7d289ad 0c9ade6 1906a4f 243e310 0c9ade6 7d289ad 0c9ade6 |
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 |
---
language:
- ru
tags:
- vits
license: apache-2.0
pipeline_tag: text-to-speech
widget:
- example_title: text to speech
text: >
прив+ет, как дел+а? всё +очень хорош+о! а у тебя как?
---
# Text to Speech Russian free multispeaker model
This is a multiple speakers text-to-speech model for the Russian language. It works on plain text with punctuation separation, and does not require prior conversion of the text into phonemes.
The model with multiple speakers has two voices: 0 - woman, 1 - man.
The size of the model is only 15.1 million parameters.
The text accepts lowercase.
For better generation quality, we recommend putting accents in the text before the vowel letters.
We recommend using the "ruaccent" library for accentuation.
To install "ruaccent", use:
```bash
pip install -y ruaccent
```
For test inference use Spaces:
https://huggingface.co/spaces/utrobinmv/tts_ru_free_hf_vits_low_multispeaker
Usage example using PyTorch:
```python
from transformers import VitsModel, AutoTokenizer, set_seed
import torch
import scipy
from ruaccent import RUAccent
device = 'cuda' # 'cpu' or 'cuda'
speaker = 0 # 0-woman, 1-man
set_seed(555) # make deterministic
# load model
model_name = "utrobinmv/tts_ru_free_hf_vits_low_multispeaker"
model = VitsModel.from_pretrained(model_name).to(device)
tokenizer = AutoTokenizer.from_pretrained(model_name)
model.eval()
# load accentizer
accentizer = RUAccent()
accentizer.load(omograph_model_size='turbo', use_dictionary=True, device=device)
# text
text = """Ночью двадцать третьего июня начал извергаться самый высокий
действующий вулкан в Евразии - Кл+ючевской. Об этом сообщила руководитель
Камчатской группы реагирования на вулканические извержения, ведущий
научный сотрудник Института вулканологии и сейсмологии ДВО РАН Ольга Гирина.
«Зафиксированное ночью не просто свечение, а вершинное эксплозивное
извержение стромболианского типа. Пока такое извержение никому не опасно:
ни населению, ни авиации» пояснила ТАСС госпожа Гирина."""
# the placement of accents
text = accentizer.process_all(text)
print(text)
# н+очью дв+адцать тр+етьего и+юня н+ачал изверг+аться с+амый выс+окий
# д+ействующий вулк+ан в евр+азии - ключевск+ой. об +этом сообщ+ила
# руковод+итель камч+атской гр+уппы реаг+ирования на вулкан+ические
# изверж+ения, вед+ущий на+учный сотр+удник инстит+ута вулканол+огии
# и сейсмол+огии дво ран +ольга г+ирина. « зафикс+ированное н+очью не
# пр+осто свеч+ение, а верш+инное эксплоз+ивное изверж+ение
# стромболи+анского т+ипа. пок+а так+ое изверж+ение ником+у не оп+асно:
# ни насел+ению, ни ави+ации » поясн+ила тасс госпож+а г+ирина.
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs.to(device), speaker_id=speaker).waveform
output = output.detach().cpu().numpy()
scipy.io.wavfile.write("tts_audio.wav", rate=model.config.sampling_rate,
data=output[0])
```
For displayed in a Jupyter Notebook / Google Colab:
```python
from IPython.display import Audio
Audio(output, rate=model.config.sampling_rate)
```
##
Usage example using ONNX:
First copy the model.onnx file to the folder "tts_ru_free_hf_vits_low_multispeaker".
```python
import numpy as np
import scipy
import onnxruntime
from ruaccent import RUAccent
from transformers import AutoTokenizer
speaker = 0 # 0-woman, 1-man
# load model
model_path = "tts_ru_free_hf_vits_low_multispeaker/model.onnx"
sess_options = onnxruntime.SessionOptions()
model = onnxruntime.InferenceSession(model_path, sess_options=sess_options)
tokenizer = AutoTokenizer.from_pretrained("utrobinmv/tts_ru_free_hf_vits_low_multispeaker")
# text
text = """Ночью двадцать третьего июня начал извергаться самый высокий
действующий вулкан в Евразии - Кл+ючевской. Об этом сообщила руководитель
Камчатской группы реагирования на вулканические извержения, ведущий
научный сотрудник Института вулканологии и сейсмологии ДВО РАН Ольга Гирина.
«Зафиксированное ночью не просто свечение, а вершинное эксплозивное
извержение стромболианского типа. Пока такое извержение никому не опасно:
ни населению, ни авиации» пояснила ТАСС госпожа Гирина."""
# load accentizer
accentizer = RUAccent()
accentizer.load(omograph_model_size='turbo', use_dictionary=True)
# the placement of accents
text = accentizer.process_all(text)
# inference
inputs = tokenizer(text, return_tensors="np")
sid = np.array([speaker])
sampling_rate = 16000
output = model.run(
None,
{
"input_ids": inputs['input_ids'],
"attention_mask": inputs['attention_mask'],
"sid": sid,
},
)[0]
scipy.io.wavfile.write("tts_audio.wav", rate=sampling_rate,
data=output[0])
```
For displayed in a Jupyter Notebook / Google Colab:
```python
from IPython.display import Audio
Audio(output, rate=sampling_rate)
```
##
## Languages covered
Russian (ru_RU)
|