valhalla commited on
Commit
181ddf8
1 Parent(s): b68d93f
README.md ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - fr
4
+ - en
5
+ datasets:
6
+ - covost2
7
+ tags:
8
+ - audio
9
+ - speech-translation
10
+ - automatic-speech-recognition
11
+ license: MIT
12
+ ---
13
+
14
+
15
+ # S2T-SMALL-COVOST2-FR-EN-ST
16
+
17
+ `s2t-small-covost2-fr-en-st` is a Speech to Text Transformer (S2T) model trained for end-to-end Speech Translation (ST).
18
+ The S2T model was proposed in [this paper](https://arxiv.org/abs/2010.05171) and released in
19
+ [this repository](https://github.com/pytorch/fairseq/tree/master/examples/speech_to_text)
20
+
21
+
22
+ ## Model description
23
+
24
+ S2T is a transformer-based seq2seq (encoder-decoder) model designed for end-to-end Automatic Speech Recognition (ASR) and Speech
25
+ Translation (ST). It uses a convolutional downsampler to reduce the length of speech inputs by 3/4th before they are
26
+ fed into the encoder. The model is trained with standard autoregressive cross-entropy loss and generates the
27
+ transcripts/translations autoregressively.
28
+
29
+ ## Intended uses & limitations
30
+
31
+ This model can be used for end-to-end French speech to English text translation.
32
+ See the [model hub](https://huggingface.co/models?filter=speech_to_text) to look for other S2T checkpoints.
33
+
34
+
35
+ ### How to use
36
+
37
+ As this a standard sequence to sequence transformer model, you can use the `generate` method to generate the
38
+ transcripts by passing the speech features to the model.
39
+
40
+ *Note: The `Speech2TextProcessor` object uses [torchaudio](https://github.com/pytorch/audio) to extract the
41
+ filter bank features. Make sure to install the `torchaudio` package before running this example.*
42
+
43
+ You could either install those as extra speech dependancies with
44
+ `pip install transformers"[speech, sentencepiece]"` or install the packages seperatly
45
+ with `pip install torchaudio sentencepiece`.
46
+
47
+
48
+ ```python
49
+ import torch
50
+ from transformers import Speech2TextProcessor, Speech2TextForConditionalGeneration
51
+ from datasets import load_dataset
52
+ import soundfile as sf
53
+
54
+ model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-small-covost2-fr-en-st")
55
+ processor = Speech2TextProcessor.from_pretrained("facebook/s2t-small-covost2-fr-en-st")
56
+
57
+ def map_to_array(batch):
58
+ speech, _ = sf.read(batch["file"])
59
+ batch["speech"] = speech
60
+ return batch
61
+
62
+ ds = load_dataset(
63
+ "patrickvonplaten/librispeech_asr_dummy",
64
+ "clean",
65
+ split="validation"
66
+ )
67
+ ds = ds.map(map_to_array)
68
+
69
+ inputs = processor(
70
+ ds["speech"][0],
71
+ sampling_rate=48_000,
72
+ return_tensors="pt"
73
+ )
74
+ generated_ids = model.generate(input_ids=inputs["input_features"], attention_mask=inputs["attention_mask"])
75
+
76
+ translation = processor.batch_decode(generated_ids, skip_special_tokens=True)
77
+ ```
78
+
79
+
80
+ ## Training data
81
+
82
+ The s2t-small-covost2-fr-en-st is trained on French-English subset of [CoVoST2](https://github.com/facebookresearch/covost).
83
+ CoVoST is a large-scale multilingual ST corpus based on [Common Voice](https://arxiv.org/abs/1912.06670), created to to foster
84
+ ST research with the largest ever open dataset
85
+
86
+
87
+ ## Training procedure
88
+
89
+ ### Preprocessing
90
+
91
+ The speech data is pre-processed by extracting Kaldi-compliant 80-channel log mel-filter bank features automatically from
92
+ WAV/FLAC audio files via PyKaldi or torchaudio. Further utterance-level CMVN (cepstral mean and variance normalization)
93
+ is applied to each example.
94
+
95
+ The texts are lowercased and tokenized using character based SentencePiece vocab.
96
+
97
+
98
+ ### Training
99
+
100
+ The model is trained with standard autoregressive cross-entropy loss and using [SpecAugment](https://arxiv.org/abs/1904.08779).
101
+ The encoder receives speech features, and the decoder generates the transcripts autoregressively. To accelerate
102
+ model training and for better performance the encoder is pre-trained for English ASR.
103
+
104
+ ## Evaluation results
105
+
106
+ CoVOST2 test results for fr-en (BLEU score): 26.25
107
+
108
+
109
+
110
+ ### BibTeX entry and citation info
111
+
112
+ ```bibtex
113
+ @inproceedings{wang2020fairseqs2t,
114
+ title = {fairseq S2T: Fast Speech-to-Text Modeling with fairseq},
115
+ author = {Changhan Wang and Yun Tang and Xutai Ma and Anne Wu and Dmytro Okhonko and Juan Pino},
116
+ booktitle = {Proceedings of the 2020 Conference of the Asian Chapter of the Association for Computational Linguistics (AACL): System Demonstrations},
117
+ year = {2020},
118
+ }
119
+
120
+ ```
config.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "activation_dropout": 0.1,
3
+ "activation_function": "relu",
4
+ "architectures": [
5
+ "Speech2TextForConditionalGeneration"
6
+ ],
7
+ "attention_dropout": 0.1,
8
+ "bos_token_id": 0,
9
+ "classifier_dropout": 0.0,
10
+ "conv_channels": 1024,
11
+ "conv_kernel_sizes": [
12
+ 5,
13
+ 5
14
+ ],
15
+ "d_model": 256,
16
+ "decoder_attention_heads": 4,
17
+ "decoder_ffn_dim": 2048,
18
+ "decoder_layerdrop": 0.0,
19
+ "decoder_layers": 6,
20
+ "decoder_start_token_id": 2,
21
+ "dropout": 0.1,
22
+ "early_stopping": true,
23
+ "encoder_attention_heads": 4,
24
+ "encoder_ffn_dim": 2048,
25
+ "encoder_layerdrop": 0.0,
26
+ "encoder_layers": 12,
27
+ "eos_token_id": 2,
28
+ "gradient_checkpointing": false,
29
+ "init_std": 0.02,
30
+ "input_channels": 1,
31
+ "input_feat_per_channel": 80,
32
+ "is_encoder_decoder": true,
33
+ "max_length": 200,
34
+ "max_source_positions": 6000,
35
+ "max_target_positions": 1024,
36
+ "model_type": "speech_to_text",
37
+ "num_beams": 5,
38
+ "num_conv_layers": 2,
39
+ "num_hidden_layers": 12,
40
+ "pad_token_id": 1,
41
+ "scale_embedding": true,
42
+ "tie_word_embeddings": false,
43
+ "transformers_version": "4.4.0.dev0",
44
+ "use_cache": true,
45
+ "vocab_size": 277
46
+ }
preprocessor_config.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "do_ceptral_normalize": true,
3
+ "feature_size": 80,
4
+ "normalize_means": true,
5
+ "normalize_vars": true,
6
+ "num_mel_bins": 80,
7
+ "padding_side": "right",
8
+ "padding_value": 0.0,
9
+ "return_attention_mask": true,
10
+ "sampling_rate": 48000
11
+ }
pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5d9807955e17f57d6476b7be3bf2f25e351efd3e15dc62468ca35909db4dd81e
3
+ size 108594693
sentencepiece.bpe.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0ac7963b4636c9f4535c2da184e12e0086c57b28153abd92baefeb96651313ac
3
+ size 240723
special_tokens_map.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"bos_token": "<s>", "eos_token": "</s>", "unk_token": "<unk>", "pad_token": "<pad>"}
tokenizer_config.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"bos_token": "<s>", "eos_token": "</s>", "unk_token": "<unk>", "pad_token": "<pad>", "do_upper_case": false, "do_lower_case": false, "tgt_lang": null, "lang_codes": null, "tokenizer_file": null}
vocab.json ADDED
@@ -0,0 +1,279 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "<s>": 0,
3
+ "<pad>": 1,
4
+ "</s>": 2,
5
+ "<unk>": 3,
6
+ "\u2581": 4,
7
+ "e": 5,
8
+ "t": 6,
9
+ "a": 7,
10
+ "o": 8,
11
+ "i": 9,
12
+ "n": 10,
13
+ "r": 11,
14
+ "s": 12,
15
+ "h": 13,
16
+ "l": 14,
17
+ "d": 15,
18
+ "u": 16,
19
+ "c": 17,
20
+ "m": 18,
21
+ ".": 19,
22
+ "f": 20,
23
+ "y": 21,
24
+ "g": 22,
25
+ "p": 23,
26
+ "w": 24,
27
+ "b": 25,
28
+ ",": 26,
29
+ "v": 27,
30
+ "T": 28,
31
+ "k": 29,
32
+ "I": 30,
33
+ "-": 31,
34
+ "S": 32,
35
+ "A": 33,
36
+ "H": 34,
37
+ "M": 35,
38
+ "\u2019": 36,
39
+ "C": 37,
40
+ "x": 38,
41
+ "B": 39,
42
+ "P": 40,
43
+ "W": 41,
44
+ "z": 42,
45
+ "L": 43,
46
+ "F": 44,
47
+ "D": 45,
48
+ "G": 46,
49
+ "R": 47,
50
+ "?": 48,
51
+ "!": 49,
52
+ "N": 50,
53
+ "E": 51,
54
+ "\u00e9": 52,
55
+ "q": 53,
56
+ "O": 54,
57
+ "j": 55,
58
+ "J": 56,
59
+ "Y": 57,
60
+ "V": 58,
61
+ "K": 59,
62
+ "'": 60,
63
+ "U": 61,
64
+ "\u00e8": 62,
65
+ "0": 63,
66
+ "\u201d": 64,
67
+ ":": 65,
68
+ "Q": 66,
69
+ "1": 67,
70
+ "\u201c": 68,
71
+ ";": 69,
72
+ "\u00c9": 70,
73
+ "Z": 71,
74
+ "\u00e7": 72,
75
+ "2": 73,
76
+ "3": 74,
77
+ "\u00e2": 75,
78
+ "/": 76,
79
+ "5": 77,
80
+ "4": 78,
81
+ "(": 79,
82
+ "6": 80,
83
+ "7": 81,
84
+ ")": 82,
85
+ "\u00f4": 83,
86
+ "8": 84,
87
+ "9": 85,
88
+ "\u00eb": 86,
89
+ "\"": 87,
90
+ "X": 88,
91
+ "\u00ef": 89,
92
+ "\u00e1": 90,
93
+ "\u00fc": 91,
94
+ "\u00ea": 92,
95
+ "\u2014": 93,
96
+ "\u2018": 94,
97
+ "\u00ed": 95,
98
+ "\u00f6": 96,
99
+ "\u00f3": 97,
100
+ "\u00ee": 98,
101
+ "\u014d": 99,
102
+ "\u00e4": 100,
103
+ "\u00e0": 101,
104
+ "\u00ab": 102,
105
+ "\u00bb": 103,
106
+ "\u0153": 104,
107
+ "\u00ce": 105,
108
+ "\u0161": 106,
109
+ "\u0107": 107,
110
+ "&": 108,
111
+ "_": 109,
112
+ "\u00f1": 110,
113
+ "\u0142": 111,
114
+ "=": 112,
115
+ "\u010d": 113,
116
+ "`": 114,
117
+ "\u00fb": 115,
118
+ "\u00fa": 116,
119
+ "[": 117,
120
+ "]": 118,
121
+ "\u00f8": 119,
122
+ "\u0101": 120,
123
+ "\u016b": 121,
124
+ "\u00e3": 122,
125
+ "\u0103": 123,
126
+ "\u0131": 124,
127
+ "\u2013": 125,
128
+ "\u0144": 126,
129
+ "\u00e5": 127,
130
+ "\u0160": 128,
131
+ "\u00d6": 129,
132
+ "\u00df": 130,
133
+ "%": 131,
134
+ "\u00b0": 132,
135
+ "<": 133,
136
+ "\u0119": 134,
137
+ "\u015f": 135,
138
+ "\u00c1": 136,
139
+ "\u0219": 137,
140
+ "|": 138,
141
+ "\u00fd": 139,
142
+ "\u00ff": 140,
143
+ "\u010c": 141,
144
+ "}": 142,
145
+ "\u00e6": 143,
146
+ "{": 144,
147
+ "\u014c": 145,
148
+ "\u0159": 146,
149
+ "$": 147,
150
+ "\u017e": 148,
151
+ "\u00c5": 149,
152
+ "\u00c6": 150,
153
+ "\u00f0": 151,
154
+ "\u00f2": 152,
155
+ "\u0105": 153,
156
+ "\u011f": 154,
157
+ "\u0151": 155,
158
+ "\u0152": 156,
159
+ "\u015b": 157,
160
+ "\u021b": 158,
161
+ "\u00c2": 159,
162
+ "\u011b": 160,
163
+ "\u015a": 161,
164
+ "\u017b": 162,
165
+ ">": 163,
166
+ "\u00c4": 164,
167
+ "\u00f5": 165,
168
+ "\u00f9": 166,
169
+ "\u0111": 167,
170
+ "\u0113": 168,
171
+ "\u0117": 169,
172
+ "\u0141": 170,
173
+ "\u015e": 171,
174
+ "\u017c": 172,
175
+ "\u1e63": 173,
176
+ "\u00c0": 174,
177
+ "\u00c7": 175,
178
+ "\u00ca": 176,
179
+ "\u00d8": 177,
180
+ "\u00ec": 178,
181
+ "\u012b": 179,
182
+ "\u017d": 180,
183
+ "\u02bb": 181,
184
+ "\u02bf": 182,
185
+ "@": 183,
186
+ "~": 184,
187
+ "\u00a3": 185,
188
+ "\u00c8": 186,
189
+ "\u00cd": 187,
190
+ "\u00d3": 188,
191
+ "\u00d4": 189,
192
+ "\u00da": 190,
193
+ "\u00dc": 191,
194
+ "\u0100": 192,
195
+ "\u0130": 193,
196
+ "\u0146": 194,
197
+ "\u0148": 195,
198
+ "\u014f": 196,
199
+ "\u017a": 197,
200
+ "\u02be": 198,
201
+ "\u043e": 199,
202
+ "\u20ac": 200,
203
+ "\u00a7": 201,
204
+ "\u00b1": 202,
205
+ "\u00b7": 203,
206
+ "\u00de": 204,
207
+ "\u0244": 205,
208
+ "\u03ba": 206,
209
+ "\u03c4": 207,
210
+ "\u1e47": 208,
211
+ "\u1e6f": 209,
212
+ "\u661f": 210,
213
+ "\u00d5": 211,
214
+ "\u0106": 212,
215
+ "\u0110": 213,
216
+ "\u0120": 214,
217
+ "\u0127": 215,
218
+ "\u0165": 216,
219
+ "\u016a": 217,
220
+ "\u0172": 218,
221
+ "\u01a1": 219,
222
+ "\u01b0": 220,
223
+ "\u01f9": 221,
224
+ "\u0218": 222,
225
+ "\u021a": 223,
226
+ "\u02cb": 224,
227
+ "\u02d0": 225,
228
+ "\u0300": 226,
229
+ "\u0320": 227,
230
+ "\u0391": 228,
231
+ "\u0392": 229,
232
+ "\u0394": 230,
233
+ "\u03a9": 231,
234
+ "\u03b1": 232,
235
+ "\u03b2": 233,
236
+ "\u03b4": 234,
237
+ "\u03b6": 235,
238
+ "\u03c0": 236,
239
+ "\u03c5": 237,
240
+ "\u0413": 238,
241
+ "\u0418": 239,
242
+ "\u0430": 240,
243
+ "\u0435": 241,
244
+ "\u0437": 242,
245
+ "\u043c": 243,
246
+ "\u043d": 244,
247
+ "\u12f0": 245,
248
+ "\u1e0d": 246,
249
+ "\u1e45": 247,
250
+ "\u1e6c": 248,
251
+ "\u1ea1": 249,
252
+ "\u1ea3": 250,
253
+ "\u1ea7": 251,
254
+ "\u1ead": 252,
255
+ "\u1ec5": 253,
256
+ "\u1ec7": 254,
257
+ "\u1ecb": 255,
258
+ "\u1ed3": 256,
259
+ "\u1ed9": 257,
260
+ "\u1ee3": 258,
261
+ "\u1eed": 259,
262
+ "\u1ef3": 260,
263
+ "\u2039": 261,
264
+ "\u203a": 262,
265
+ "\u2205": 263,
266
+ "\u221e": 264,
267
+ "\u2609": 265,
268
+ "\u3044": 266,
269
+ "\u305f": 267,
270
+ "\u3064": 268,
271
+ "\u4e43": 269,
272
+ "\u4eac": 270,
273
+ "\u5317": 271,
274
+ "\u626c": 272,
275
+ "\u672f": 273,
276
+ "\u675c": 274,
277
+ "\u7f8e": 275,
278
+ "\u9986": 276
279
+ }