[ASR] GSS-based mask estimator
State: closed | Pull request: yes
Labels: name: ASR

# What does this PR do ?

Adding GSS mask estimator for use in multispeaker scenarios.

**Collection**: ASR

# Changelog 
- Added an implementation of mask estimator using directional statistics clustering and activity guidance
- Added a unit test to test the module can be initialized and the output has the expected shape

# Usage
```python
import torch
from nemo.collections.asr.modules.audio_modules import MaskEstimatorGSS

batch_size, num_channels, num_subbands, num_frames = 1, 4, 257, 100
num_outputs = 3

# input (mixture) spectrogram
spec = torch.randn(batch_size, num_channels, num_subbands, num_frames, dtype=torch.cfloat)
# estimated source activity
source_activity = torch.randn(batch_size, num_outputs, num_frames) > 0.5
# mask estimator
me = MaskEstimatorGSS(num_iterations=5)
# estimated source masks
masks = me(input=spec, activity=source_activity)

assert masks.shape == (batch_size, num_outputs, num_subbands, num_frames)
```

# 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?
- [ ] 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)


jenkins

jenkins

jenkins

`ImportError while loading conftest '/home/taejinp/projects/gss_mask/NeMo/tests/conftest.py'.
tests/conftest.py:28: in <module>
    from tests.fixtures.tts import *
tests/fixtures/tts.py:21: in <module>
    from nemo.collections.asr.parts.utils.manifest_utils import read_manifest
nemo/collections/asr/__init__.py:15: in <module>
    from nemo.collections.asr import data, losses, models, modules
nemo/collections/asr/models/__init__.py:17: in <module>
    from nemo.collections.asr.models.classification_models import EncDecClassificationModel, EncDecFrameClassificationModel
nemo/collections/asr/models/classification_models.py:29: in <module>
    from nemo.collections.asr.data import audio_to_label_dataset, feature_to_label_dataset
nemo/collections/asr/data/audio_to_label_dataset.py:19: in <module>
    from nemo.collections.asr.data.audio_to_text_dataset import convert_to_config_list, get_chain_dataset
nemo/collections/asr/data/audio_to_text_dataset.py:28: in <module>
    from nemo.collections.asr.data.huggingface.hf_audio_to_text_dataset import (
nemo/collections/asr/data/huggingface/hf_audio_to_text_dataset.py:17: in <module>
    from nemo.collections.asr.data.huggingface.hf_audio_to_text import (
nemo/collections/asr/data/huggingface/hf_audio_to_text.py:34: in <module>
    class HFTextProcessor:
nemo/collections/asr/data/huggingface/hf_audio_to_text.py:55: in HFTextProcessor
    symbols_to_keep: Optional[str | List[str]] = None,
E   TypeError: unsupported operand type(s) for |: 'type' and '_GenericAlias'`

This error keeps appearing regardless of commits so commented when I was running the tests.
This might take some time to pass the test; Note that this error is **nothing to do with this (#7849) PR**.

jenkins