ba4be087d5
Create PR to main with cherry-pick from release / cherry-pick (push) Failing after 0s
CICD NeMo / pre-flight (push) Failing after 0s
CICD NeMo / configure (push) Has been skipped
Build, validate, and release Neural Modules / pre-flight (push) Failing after 1s
CICD NeMo / code-linting (push) Has been skipped
Build, validate, and release Neural Modules / release (push) Has been skipped
Build, validate, and release Neural Modules / release-summary (push) Has been cancelled
CICD NeMo / cicd-test-container-build (push) Has been cancelled
CICD NeMo / cicd-import-tests (push) Has been cancelled
CICD NeMo / L0_Setup_Test_Data_And_Models (push) Has been cancelled
CICD NeMo / cicd-main-unit-tests (push) Has been cancelled
CICD NeMo / cicd-main-speech (push) Has been cancelled
CICD NeMo / Nemo_CICD_Test (push) Has been cancelled
CICD NeMo / Coverage (e2e) (push) Has been cancelled
CICD NeMo / Coverage (unit-test) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
CICD NeMo / cicd-wait-in-queue (push) Has been cancelled
146 lines
4.6 KiB
Markdown
146 lines
4.6 KiB
Markdown
Speech Data Explorer
|
|
--------------------
|
|
|
|
[Dash](https://plotly.com/dash/)-based tool for interactive exploration of ASR/TTS datasets.
|
|
|
|
Features:
|
|
- dataset's statistics (alphabet, vocabulary, duration-based histograms)
|
|
- navigation across dataset (sorting, filtering)
|
|
- inspection of individual utterances (waveform, spectrogram, audio player)
|
|
- errors' analysis (Word Error Rate, Character Error Rate, Word Match Rate, Mean Word Accuracy, diff)
|
|
- comparison of two ASR models using interactive word-level accuracy plot
|
|
- read manifests and audio directly from S3-compatible storage (including AIStore)
|
|
- support for tarred audio datasets with efficient byte-range reads via DALI index files
|
|
|
|
## Quick Start
|
|
|
|
Install the requirements:
|
|
```
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
Run with a local manifest:
|
|
```
|
|
python data_explorer.py path_to_manifest.json
|
|
```
|
|
|
|
## S3 / AIStore Support
|
|
|
|
Speech Data Explorer can read manifests and audio files directly from S3-compatible
|
|
object storage, including NVIDIA AIStore (AIS).
|
|
|
|
### Using an S3 config file
|
|
|
|
```
|
|
python data_explorer.py s3://bucket/manifest.json --s3cfg ~/.s3cfg[default]
|
|
```
|
|
|
|
### Using AIStore with environment variables
|
|
|
|
```
|
|
export AIS_ENDPOINT=http://ais-gateway:8080
|
|
export AIS_AUTHN_TOKEN=your_token
|
|
python data_explorer.py s3://bucket/manifest.json --s3cfg AIS
|
|
```
|
|
|
|
### Sharded paths (`_OP_/_CL_` syntax)
|
|
|
|
Manifests and tar files are often split into numbered shards. Instead of listing
|
|
every shard explicitly, use the `_OP_start..end_CL_` range pattern. The tool
|
|
expands it into individual paths automatically:
|
|
|
|
```
|
|
s3://bucket/manifest__OP_0..255_CL_.json
|
|
→ s3://bucket/manifest_0.json
|
|
s3://bucket/manifest_1.json
|
|
...
|
|
s3://bucket/manifest_255.json
|
|
```
|
|
|
|
Multiple ranges in a single path produce a **cartesian product** — useful when
|
|
shards are spread across several buckets or directories:
|
|
|
|
```
|
|
s3://store_OP_1..2_CL_/audio__OP_0..1_CL_.tar
|
|
→ s3://store1/audio_0.tar
|
|
s3://store1/audio_1.tar
|
|
s3://store2/audio_0.tar
|
|
s3://store2/audio_1.tar
|
|
```
|
|
|
|
### Tarred audio
|
|
|
|
When audio is stored in tar archives locally or on S3, use `--tar-base-path` to
|
|
point to the tar files. DALI index files are used automatically (if available at
|
|
`<tar_dir>/dali_index/`) for fast byte-range lookups:
|
|
|
|
```
|
|
python data_explorer.py /data/manifests/manifest.json \
|
|
--tar-base-path /data/tarred/audio.tar
|
|
```
|
|
|
|
```
|
|
python data_explorer.py s3://bucket/manifests/manifest__OP_0..255_CL_.json \
|
|
--tar-base-path s3://bucket/tarred/audio__OP_0..255_CL_.tar \
|
|
--s3cfg ~/.s3cfg[default]
|
|
```
|
|
|
|
You can also specify a custom DALI index location:
|
|
```
|
|
python data_explorer.py s3://bucket/manifest.json \
|
|
--tar-base-path s3://bucket/tarred/audio__OP_0..255_CL_.tar \
|
|
--dali-index-base s3://bucket/tarred/dali_index/ \
|
|
--s3cfg ~/.s3cfg[default]
|
|
```
|
|
|
|
## Comparing Two ASR Models
|
|
|
|
### Single manifest with two prediction fields
|
|
|
|
If your manifest contains two `pred_text_*` fields (e.g. `pred_text_contextnet`
|
|
and `pred_text_conformer`):
|
|
|
|
```
|
|
python data_explorer.py path_to_manifest.json \
|
|
-nc pred_text_contextnet pred_text_conformer
|
|
```
|
|
|
|
### Two separate manifests
|
|
|
|
You can also pass two separate manifests (order-invariant). Each manifest must
|
|
contain a plain `pred_text` field, and `-nc` names the models:
|
|
|
|
```
|
|
python data_explorer.py manifest_model_A.json manifest_model_B.json \
|
|
-nc pred_text_model_A pred_text_model_B
|
|
```
|
|
|
|
## Manifest Format
|
|
|
|
JSON manifest file should contain the following fields:
|
|
- `audio_filepath` — path to audio file (local path, or filename inside a tar archive when using `--tar-base-path`)
|
|
- `duration` — duration of the audio file in seconds
|
|
- `text` — reference transcript
|
|
|
|
Errors' analysis requires `pred_text` (ASR transcript) for all utterances.
|
|
|
|
Any additional field will be parsed and displayed in the Samples tab.
|
|
|
|
## Additional Options
|
|
|
|
| Flag | Description |
|
|
|------|-------------|
|
|
| `--vocab` | Vocabulary file to highlight OOV words |
|
|
| `--port` | Serving port (default: 8050) |
|
|
| `--estimate-audio-metrics` / `-a` | Estimate audio metrics |
|
|
| `--base-path` | Base path for relative audio paths in the manifest |
|
|
| `--tar-base-path` | Local or S3 path to tarred audio files (supports sharded `_OP_..._CL_` patterns) |
|
|
| `--dali-index-base` | Local or S3 path to DALI index directory for fast tar lookups |
|
|
| `--s3cfg` / `-s3c` | S3 config file and section, or `AIS` for AIStore env vars |
|
|
| `--force` / `-f` | Tolerate manifest entries with missing required fields |
|
|
| `-nc` / `--names_compared` | Two field names for model comparison |
|
|
| `--show_statistics` / `-shst` | Field name to show statistics for |
|
|
| `--debug` / `-d` | Enable debug mode |
|
|
|
|

|