Skip to content

Configuration

Configuration is represented by immutable dataclasses in Python and by CLI flags for command-line use.

Conversion Defaults

ConversionConfig controls conversion and validation:

Field Default Meaning
output_format wav Converted format, wav or flac.
sample_rate 16000 Target sample rate.
channels 1 Target channel count.
num_workers 4 Parallel conversion workers.
min_duration_sec 0.5 Minimum valid output duration.
overwrite False Force regeneration of existing outputs.
normalize_loudness False Apply FFmpeg loudnorm.

CLI:

audio-prep convert \
    --input-dir data/raw_mp3 \
    --output-dir data/flac16k \
    --format flac \
    --sample-rate 16000 \
    --channels 1 \
    --workers 8

Python:

from audio_prep import ConversionConfig

config = ConversionConfig(
    output_format="flac",
    sample_rate=16_000,
    channels=1,
    num_workers=8,
)

Invalid values raise ValueError.

Chunking Defaults

ChunkConfig controls VAD chunking:

Field Default Meaning
min_duration_sec 5.0 Drop chunks shorter than this duration.
max_duration_sec 20.0 Split longer speech into windows at this duration.
output_format wav Chunk format, wav or flac.
sample_rate None Preserve native rate unless a target is supplied.
num_workers 1 Parallel chunking workers for Python API use.
overwrite False Force regeneration of valid existing chunks.
allow_energy_fallback False Use the energy detector if Silero cannot load.

CLI:

audio-prep chunk \
    --input-dir data/raw_mp3 \
    --output-dir data/chunks \
    --format flac \
    --sample-rate 16000 \
    --min-duration-sec 5 \
    --max-duration-sec 20 \
    --workers 4

Python:

from audio_prep import ChunkConfig

config = ChunkConfig(
    min_duration_sec=5,
    max_duration_sec=20,
    output_format="flac",
    sample_rate=16_000,
    num_workers=4,
)

The CLI sets --sample-rate 16000 for chunking by default. The Python API default is None, which preserves the source sample rate.