This page is for version 25.09 · v1.0.0.
For other versions, use one of these documentation indexes:
- Latest · v1.4.0 (26.09) (default): https://docs.nvidia.com/nemo/curator/latest/llms.txt
- Main · preview: https://docs.nvidia.com/nemo/curator/main/llms.txt
- 26.09 · v1.4.0: https://docs.nvidia.com/nemo/curator/v26.09/llms.txt
- 26.07 · v1.3.0: https://docs.nvidia.com/nemo/curator/v26.07/llms.txt
- 26.04 · v1.2.0: https://docs.nvidia.com/nemo/curator/v26.04/llms.txt
- 26.02 · v1.1.0: https://docs.nvidia.com/nemo/curator/v26.02/llms.txt
- 25.09 · v1.0.0: https://docs.nvidia.com/nemo/curator/v25.09/llms.txt
AudioBatch is the task type for audio processing in NeMo Curator.
Import
from nemo_curator.tasks import AudioBatch
Class Definition
from dataclasses import dataclass@dataclassclass AudioBatch(Task[dict | list[dict]]):"""Task containing audio data for processing.Attributes:task_id: Unique identifier for this batch.dataset_name: Name of the source dataset.data: Audio manifest data (dict or list of dicts)."""task_id: strdataset_name: strdata: dict | list[dict]
Audio Manifest Format
Audio data follows the NeMo manifest format:
{"audio_filepath": "/path/to/audio.wav","duration": 5.2,"text": "Transcription text...","speaker": "speaker_001","metadata": {"sample_rate": 16000,"channels": 1}}
Properties
num_items
Get the number of audio samples in the batch.
@propertydef num_items(self) -> int:"""Returns the number of audio samples."""
Creating AudioBatch
from nemo_curator.tasks import AudioBatch# Single manifest entrymanifest = {"audio_filepath": "/data/audio/sample.wav","duration": 5.2,"text": "Hello world",}batch = AudioBatch(task_id="audio_001",dataset_name="speech_dataset",data=manifest,)# Multiple entriesmanifests = [{"audio_filepath": "/data/audio/s1.wav", "duration": 3.1},{"audio_filepath": "/data/audio/s2.wav", "duration": 4.5},]batch = AudioBatch(task_id="audio_batch_001",dataset_name="speech_dataset",data=manifests,)
Usage in Stages
from dataclasses import dataclassfrom nemo_curator.stages.base import ProcessingStagefrom nemo_curator.tasks import AudioBatch@dataclassclass DurationFilterStage(ProcessingStage[AudioBatch, AudioBatch]):"""Filter audio by duration."""name: str = "DurationFilter"min_duration: float = 1.0max_duration: float = 30.0def inputs(self) -> tuple[list[str], list[str]]:return ["data"], []def outputs(self) -> tuple[list[str], list[str]]:return ["data"], []def process(self, task: AudioBatch) -> AudioBatch | None:data = task.data# Handle both single dict and listif isinstance(data, dict):data = [data]filtered = [item for item in dataif self.min_duration <= item.get("duration", 0) <= self.max_duration]if not filtered:return Nonereturn AudioBatch(task_id=f"{task.task_id}_filtered",dataset_name=task.dataset_name,data=filtered if len(filtered) > 1 else filtered[0],_metadata=task._metadata,_stage_perf=task._stage_perf,)
Common Operations
ASR Transcription
def process(self, task: AudioBatch) -> AudioBatch:data = task.data if isinstance(task.data, list) else [task.data]for item in data:audio_path = item["audio_filepath"]item["text"] = self.asr_model.transcribe(audio_path)return AudioBatch(task_id=f"{task.task_id}_{self.name}",dataset_name=task.dataset_name,data=data if len(data) > 1 else data[0],_metadata=task._metadata,_stage_perf=task._stage_perf,)
Quality Scoring
def process(self, task: AudioBatch) -> AudioBatch:data = task.data if isinstance(task.data, list) else [task.data]for item in data:if "text" in item and "reference_text" in item:item["wer"] = compute_wer(item["reference_text"], item["text"])return AudioBatch(task_id=f"{task.task_id}_{self.name}",dataset_name=task.dataset_name,data=data if len(data) > 1 else data[0],_metadata=task._metadata,_stage_perf=task._stage_perf,)