Skip to content

feat(audio-filtering): annotate-or-filter mode + agent-ready quality stages - #2335

Open
shubhamNvidia wants to merge 1 commit into
NVIDIA-NeMo:mainfrom
shubhamNvidia:agent/filtering
Open

feat(audio-filtering): annotate-or-filter mode + agent-ready quality stages#2335
shubhamNvidia wants to merge 1 commit into
NVIDIA-NeMo:mainfrom
shubhamNvidia:agent/filtering

Conversation

@shubhamNvidia

Copy link
Copy Markdown
Contributor

Contracts: describe() + *_key params on the band, SIGMOS and UTMOS filters, with honest cardinality="filter" so the planner knows these can drop rows.

New functionality

  • action="annotate" vs "filter" — the same stage can now either score every row and keep them all, or score and drop the ones that fail. Previously only dropping was possible, so "show me the quality distribution before I pick a threshold" wasn't expressible.
  • Segment-level scoring (mode="task" | "segments" | "auto") — score a whole file or each segment of a diarized/VAD'd file.
  • In-memory input (input_residency) — score a waveform handed over from the previous stage instead of re-reading the file.

Depends on the agent-ready foundation, #2332 — that must merge first (this branch imports nemo_curator/stages/audio/_agent/, so CI here stays red until it lands).

Adds describe() contracts to the band, SIGMOS and UTMOS filter stages so a planner can tell what each reads and writes, and whether it may drop rows, before running it.

Depends on the agent-ready foundation (nemo_curator/stages/audio/_agent/), which must merge first.

Signed-off-by: Shubham Bhawsar <shbhawsar@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@shubhamNvidia
shubhamNvidia marked this pull request as ready for review August 25, 2026 11:19
@shubhamNvidia
shubhamNvidia requested a review from a team as a code owner August 25, 2026 11:19
@shubhamNvidia
shubhamNvidia requested review from VibhuJawa and removed request for a team August 25, 2026 11:19
@greptile-apps

greptile-apps Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR makes the Band, SIGMOS, and UTMOS quality stages agent-ready and adds configurable annotation/filtering, task/segment scope, input residency, and output keys.

  • Adds stage contracts describing scoped audio I/O, conditional writes, cardinality, and execution gates.
  • Supports retaining scored rows in annotation mode or applying existing thresholds in filter mode.
  • Adds nested segment processing, finite-score handling, stale-score cleanup, and custom payload keys.
  • Extends focused tests for annotation and partial segment-survivor behavior.

Confidence Score: 5/5

The PR appears safe to merge after its explicitly declared prerequisite, #2332, is available.

No independently actionable defect caused by this change remains after accounting for the acknowledged prerequisite and pre-existing behavior.

Important Files Changed

Filename Overview
nemo_curator/stages/audio/filtering/band.py Adds agent-ready contracts, configurable audio resolution and keys, segment scope, and annotate-versus-filter behavior.
nemo_curator/stages/audio/filtering/band_filter_module/predict.py Removes the waveform-derived feature cache so each prediction extracts features directly.
nemo_curator/stages/audio/filtering/sigmos.py Adds configurable contracts and scope/action behavior while atomically writing only complete finite SIGMOS score sets.
nemo_curator/stages/audio/filtering/utmos.py Adds configurable contracts and scope/action behavior, custom score storage, and rejection of non-finite model output.
tests/stages/audio/filtering/test_band.py Covers annotation mode for task-level and nested Band predictions.
tests/stages/audio/filtering/test_sigmos.py Covers native defaults and annotation behavior for task-level and nested SIGMOS scoring.
tests/stages/audio/filtering/test_utmos.py Covers defaults, annotation behavior, nested scoring, and partial segment filtering with custom keys.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[AudioTask] --> B{Scope}
  B -->|task| C[Resolve task audio]
  B -->|segments| D[Resolve each segment]
  C --> E[Band, SIGMOS, or UTMOS inference]
  D --> E
  E --> F[Write configured score keys]
  F --> G{Action}
  G -->|annotate| H[Retain every input item]
  G -->|filter| I[Retain threshold matches]
Loading

Reviews (1): Last reviewed commit: "feat(audio-filtering): make quality filt..." | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant