> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/curator/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/curator/_mcp/server.

# nemo_curator.stages.audio.filtering.utmos

UTMOS (UTokyo-SaruLab MOS Prediction) filter stage.

Filters audio segments based on UTMOS predicted Mean Opinion Score.
Uses the utmos22\_strong model from tarepan/SpeechMOS via torch.hub.

Accepts in-memory (waveform + sample\_rate) or audio\_filepath input.
Audio is resampled to 16 kHz internally for UTMOS inference.

## Module Contents

### Classes

| Name                                                                              | Description                            |
| --------------------------------------------------------------------------------- | -------------------------------------- |
| [`UTMOSFilterStage`](#nemo_curator-stages-audio-filtering-utmos-UTMOSFilterStage) | UTMOS quality assessment filter stage. |

### Functions

| Name                                                                                        | Description                                                          |
| ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| [`_load_waveform_tensor`](#nemo_curator-stages-audio-filtering-utmos-_load_waveform_tensor) | Extract a mono waveform tensor (1, N) and sample\_rate from an item. |

### Data

[`_UTMOS_ENTRYPOINT`](#nemo_curator-stages-audio-filtering-utmos-_UTMOS_ENTRYPOINT)

[`_UTMOS_REPO`](#nemo_curator-stages-audio-filtering-utmos-_UTMOS_REPO)

[`_UTMOS_TARGET_SR`](#nemo_curator-stages-audio-filtering-utmos-_UTMOS_TARGET_SR)

### API

```python
class nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage(
    mos_threshold: float | None = 3.5,
    sample_rate: int = _UTMOS_TARGET_SR,
    name: str = 'UTMOSFilter',
    batch_size: int = 1,
    resources: nemo_curator.stages.resources.Resources = (lambda: Resources(cpus=1.0...
)
```

Dataclass

**Bases:** [ProcessingStage\[AudioTask, AudioTask\]](/nemo-curator/nemo_curator/stages/base#nemo_curator-stages-base-ProcessingStage)

UTMOS quality assessment filter stage.

Filters audio segments based on the UTMOS predicted MOS score.
The model (utmos22\_strong) is loaded via torch.hub from tarepan/SpeechMOS.
Audio is resampled to 16 kHz for inference.

**Parameters:**

**`mos_threshold`** `float | None` — default: 3.5

Minimum MOS score to pass (None to disable)

---

**`sample_rate`** `int` — default: \_UTMOS\_TARGET\_SR

Target sample rate for UTMOS inference (default 16000)

---

**`batch_size`** `int = 1`

---

**`mos_threshold`** `float | None = 3.5`

---

**`name`** `str = 'UTMOSFilter'`

---

**`resources`** `Resources`

---

**`sample_rate`** `int = _UTMOS_TARGET_SR`

---

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage.__post_init__()
```

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage._ensure_model() -> None
```

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage._process_single(
    task: nemo_curator.tasks.AudioTask
) -> nemo_curator.tasks.AudioTask | None
```

Run UTMOS scoring on a single (non-nested) task.

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage.inputs() -> tuple[list[str], list[str]]
```

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage.outputs() -> tuple[list[str], list[str]]
```

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage.process(
    task: nemo_curator.tasks.AudioTask
) -> nemo_curator.tasks.AudioTask | list[nemo_curator.tasks.AudioTask]
```

Process a single AudioTask and filter by UTMOS MOS score.

When `task.data` contains a `"segments"` key (nested mode from VAD),
each segment is evaluated individually and only survivors are kept.

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage.setup(
    _: nemo_curator.backends.base.WorkerMetadata | None = None
) -> None
```

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage.setup_on_node(
    _node_info: nemo_curator.backends.base.NodeInfo | None = None,
    _worker_metadata: nemo_curator.backends.base.WorkerMetadata | None = None
) -> None
```

```python
nemo_curator.stages.audio.filtering.utmos.UTMOSFilterStage.teardown() -> None
```

```python
nemo_curator.stages.audio.filtering.utmos._load_waveform_tensor(
    item: dict[str, typing.Any],
    task_id: str
) -> tuple[torch.Tensor, int] | None
```

Extract a mono waveform tensor (1, N) and sample\_rate from an item.

Supports waveform (Tensor/ndarray) + sample\_rate or audio\_filepath.
Returns None if unavailable.

```python
nemo_curator.stages.audio.filtering.utmos._UTMOS_ENTRYPOINT = 'utmos22_strong'
```

```python
nemo_curator.stages.audio.filtering.utmos._UTMOS_REPO = 'tarepan/SpeechMOS:v1.2.0'
```

```python
nemo_curator.stages.audio.filtering.utmos._UTMOS_TARGET_SR = 16000
```