Skip to content

--split_tables ignores -o output directory in v2.4.0 (writes to source directory) #916

Description

@kami2012

Describe the bug
When running BirdNET-Analyzer v2.4.0 with --split_tables enabled, the analyzer ignores the output directory specified by the -o / --output argument. Instead, it writes all .csv result files directly into the input source directory alongside the audio files.

This behavior poses significant issues for HPC/Cluster environments:

  • We aim to keep raw audio data (source directories) separate from analysis results.
  • In some environments, source data directories are mounted as read-only or have restricted write access for the user/process.
  • We are currently forced to implement manual "post-processing" scripts to move and clean up files after the analysis, which is prone to errors.

To Reproduce
python3 -m birdnet_analyzer.analyze
/data/input/
-o /data/output/
-c /data/CustomClassifier.tflite
--cc_species_list /data/CustomClassifier_Labels.txt
--min_conf 0.1
--rtype csv
--n_workers 8
--split_tables

Expected behavior
The analyzer should respect the user-defined -o output path and direct all generated .csv sidecar files to that location, regardless of the --split_tables setting.

Desktop (please complete the following information):
Version: 2.4.0
Platform: Linux HPC Cluster
Usage: Python CLI / Custom Classifier

Additional context
My Use Case / Context:
I am processing large-scale datasets (150,000+ audio files). Using a single output file is not feasible because:
It creates a massive performance bottleneck due to write-locking when using multiple workers.
The resulting file would be unmanageably large, especially with lower confidence thresholds.
The --split_tables feature is essential to ensure partial progress is saved in case of job timeouts or failures.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions