Why use two types of names? spe refers to the Google sentencepiece library tokenizer. bpe for SentencePiece tokenizer 
The process tokenizer script decides between libraries - spe for sentencepiece, wpe for hugging face wpe. Spe is chosen cause it is possible to have different libraries implement the BPE algorithm - for example we used yttm for a long time which supported BPE for machine translation. 

The Mixin class one refers to the algorithm and not the library. Here, we support two algorithms, BPE (sentencepiece) and WPE (HF). We could potentially habe supported yttm as a BPE algorithm provider, but chose not too since it's a deprecated library. 

As of now we have no intention to support Any tokenizer other than sentencepiece for ASR. Even Hugging face WPE is only used for academic purposes, not for production models  > The process tokenizer script decides between libraries - spe for sentencepiece, wpe for hugging face wpe. Spe is chosen cause it is possible to have different libraries implement the BPE algorithm - for example we used yttm for a long time which supported BPE for machine translation.
> 
> The Mixin class one refers to the algorithm and not the library. Here, we support two algorithms, BPE (sentencepiece) and WPE (HF). We could potentially habe supported yttm as a BPE algorithm provider, but chose not too since it's a deprecated library.
> 
> As of now we have no intention to support Any tokenizer other than sentencepiece for ASR. Even Hugging face WPE is only used for academic purposes, not for production models

Got it, thank you for your reply!
We can see this annotation (scripts/tokenizers/process_asr_text_tokenizer.py) :
![image](https://github.com/NVIDIA/NeMo/assets/20372403/f6e6fc5b-a7d6-4444-95b7-2c566e001f59)

and than (nemo/collections/asr/parts/mixins.py):
![image](https://github.com/NVIDIA/NeMo/assets/20372403/518aa7ea-4e7f-42c8-97f4-e82c0f51d517)

spe refers to the Google sentencepiece library tokenizer
bpe for SentencePiece tokenizer 

Are they same tokenizer  ?