Skip to main content

Overview

Omnilingual ASR uses the mixture_parquet_asr_dataset format for training and evaluation. This guide shows how to create custom datasets, define asset cards, and integrate them into training workflows.

Dataset Architecture

Mixture Parquet Format

The mixture parquet dataset organizes audio data with language and corpus partitioning:

Required Schema

Each parquet file must contain these columns (defined in /src/omnilingual_asr/datasets/storage/mixture_parquet_storage.py:42-51):

Creating a Custom Dataset

Step 1: Prepare Your Data

Organize audio files and transcriptions:

Step 2: Convert to Parquet

Create parquet files with the required schema:

Step 3: Create Language Distribution File

For weighted sampling during training, create a TSV file with language/corpus statistics:
Example output:

Defining the Dataset Asset Card

Create a YAML asset card for your dataset:
/src/omnilingual_asr/cards/datasets/my_dataset.yaml

Asset Card Fields

Unique identifier for loading the dataset.Type: String
Example: my_custom_dataset
Dataset implementation type. Use mixture_parquet_asr_dataset for parquet-based datasets.Type: String
Value: mixture_parquet_asr_dataset
Path to the dataset directory (should point to version=0 directory).Type: Path
Example: /data/datasets/my_dataset/version=0
Reference to the tokenizer asset card.Type: String
Example: omniASR_tokenizer_written_v2

Integrating with Training

Training Configuration

Reference your dataset in a training recipe:
configs/custom-training.yaml

Weighted Sampling Configuration

Control how different corpora and languages are sampled:
How beta values work (see /src/omnilingual_asr/datasets/storage/mixture_parquet_storage.py:338-397):

Advanced Dataset Features

Multiple Splits

Create train, dev, and test splits:
Access different splits:

Multiple Corpora

Combine multiple corpora in one dataset:

Filtering by Corpus

Train on specific corpus using split naming:
Implementation: See /src/omnilingual_asr/datasets/storage/mixture_parquet_storage.py:400-429

Partition Filters

Filter specific languages during training:

Validation and Testing

Verify Dataset Structure

Test Loading

Best Practices

Ensure all audio is:
  • 16kHz sample rate
  • Mono (single channel)
  • 16-bit PCM (standard WAV format)
Keep partition sizes reasonable:
  • Target: 1000-10000 examples per parquet file
  • Max size: ~500MB per file
  • Split large corpora into multiple part-N.parquet files
Normalize text before creating the dataset:
Verify language IDs are supported:

Troubleshooting

Check:
  1. Dataset path is correct in asset card
  2. Split name matches directory structure: split=train
  3. Parquet files exist in the partition directories
Ensure column names match exactly:
Process large datasets in chunks:

Example: Complete Workflow

Putting it all together: