Skip to main content

nocturne-fieldrecordist

Combined BirdNET + Nocturne bioacoustic classification for wildlife field-recordist libraries.

  • BirdNET ≈ 3,000 bird species (runs locally via birdnetlib)
  • Nocturne ≈ 2,182 non-bird species — insects, amphibians, non-bird mammals, reptiles (Stratus Labs hosted API at nocturne.runstratus.com)
  • Scan a directory → get a species-tagged SQLite catalog searchable by species, model, confidence
  • Ships with a Reaper action that adds species markers to a selected media item

Built by Stratus Labs. Nocturne itself is Apache-2.0; BirdNET is licensed separately (see the BirdNET-Analyzer repo).

Install

pip install nocturne-fieldrecordist

This pulls in nocturne-client, birdnetlib, and tensorflow (BirdNET's runtime). Total install ~2 GB. First run of BirdNET downloads the model (~50 MB, cached).

Scan a library

nocturne-fr scan ~/recordings --db library.sqlite

Recurses into subdirectories; audio extensions: .wav .flac .mp3 .m4a .ogg .aif .aiff. Skips files already in the DB unless you pass --reprocess. Progress prints to stderr; a JSON summary lands on stdout.

Classify a single clip

nocturne-fr classify path/to/clip.wav

Prints a JSON list of detections from both models.

Query the catalog

# All Nocturne detections above 0.3 confidence, limit 50
nocturne-fr query --db library.sqlite --model nocturne --min-conf 0.3 --limit 50

# Everything matching "wren" (either BirdNET or Nocturne, any confidence)
nocturne-fr query --db library.sqlite --species wren

Python API

from nocturne_fieldrecordist import DualClassifier, scan_path

dc = DualClassifier(birdnet_min_conf=0.5, nocturne_min_conf=0.2, nocturne_top_k=5)
for det in dc.classify("recording.wav"):
    print(det.source_model, det.species, det.confidence, det.start_time_s)

# Or scan a whole tree:
summary = scan_path("~/recordings", db_path="library.sqlite", dc=dc)

Reaper integration

Install the action from nocturne_fieldrecordist/reaper/nocturne_reaper.py:

  1. Set Reaper's ReaScript Python interpreter to the same env where you pip installed this package (Preferences → Plug-ins → ReaScript).
  2. Actions → Load ReaScript → select nocturne_reaper.py.
  3. Optional: bind a keyboard shortcut.

Select a media item, trigger the action, and get one Reaper marker per detection: [bir] Passer domesticus (0.87) or [noc] Neoconocephalus triops (0.42). BirdNET markers get one color, Nocturne another.

Tunables

  • --birdnet-min-conf (default 0.5) — BirdNET's author recommends ≥0.5.
  • --nocturne-min-conf (default 0.15) — Nocturne v1's per-class-calibrated thresholds sit around 0.15-0.30 across the vocab.
  • --top-k (default 3) — how many Nocturne predictions to keep per file.

Nocturne API auth

Anonymous is fine (rate-limited to 10 req/min per IP). For batch libraries pass a paid-tier key:

export NOCTURNE_KEY=ck_...
nocturne-fr scan ~/recordings --db library.sqlite --nocturne-key $NOCTURNE_KEY

Sign up at nocturne.runstratus.com/pricing.

SQLite schema

Two tables: recordings (one row per audio file) and detections (one row per model prediction). See schema.sql for indexes + full columns. The catalog file is portable — copy it, ship it to a Flask app, load it in DB Browser, whatever fits your workflow.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nocturne_fieldrecordist-0.1.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nocturne_fieldrecordist-0.1.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file nocturne_fieldrecordist-0.1.0.tar.gz.

File metadata

  • Download URL: nocturne_fieldrecordist-0.1.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.5

File hashes

Hashes for nocturne_fieldrecordist-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8f0927e237a76a553faccc01c6397d7a17aac2c28e25badd591afb7633273187
MD5 5889e8cf3bd83debaf124d2613aa08cb
BLAKE2b-256 1f4efdda02df09efd448731114de9a0c320182515ad847d3cd3589dc99d6e774

See more details on using hashes here.

File details

Details for the file nocturne_fieldrecordist-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nocturne_fieldrecordist-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 17e284c26ae79b86c3b04cfd002c536a36dfa80e4672e4c31bfba1767ee8a11c
MD5 21c02c7aa19034d7837159b0f37f3e4a
BLAKE2b-256 4df7946bd13ba7c56d7f3f5c506132b406a6e47987b99721432369751ea3559d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page