# How to tune inference clipping

Use this guide when long recordings need to be split into smaller clips during inference.

## What clipping controls

`InferenceConfig.clipping` controls how recordings are split before batching.

Key fields are:

- `duration`: clip duration in seconds,
- `overlap`: overlap between adjacent clips,
- `max_empty`: how much empty padding is allowed,
- `discard_empty`: whether empty clips are dropped.

## Start from the defaults

Use the built-in clipping behavior first unless you already know you need something else.

Only tune clipping when:

- recordings are much longer than your normal working set,
- you are seeing edge effects around calls,
- you need tighter control over throughput or padding behavior.

## Override clipping with an inference config

Create an inference config file and pass it to `predict` or `evaluate`.

Example:

```yaml
clipping:
  enabled: true
  duration: 0.5
  overlap: 0.1
  max_empty: 0.0
  discard_empty: true
loader:
  batch_size: 8
```

Run with:

```bash
batdetect2 predict directory \
  path/to/model.ckpt \
  path/to/audio_dir \
  path/to/outputs \
  --inference-config path/to/inference.yaml
```

## Validate clipping changes on a small reviewed subset

Changing clipping changes what the model sees per batch and can change how events near clip boundaries behave.

Check a reviewed subset before applying clipping changes to a full project.

## Related pages

- Inference config reference: {doc}`../reference/inference-config`
- Run batch predictions: {doc}`run-batch-predictions`
- Understanding the pipeline: {doc}`../explanation/pipeline-overview`
