bond005 commited on
Commit
55efe31
1 Parent(s): 8027d28

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +203 -0
README.md ADDED
@@ -0,0 +1,203 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: ru
3
+ datasets:
4
+ - SberDevices/Golos
5
+ - mozilla-foundation/common_voice_6_0
6
+ metrics:
7
+ - wer
8
+ - cer
9
+ tags:
10
+ - audio
11
+ - automatic-speech-recognition
12
+ - speech
13
+ - mozilla-foundation/common_voice_6_0
14
+ - SberDevices/Golos
15
+ license: apache-2.0
16
+ model-index:
17
+ - name: XLSR Wav2Vec2 Russian with Language Model by Ivan Bondarenko
18
+ results:
19
+ - task:
20
+ name: Speech Recognition
21
+ type: automatic-speech-recognition
22
+ dataset:
23
+ name: Sberdevices Golos (crowd)
24
+ type: SberDevices/Golos
25
+ args: ru
26
+ metrics:
27
+ - name: Test WER
28
+ type: wer
29
+ value: 7.42
30
+ - name: Test CER
31
+ type: cer
32
+ value: 1.85
33
+ - task:
34
+ name: Speech Recognition
35
+ type: automatic-speech-recognition
36
+ dataset:
37
+ name: Sberdevices Golos (farfield)
38
+ type: SberDevices/Golos
39
+ args: ru
40
+ metrics:
41
+ - name: Test WER
42
+ type: wer
43
+ value: 16.08
44
+ - name: Test CER
45
+ type: cer
46
+ value: 5.27
47
+ - task:
48
+ name: Automatic Speech Recognition
49
+ type: automatic-speech-recognition
50
+ dataset:
51
+ name: Common Voice ru
52
+ type: common_voice
53
+ args: ru
54
+ metrics:
55
+ - name: Test WER
56
+ type: wer
57
+ value: 29.75
58
+ - name: Test CER
59
+ type: cer
60
+ value: 8.15
61
+ ---
62
+ # Wav2Vec2-Large-Ru-Golos-With-LM
63
+
64
+ Fine-tuned [facebook/wav2vec2-large-xlsr-53](https://huggingface.co/facebook/wav2vec2-large-xlsr-53) on Russian using the [Sberdevices Golos](https://huggingface.co/datasets/SberDevices/Golos). The language model is based on [the Russian National Corpus](https://ruscorpora.ru/en), and this model includes unigrams, bigrams and trigrams.
65
+
66
+ ## Usage
67
+
68
+ When using this model, make sure that your speech input is sampled at 16kHz.
69
+
70
+ You can use this model by writing your own inference script:
71
+
72
+ ```python
73
+ import os
74
+
75
+ import librosa
76
+ import nltk
77
+ import numpy as np
78
+
79
+ import torch
80
+ from datasets import load_dataset
81
+ from transformers import Wav2Vec2ForCTC, Wav2Vec2ProcessorWithLM
82
+
83
+ LANG_ID = "ru"
84
+ MODEL_ID = "bond005/wav2vec2-large-ru-golos-with-lm"
85
+ SAMPLES = 20
86
+
87
+ nltk.download('punkt')
88
+ num_processes = max(1, os.cpu_count())
89
+
90
+ test_dataset = load_dataset("common_voice", LANG_ID, split=f"test[:{SAMPLES}]")
91
+ processor = Wav2Vec2ProcessorWithLM.from_pretrained(MODEL_ID)
92
+ model = Wav2Vec2ForCTC.from_pretrained(MODEL_ID)
93
+
94
+ # Preprocessing the datasets.
95
+ # We need to read the audio files as arrays
96
+ def speech_file_to_array_fn(batch):
97
+ speech_array, sampling_rate = librosa.load(batch["path"], sr=16000)
98
+ prepared_sentence = ' '.join(list(filter(
99
+ lambda it: it.isalpha(),
100
+ nltk.wordpunct_tokenize(batch["sentence"].lower().replace('ё', 'е'))
101
+ )))
102
+ batch["speech"] = np.asarray(speech_array, dtype=np.float32)
103
+ batch["sentence"] = prepared_sentence
104
+ return batch
105
+
106
+ test_dataset = test_dataset.map(speech_file_to_array_fn)
107
+
108
+ inputs = processor(test_dataset["speech"], sampling_rate=16_000, return_tensors="pt", padding=True)
109
+ with torch.no_grad():
110
+ logits = model(inputs.input_values, attention_mask=inputs.attention_mask).logits
111
+ predicted_sentences = processor.batch_decode(
112
+ logits=logits.numpy(),
113
+ num_processes=num_processes
114
+ ).text
115
+
116
+ for i, predicted_sentence in enumerate(predicted_sentences):
117
+ print("-" * 100)
118
+ print("Reference:", test_dataset[i]["sentence"])
119
+ print("Prediction:", predicted_sentence)
120
+ ```
121
+
122
+ ```text
123
+ ----------------------------------------------------------------------------------------------------
124
+ Reference: я беру маленький кусочек бумажки
125
+ Prediction: либерман чик сочи бумажки
126
+ ----------------------------------------------------------------------------------------------------
127
+ Reference: о потерях пока не сообщается
128
+ Prediction: о потерях пока не сообщается оооо
129
+ ----------------------------------------------------------------------------------------------------
130
+ Reference: ваша воля
131
+ Prediction: ваша воля
132
+ ----------------------------------------------------------------------------------------------------
133
+ Reference: мы высоко ценим ее роль в этом отношении
134
+ Prediction: урс ока цене не роль в этом отношении
135
+ ----------------------------------------------------------------------------------------------------
136
+ Reference: вот это вызывало у нас жуткое отторжение
137
+ Prediction: от это вызвал у нас жутко отторжения
138
+ ----------------------------------------------------------------------------------------------------
139
+ Reference: он положил ей букет на книгу
140
+ Prediction: он положил букет на книгу
141
+ ----------------------------------------------------------------------------------------------------
142
+ Reference: ну и положу обиделась женя
143
+ Prediction: ну я положу обиделась женя
144
+ ----------------------------------------------------------------------------------------------------
145
+ Reference: благодарю представителя австралии за ее заявление
146
+ Prediction: богатырю представитель австралии зае заявления
147
+ ----------------------------------------------------------------------------------------------------
148
+ Reference: для меня это не было неожиданностью
149
+ Prediction: дай мне это не было неожиданностью
150
+ ----------------------------------------------------------------------------------------------------
151
+ Reference: поздняя ночь
152
+ Prediction: поздняя ночь
153
+ ----------------------------------------------------------------------------------------------------
154
+ Reference: тем не менее нужно вновь вычленить некоторые элементы наших политических установок
155
+ Prediction: тем не менее нужно мыслить снег корыэлементанажихпалиотических установок
156
+ ----------------------------------------------------------------------------------------------------
157
+ Reference: мы не можем позволить себе упустить эту возможность
158
+ Prediction: мы не можем под болить чи опустить эту возможность
159
+ ----------------------------------------------------------------------------------------------------
160
+ Reference: в предстоящие месяцы суд примет решение по ордеру на арест министра обороны хусейна
161
+ Prediction: в предстоящие месяцы суд примет решение по ордеру на арест министра обороны хусейна
162
+ ----------------------------------------------------------------------------------------------------
163
+ Reference: валерия живет в старом панельном доме советских времен
164
+ Prediction: валерия живето в старом панель тона советских времян
165
+ ----------------------------------------------------------------------------------------------------
166
+ Reference: я вернусь скоро
167
+ Prediction: я вернусь скоро
168
+ ----------------------------------------------------------------------------------------------------
169
+ Reference: слово предоставляется его превосходительству принцу зайду
170
+ Prediction: слово предоставляется его превосходительство принцу зайду
171
+ ----------------------------------------------------------------------------------------------------
172
+ Reference: ну конечно тебе бы этого хотелось
173
+ Prediction: ну конечно тебе этого хотелось
174
+ ----------------------------------------------------------------------------------------------------
175
+ Reference: общественные объединения равны перед законом
176
+ Prediction: общественные объединения равны перед законом
177
+ ----------------------------------------------------------------------------------------------------
178
+ Reference: ну что же нету этики эстетики
179
+ Prediction: ну что же не то натеки невротики
180
+ ----------------------------------------------------------------------------------------------------
181
+ Reference: сразу же она легла в постель
182
+ Prediction: сразу же она легла в пасти
183
+ ```
184
+
185
+
186
+ The Google Colab version of [this script](https://colab.research.google.com/drive/1SnQmrt6HmMNV-zK-UCPajuwl1JvoCqbX?usp=sharing) is available too.
187
+
188
+ ## Evaluation
189
+ This model was evaluated on the test subsets of [SberDevices Golos](https://huggingface.co/datasets/SberDevices/Golos) and [Common Voice 6.0](https://huggingface.co/datasets/common_voice) (Russian part), but it was trained on the train subset of SberDevices Golos only.
190
+
191
+ ## Citation
192
+ If you want to cite this model you can use this:
193
+
194
+ ```bibtex
195
+ @misc{bondarenko2022wav2vec2-large-ru-golos,
196
+ title={XLSR Wav2Vec2 Russian with Language Model by Ivan Bondarenko},
197
+ author={Bondarenko, Ivan},
198
+ publisher={Hugging Face},
199
+ journal={Hugging Face Hub},
200
+ howpublished={\url{https://huggingface.co/bond005/wav2vec2-large-ru-golos-with-lm}},
201
+ year={2022}
202
+ }
203
+ ```