Add SpeechEncoderDecoder & Speech2Text2
Author: patrickvonplaten
Pull request: yes

This PR adds Facebook's new Speech Translation models - see [paper here](https://arxiv.org/pdf/2104.06678.pdf) that are based on a pretrained Wav2Vec2 and achieve SOTA on CoVoST-2 @kahne .

Since those checkpoints are based on `Wav2Vec2`, we can use this PR to create the `SpeechEncoderDecoder` class which essentially allows one to use any pretrained speech encoder with any text decoder model. The Speech Translation models are converted to fit the format of `SpeechEncoderDecoderModel` and should be used as follows:

```python
import torch
from transformers import Speech2Text2Processor, SpeechEncoderDecoder
from datasets import load_dataset

import soundfile as sf
model = SpeechEncoderDecoder.from_pretrained("facebook/s2t-wav2vec2-large-en-de")
processor = Speech2Text2Processor.from_pretrained("facebook/s2t-wav2vec2-large-en-de")

def map_to_array(batch):
    speech, _ = sf.read(batch["file"])
    batch["speech"] = speech
    return batch
    
ds = load_dataset("patrickvonplaten/librispeech_asr_dummy", "clean", split="validation")
ds = ds.map(map_to_array)

inputs = processor(ds["speech"][0], sampling_rate=16_000, return_tensors="pt")
generated_ids = model.generate(input_ids=inputs["input_features"], attention_mask=inputs["attention_mask"])
transcription = processor.batch_decode(generated_ids)
```

Since the decoder and tokenizer is different from the previous `Speech2Text` model: https://github.com/huggingface/transformers/tree/master/src/transformers/models/speech_to_text a new model folder speech_to_text_2 is created. 
Currently, the tokenizer only supports decoding and not encoding (which is only needed for training) because the tokenizer merges files are not published (cc @kahne)
The model can only be used in combination with `SpeechEncoderDecoderModel`.

The `SpeechEncoderDecoderModel` is also fully added in this PR and tests for `Wav2Vec2Bert`, `Speech2TextBert`, `Wav2Vec2SpeechToText2` are added.

The ASR pipeline is slighly adapted to make it work with `SpeechEncoderDecoder`.

@LysandreJik @anton-l - it would be great if you could take a look at the general model architecture

@Narsil - it would be very nice if you could check the changes to the pipeline

All models are uploaded and can be accessed here: https://huggingface.co/models?other=speech2text2


## Future TODO:
- Currently the tokenizer support only decoding, not training. If the community is interested in getting tokenizer training support for `Speech2Text2` in the future, please ping @patrickvonplaten 

Comments:
@patrickvonplaten I've updated the tarball with the fastBPE codes file (`bpe.10k`). Please re-download and let me know if you have questions :)

-Hi @patrickvonplaten , 
I was trying to try https://huggingface.co/facebook/s2t-wav2vec2-large-en-tr however I'm getting an error when I'm trying to implement the model. 
there is no error message or stack trace that is available so I can share it. 
I also tried to run it as a python script but it did work too.

```
from transformers import SpeechEncoderDecoderConfig
```

```
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    from transformers import SpeechEncoderDecoderConfig
ImportError: cannot import name 'SpeechEncoderDecoderConfig' from 'transformers' (/venv/lib/python3.7/site-packages/transformers/__init__.py)
```

However, Pycharm gives me an error that this package is not available.
![image](https://user-images.githubusercontent.com/9295206/133619519-a493069f-bec8-4554-be8c-c1e181b62e04.png)

 transformers `__version__ = "4.10.2"`
python `3.7.4`