Code switching
# What does this PR do ?

* Adds scripts for synthetic code-switched data generation for ASR
* Adds the En-Es code-switched ASR models (stt_enes_conformer_transducer_large_codesw and stt_enes_conformer_ctc_large_codesw)

**Collection**:  ASR

# Changelog 
- Lines 537 - 543 in nemo/collections/asr/models/ctc_bpe_models.py
- Lines 200 - 206 in nemo/collections/asr/models/rnnt_bpe_models.py
- File code_switching_audio_data_creation.py in scripts/speech_recognition/code_switching/
- File code_switching_manifest_creation.py in scripts/speech_recognition/code_switching/
- File README.md in scripts/speech_recognition/code_switching/

# Usage
1. Create the (intermediate) manifest file using `code_switching_manifest_creation.py`.  It's usage is as follows:

    `python code_switching_manifest_creation.py --manifest_language1 <absolute path of Language 1's manifest file> --manifest_language2 <absolute path of Language 2's manifest file> --manifest_save_path <absolute path to save the created manifest> --id_language1 <language code for language 1 (e.g. en)> --id_language2 <language code for language 2 (e.g. es)> --max_sample_duration_sec <maximum duration of generated sample in seconds> --min_sample_duration_sec <maximum duration of generated sample in seconds> --dataset_size_required_hrs <size of generated synthetic dataset required in hrs>`

2. Create the syntheic audio data and the corresponding manifest file using `code_switching_audio_data_creation.py` It's usage is as follows: 

    `python code_switching_audio_data_creation.py --manifest_path <absolute path to intermediate CS manifest generated in step 1> --audio_save_folder_path <absolute path to directory where you want to save the snythesized audios> --manifest_save_path <absolute path to save the created manifest> --audio_normalized_amplitude <sclaed normalized amplitude desired> --sample_beginning_pause_msec <pause to be added to the beginning of the generated sample in milli seconds> --sample_joining_pause_msec <pause to be added between segments while joining, in milli seconds> --sample_end_pause_msec <pause to be added to the end of the generated sample in milli seconds> `


# Before your PR is "Ready for review"
**Pre checks**:
- [x] Make sure you read and followed [Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md)
- [ ] Did you write any new necessary tests?
- [ ] Did you add or update any necessary documentation?
- [ ] Does the PR affect components that are optional to install? (Ex: Numba, Pynini, Apex etc)
  - [ ] Reviewer: Does the PR have correct import guards for all optional libraries?
  
**PR Type**:
- [x] New Feature
- [ ] Bugfix
- [ ] Documentation

If you haven't finished some of the above items you can still open "Draft" PR.


## Who can review?

Anyone in the community is free to review the PR once the checks have passed. 
[Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md) contains specific people who can review PRs to various areas.


