Spoken Language Identification
# What does this PR do ?

Add training script and config (titanet) for spoken language identification. 

**Collection**:ASR

# Changelog 
- Calculate weight for using weighted cross entropy for imbalanced training set.
- Add val_acc_macro and val_auroc for model selection. Support test_acc_macro and test_aucro as well.
- Extend speech_to_label.py to support language identification.
- Add model config file which achieves SOTA performance on voxlingua107.


# Usage
```python
python speech_to_label.py  --config-path="../conf/lang_id" --config-name="titanet_large" \
model.train_ds.manifest_filepath=<train_manifest> \
model.validation_ds.manifest_filepath=<dev_manifest> \
model.train_ds.augmentor.noise.manifest_path=<noise_manifest>  \
model.train_ds.augmentor.impulse.manifest_path=<impulse_manifest>  \
exp_manager.wandb_logger_kwargs.name="titanet_large" \
exp_manager.wandb_logger_kwargs.project="lang_id" \
+exp_manager.checkpoint_callback_params.monitor="val_acc_macro" \
+exp_manager.checkpoint_callback_params.mode="max" 

```

# 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)
- [x] Did you write any new necessary tests?
- [ ] Did you add or update any necessary documentation? 
        [doc will be updated in next PR]
- [ ] 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.

# Additional Information
* Related to # (issue)
