Wave2vec custom training tokenizer bug
Author: flozi00
Pull request: no

## Environment info
<!-- You can run the command `transformers-cli env` and copy-and-paste its output below.
     Don't forget to fill out the missing fields in that output! -->

- `transformers` version: master
- Platform: win 10
- Python version: 3.8
- PyTorch version (GPU?): GPU
- Tensorflow version (GPU?):
- Using GPU in script?:
- Using distributed or parallel set-up in script?:

### Who can help
<!-- Your issue will be replied to more quickly if you can figure out the right person to tag with @
 If you know how to use git blame, that is the easiest way, otherwise, here is a rough guide of **who to tag**.
 Please tag fewer than 3 people.

 




HF projects:

- nlp datasets: [different repo](https://github.com/huggingface/nlp)
- rust tokenizers: [different repo](https://github.com/huggingface/tokenizers)
 -->
@patrickvonplaten 

## Information

Model I am using (Bert, XLNet ...):

The problem arises when using:
*  [X] the official example scripts: (give details below)
wave2vec Training example
* [ ] my own modified scripts: (give details below)

The tasks I am working on is:
* [ ] an official GLUE/SQUaD task: (give the name)
* [ ] my own task or dataset: (give details below)

## To reproduce

Steps to reproduce the behavior:
I was just running the wave2vec Training on pretrained base modell with the german common voice dataset. I modified the dataset that it fits into the format of librispeech so there are no changes in the example script.

<!-- If you have code snippets, error messages, stack traces please provide them here as well.
     Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
     Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.-->

## Expected behavior

<!-- A clear and concise description of what you would expect to happen. -->
While Training the wer on eval dataset is exactly 1.
After Training, while evaluation I recognized that the transcribed predictions are unk tokens only and the tokenizer is missing. I am using the pretrained tokenizer that's why.
The words and sentences seems to be correct (counting the same on both sides), only instead of words only the unk tokens are returned after detokenizing.

Comments:
I will add a notebook on how to fine-tune Wav2Vec2 on languages other than English next week (think I'll also go for the German Common Voice dataset). We only today added the multi-lingual checkpoint, so you probably used the English checkpoint which cannot handle German. If you didn't see the notebook within ~1,2 weeks, please ping me here again

Thanks for your answer
For understanding, why does the english checkpoint does not support german ?
I didn't see any reason for that, where is the point I was blind at ?

@flozi00 did you use a default English tokenizer/processor? You need to load a custom tokenizer, e.g. by `tokenizer = Wav2Vec2CTCTokenizer(vocab_file='path/to/custom/vocab.json')`, where vocab_file is the path to vocabulary of German characters. After that you can create a custom Wav2Vec2Processor:
`processor = Wav2Vec2Processor(feature_extractor=Wav2Vec2FeatureExtractor.from_pretrained("facebook/wav2vec2-base"), tokenizer=tokenizer)`

Regarding the model, I'm not completely sure whether you can load the pretrained base model directly or instead convert the fairseq pytorch checkpoint manually. If I understand correctly, the script for converting Wav2Vec2 checkpoint requires letter dictionary (e.g. https://dl.fbaipublicfiles.com/fairseq/wav2vec/dict.ltr.txt). So if the Huggingface Transformers Wav2Vec2 model stores this letter dictionary, you probably need to convert the model manually with your own dict.ltr.txt with German letters included, as well as set the vocabulary size during conversion.