S2T-SMALL-MUSTC-EN-FR-ST
s2t-small-mustc-en-fr-st is a Speech to Text Transformer (S2T) model trained for end-to-end Speech Translation (ST).
The S2T model was proposed in
this paper and released in
this repository
Model description
S2T is a transformer-based seq2seq (encoder-decoder) model designed for end-to-end Automatic Speech Recognition (ASR) and Speech
Translation (ST). It uses a convolutional downsampler to reduce the length of speech inputs by 3/4th before they are
fed into the encoder. The model is trained with standard autoregressive cross-entropy loss and generates the
transcripts/translations autoregressively.
Intended uses & limitations
This model can be used for end-to-end English speech to French text translation.
See the
model hub to look for other S2T checkpoints.
How to use
As this a standard sequence to sequence transformer model, you can use the generate method to generate the
transcripts by passing the speech features to the model.
Note: The Speech2TextProcessor object uses torchaudio to extract the
filter bank features. Make sure to install the torchaudio package before running this example.
You could either install those as extra speech dependancies with
pip install transformers"[speech, sentencepiece]" or install the packages seperatly
with pip install torchaudio sentencepiece.
1import torch
2from transformers import Speech2TextProcessor, Speech2TextForConditionalGeneration
3from datasets import load_dataset
4import soundfile as sf
5
6model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-small-mustc-en-fr-st")
7processor = Speech2TextProcessor.from_pretrained("facebook/s2t-small-mustc-en-fr-st")
8
9def map_to_array(batch):
10 speech, _ = sf.read(batch["file"])
11 batch["speech"] = speech
12 return batch
13
14ds = load_dataset(
15 "patrickvonplaten/librispeech_asr_dummy",
16 "clean",
17 split="validation"
18)
19ds = ds.map(map_to_array)
20
21inputs = processor(
22 ds["speech"][0],
23 sampling_rate=16_000,
24 return_tensors="pt"
25)
26generated_ids = model.generate(input_ids=inputs["input_features"], attention_mask=inputs["attention_mask"])
27
28translation = processor.batch_decode(generated_ids, skip_special_tokens=True)
Training data
The s2t-small-mustc-en-fr-st is trained on English-French subset of
MuST-C.
MuST-C is a multilingual speech translation corpus whose size and quality facilitates the training of end-to-end systems
for speech translation from English into several languages. For each target language, MuST-C comprises several hundred
hours of audio recordings from English TED Talks, which are automatically aligned at the sentence level with their manual
transcriptions and translations.
Training procedure
Preprocessing
The speech data is pre-processed by extracting Kaldi-compliant 80-channel log mel-filter bank features automatically from
WAV/FLAC audio files via PyKaldi or torchaudio. Further utterance-level CMVN (cepstral mean and variance normalization)
is applied to each example.
The texts are lowercased and tokenized using SentencePiece and a vocabulary size of 8,000.
Training
The model is trained with standard autoregressive cross-entropy loss and using
SpecAugment.
The encoder receives speech features, and the decoder generates the transcripts autoregressively. To accelerate
model training and for better performance the encoder is pre-trained for English ASR.
Evaluation results
MuST-C test results for en-fr (BLEU score): 32.9
BibTeX entry and citation info
1@inproceedings{wang2020fairseqs2t,
2 title = {fairseq S2T: Fast Speech-to-Text Modeling with fairseq},
3 author = {Changhan Wang and Yun Tang and Xutai Ma and Anne Wu and Dmytro Okhonko and Juan Pino},
4 booktitle = {Proceedings of the 2020 Conference of the Asian Chapter of the Association for Computational Linguistics (AACL): System Demonstrations},
5 year = {2020},
6}
7