> 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.datasets.fleurs.create_initial_manifest

## Module Contents

### Classes

| Name                                                                                                                                      | Description                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| [`CreateInitialManifestFleursStage`](#nemo_curator-stages-audio-datasets-fleurs-create_initial_manifest-CreateInitialManifestFleursStage) | Create initial manifest for the FLEURS dataset. |

### Functions

| Name                                                                                                              | Description                                                                          |
| ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| [`get_fleurs_filenames`](#nemo_curator-stages-audio-datasets-fleurs-create_initial_manifest-get_fleurs_filenames) | Return the repo-relative (transcript\_tsv, audio\_archive) paths in `google/fleurs`. |

### Data

[`FLEURS_HF_REPO_ID`](#nemo_curator-stages-audio-datasets-fleurs-create_initial_manifest-FLEURS_HF_REPO_ID)

### API

```python
class nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage(
    name: str = 'CreateInitialManifestFleurs',
    lang: str = '',
    split: str = '',
    raw_data_dir: str = '',
    filepath_key: str = 'audio_filepath',
    text_key: str = 'text',
    batch_size: int = 1,
    cache_dir: str | None = None,
    auto_download: bool = True
)
```

Dataclass

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

Create initial manifest for the FLEURS dataset.

Dataset link: [https://huggingface.co/datasets/google/fleurs](https://huggingface.co/datasets/google/fleurs)

Downloads all files, extracts them, and emits one `AudioTask` per
transcript line keyed by `filepath_key` and `text_key`.

**Parameters:**

**`lang`** `str` — default: ''

Language code (e.g. `"hy_am"` for Armenian).

---

**`split`** `str` — default: ''

Dataset split (`"test"`, `"train"`, or `"dev"`).

---

**`raw_data_dir`** `str` — default: ''

Parent folder for per-language staging. Each language is
downloaded under `&lt;raw_data_dir&gt;/&lt;lang&gt;/` so distinct languages
never collide on `&#123;split&#125;.tsv` / `&#123;split&#125;/` filenames. When
`auto_download=False` this is the parent of the pre-staged layout
produced by `benchmarking/data_prep/prepare_fleurs_data.py`.

---

**`filepath_key`** `str` — default: 'audio\_filepath'

Key name used for the audio file path in each emitted entry.

---

**`text_key`** `str` — default: 'text'

Key name used for the transcript text in each emitted entry.

---

**`cache_dir`** `str | None` — default: None

Optional Hugging Face cache directory for the downloaded files.
When `None` the default Hugging Face cache (`HF_HOME`) is used.
Only used on the one-time download path.

---

**`auto_download`** `bool` — default: True

Controls behavior only when the dataset has never been
populated. When `True` (default) the dataset is fetched from Hugging
Face exactly once and staged into `&lt;raw_data_dir&gt;/&lt;lang&gt;/` (transcript +
extracted audio); every subsequent run finds it on disk and performs no
network I/O. When `False` the stage never downloads and requires the
dataset to be pre-staged (e.g. by
`benchmarking/data_prep/prepare_fleurs_data.py`).

---

**`auto_download`** `bool = True`

---

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

---

**`cache_dir`** `str | None = None`

---

**`filepath_key`** `str = 'audio_filepath'`

---

**`lang`** `str = ''`

---

**`name`** `str = 'CreateInitialManifestFleurs'`

---

**`raw_data_dir`** `str = ''`

---

**`split`** `str = ''`

---

**`text_key`** `str = 'text'`

---

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.__post_init__() -> None
```

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage._prestaged_paths(
    dst_folder: str
) -> tuple[str, str]
```

Return the expected `(transcript_tsv, audio_root)` paths under `dst_folder`.

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.download_extract_files(
    dst_folder: str
) -> tuple[str, str]
```

Download the FLEURS transcript + audio archive once and stage them in `dst_folder`.

Uses `huggingface_hub.hf_hub_download` (which retries transient HTTP
errors including 429 with backoff). The audio archive is extracted into
`&lt;dst_folder&gt;/&lt;split&gt;/` and the transcript is copied to
`&lt;dst_folder&gt;/&lt;split&gt;.tsv` so subsequent runs find the dataset on disk
and skip the download entirely.

**Returns:** `str`

Tuple of `(transcript_tsv_path, audio_root)` where both live under

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.inputs() -> tuple[list[str], list[str]]
```

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.is_prestaged(
    dst_folder: str
) -> bool
```

True when the dataset is already staged on disk (transcript + audio present).

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.language_data_dir() -> str
```

Return the per-language download directory under `raw_data_dir`.

Every FLEURS language ships the same `&#123;split&#125;.tsv` / `&#123;split&#125;/` layout,
so distinct languages must be staged in separate folders. Without this,
a second language run against the same `raw_data_dir` would silently reuse
the first language's cached audio and transcripts.

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.locate_prestaged_files(
    dst_folder: str
) -> tuple[str, str]
```

Locate a pre-staged FLEURS transcript + extracted audio (no download).

Expects the on-disk layout produced either by a prior auto-download run or
by `benchmarking/data_prep/prepare_fleurs_data.py`:
`&lt;dst_folder&gt;/&lt;split&gt;.tsv` (transcript) and `&lt;dst_folder&gt;/&lt;split&gt;/`
(extracted `.wav` files).

**Returns:** `tuple[str, str]`

Tuple of `(transcript_tsv_path, audio_root)`.

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.outputs() -> tuple[list[str], list[str]]
```

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.process(
    _: nemo_curator.tasks.EmptyTask
) -> list[nemo_curator.tasks.AudioTask]
```

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.CreateInitialManifestFleursStage.process_transcript(
    file_path: str,
    audio_root: str
) -> list[nemo_curator.tasks.AudioTask]
```

Parse transcript TSV file and emit one AudioTask per line.

**Parameters:**

**`file_path`** `str`

Path to the transcript `.tsv` file.

---

**`audio_root`** `str`

Directory containing the extracted `.wav` files.

---

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.get_fleurs_filenames(
    lang: str,
    split: str
) -> tuple[str, str]
```

Return the repo-relative (transcript\_tsv, audio\_archive) paths in `google/fleurs`.

examples
"data/hy\_am/dev.tsv"
"data/hy\_am/audio/dev.tar.gz"

```python
nemo_curator.stages.audio.datasets.fleurs.create_initial_manifest.FLEURS_HF_REPO_ID = 'google/fleurs'
```