more_itertools required for Whisper normaliser
Author: sanchit-gandhi
Pull request: no

### System Info

- `transformers` version: 4.25.0.dev0
- Platform: macOS-12.5-arm64-arm-64bit
- Python version: 3.8.9
- Huggingface_hub version: 0.10.0
- PyTorch version (GPU?): 1.11.0 (False)
- Tensorflow version (GPU?): not installed (NA)
- Flax version (CPU?/GPU?/TPU?): 0.5.1 (cpu)
- Jax version: 0.3.6
- JaxLib version: 0.3.5
- Using GPU in script?: no
- Using distributed or parallel set-up in script?: no

### Who can help?

cc @ArthurZucker

### Information

- [X] The official example scripts
- [ ] My own modified scripts

### Tasks

- [ ] An officially supported task in the `examples` folder (such as GLUE/SQuAD, ...)
- [X] My own task or dataset (give details below)

### Reproduction

The English normaliser for Whisper relies on the `more_itertools` package.

It is imported here:
https://github.com/huggingface/transformers/blob/761b3fad922310457003af2fea6c447768676c8d/src/transformers/models/whisper/english_normalizer.py#L23-L24

And used here:
https://github.com/huggingface/transformers/blob/761b3fad922310457003af2fea6c447768676c8d/src/transformers/models/whisper/english_normalizer.py#L243

Since we import `more_itertools` under the if statement `if is_more_itertools_available()`, the normaliser **fails** if `more_itertools` is **not** installed.

```python
from transformers import WhisperTokenizer

tokenizer = WhisperTokenizer.from_pretrained("openai/whisper-tiny.en")

tokenizer._normalize("the cat")
```

```
File "/home/user/.local/lib/python3.8/site-packages/transformers/models/whisper/tokenization_whisper.py", line 485, in _normalize
    return normalizer(text)
  File "/home/user/.local/lib/python3.8/site-packages/transformers/models/whisper/english_normalizer.py", line 593, in __call__
    s = self.standardize_numbers(s)
  File "/home/user/.local/lib/python3.8/site-packages/transformers/models/whisper/english_normalizer.py", line 497, in __call__
    s = " ".join(word for word in self.process_words(s.split()) if word is not None)
  File "/home/user/.local/lib/python3.8/site-packages/transformers/models/whisper/english_normalizer.py", line 497, in 
    s = " ".join(word for word in self.process_words(s.split()) if word is not None)
  File "/home/user/.local/lib/python3.8/site-packages/transformers/models/whisper/english_normalizer.py", line 243, in process_words
    for prev, current, next in windowed([None] + words + [None], 3):
NameError: name 'windowed' is not defined
```

IMO this is a pretty cryptic error message for the user. Perhaps we can add a warning that `more_itertools` is required for the normaliser? Even better, we implement the `windowed` function ourselves to prevent an extra library dependency that we use for one function.

### Expected behavior

Good: warning that `more_itertools` is not installed
Better: implement the `windowed` function ourselves

Comments:
Totally agree here! If we only use window and it is pretty short, makes sense to implement it! But IIRC it was a pretty long dependency. 

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) are likely to be ignored.

cc @Narsil do you want to take this over? 

Done I think.

Thanks @Narsil!