Bioakustik in Potato: Raven-, Audacity- und BirdNET-Detektionen prüfen
Raven-Selection-Tables, Audacity-Labels oder BirdNET-Analyzer-Ausgaben in Potato importieren, Ruf-Boxen auf einem Spektrogramm korrigieren und Raven- oder Audacity-Dateien exportieren.
Potato 2.12.0 prüft und korrigiert Zeit-Frequenz-Boxen auf Aufnahmen von Wildtieren, wenn die Boxen aus Raven, Audacity oder BirdNET-Analyzer stammen. Sie importieren die Tabellen mit ihren Aufnahmen, Annotatoren korrigieren die Boxen auf einem Spektrogramm in einem Schema vom Typ spectrogram_annotation, und die korrigierten Boxen werden zurück nach Raven oder Audacity exportiert.
Potato liest die Ausgabe von BirdNET und führt BirdNET nicht aus. Die BirdNET-Modelle stehen unter CC BY-NC-SA und werden nicht mit Potato verteilt. Führen Sie BirdNET-Analyzer selbst aus und importieren Sie, was es schreibt.
Die Tabellen importieren
# A folder of Raven selection tables with the recordings beside them
potato import -i recordings/ -o review-project/
# BirdNET-Analyzer output, keeping detections with confidence 0.5 or more
potato import -i birdnet-output/ -f birdnet --min-confidence 0.5 -o review-project/
# One Audacity label file (site3_0612.txt next to site3_0612.wav)
potato import -i site3_0612.txt -f audacity_labels -o review-project/-i ist eine einzelne Tabelle oder ein Ordner mit Tabellen. Das Format wird am Inhalt erkannt, und -f raven, -f audacity_labels oder -f birdnet wählt es explizit.
Jede Aufnahme wird zu einem Item, das in den Ordner media/ des Projekts kopiert wird, und jede Zeile ihrer Tabelle wird zu einer Box-Vorannotation, sodass Annotatoren den Clip mit bereits gezeichneten Boxen öffnen. Eine Tabelle wird ihrer Aufnahme über den Namen zugeordnet: site3_0612.Table.1.selections.txt, site3_0612.BirdNET.selection.table.txt, site3_0612.BirdNET.results.csv und site3_0612.txt gehören alle zu site3_0612.wav (oder .flac, .mp3, .ogg, .m4a, .aac, .opus, .webm). Eine Tabelle, die mehrere Aufnahmen abdeckt, nennt sie in einer Spalte Begin File, Begin Path oder File, und ihre Zeilen werden nach dieser Spalte aufgeteilt.
Die Labels des erzeugten Schemas sind die in den Tabellen gefundenen Labels. Ergänzen Sie den Rest Ihrer Arten- oder Ruftypenliste unter labels in config.yaml, damit Annotatoren auch Rufe beschriften können, die die Quelle übersehen hat.
Raven-Selection-Tables
| Raven-Spalte | Potato |
|---|---|
Begin Time (s), End Time (s) | start_s, end_s |
Low Freq (Hz), High Freq (Hz) | low_hz, high_hz |
Selection, View | Zeilen mit derselben Selection-Nummer werden zu einer Box, wobei die Zeile Spectrogram verwendet wird |
Channel | Wird an der Box aufbewahrt, wenn er nicht 1 ist |
Begin File oder Begin Path, File Offset (s) | Die Aufnahme und die Startzeit darin, in einer Tabelle über mehrere Dateien |
Confidence | Wird an der Box aufbewahrt, und --min-confidence filtert danach |
| Eine Annotationsspalte | Das Label |
Das Label kommt aus --label-column NAME, wenn angegeben. Andernfalls kommt es aus der ersten der Spalten Annotation, Species, Label, Class, Scientific Name, Common Name, Species Code, Call Type, Type und Sound Type, die die Tabelle enthält. Eine Zeile mit leerem Label erhält das Label call.
Audacity-Labelspuren
Jede Zeile ist start<TAB>end<TAB>label. Auf ein Label mit spektraler Auswahl folgt eine Zeile, die mit einem Backslash beginnt, \<TAB>low<TAB>high. Labels ohne diese Zeile, Punktlabels eingeschlossen, werden zu Boxen über alle Frequenzen.
Ausgabe von BirdNET-Analyzer
Beide Tabellenformate von BirdNET-Analyzer werden gelesen. Die Raven-Selection-Table (*.BirdNET.selection.table.txt) wird mit ihrer Spalte Scientific Name beschriftet, wenn sie eine hat, sonst mit Common Name. Die CSV (*.BirdNET.results.csv) wird mit dem wissenschaftlichen Namen beschriftet, und ihre Zeilen haben keinen Frequenzbereich, daher werden sie als Boxen über alle Frequenzen importiert. --label-column "Common name" (CSV) oder --label-column "Common Name" (Raven-Tabelle) verwendet stattdessen Trivialnamen.
Zeilen unter --min-confidence (Standard 0.1) werden ausgelassen, und die Importzusammenfassung gibt an, wie viele. BirdNET-Boxen werden mit "source": "ai", "ai_model": "BirdNET" und ihrer Konfidenz gespeichert, und die Seite zeichnet sie mit gestricheltem Rand, bis ein Annotator sie ändert.
Eine Zeile, deren Zeit keine Zahl ist, etwa 3,5 mit Dezimalkomma geschrieben, wird mit einer Warnung ausgelassen, die Datei, Zeile und Wert nennt. Eine Zeile, deren Endzeit vor ihrer Startzeit liegt, wird mit vertauschten Zeiten übernommen, und eine negative Frequenz wird aus der Box entfernt.
Die Boxen prüfen
python potato/flask_server.py start review-project/config.yaml -p 8000Annotatoren verschieben, skalieren, beschriften und löschen Boxen und zeichnen die übersehenen Rufe ein. Spektrogrammannotation listet die Bedienelemente auf. Eine importierte Box erhält "edited": true, sobald sie geändert wird, sodass der Export Boxen, die eine prüfende Person akzeptiert hat, von korrigierten unterscheiden kann. Ein Klick auf Next bei einem Clip, ohne etwas zu ändern, speichert dessen importierte Boxen als Antwort der prüfenden Person, unverändert akzeptiert.
Zurück nach Raven oder Audacity exportieren
python -m potato.export -c review-project/config.yaml -f raven -o export/
python -m potato.export -c review-project/config.yaml -f audacity_labels -o export/raven schreibt eine Selection-Table pro Aufnahme, mit Selection, View, Channel, Begin Time (s), End Time (s), Low Freq (Hz), High Freq (Hz), der Labelspalte (Annotation oder --option label_column=Species) und Confidence, wenn eine Box eine hat. audacity_labels schreibt eine Labeldatei pro Aufnahme, mit einer spektralen Zeile für jede Box, die einen Frequenzbereich hat. Beide benennen die Datei nach der Aufnahme, sodass sie sich mit dem Audio daneben in Raven oder Audacity öffnen und wieder in Potato importieren lassen. Bei mehreren Annotatoren wird der Name des Annotators an den Dateinamen angehängt, und --option annotator=anna exportiert eine einzelne Person.
Beispiel
examples/audio/bioacoustics-boxes/ enthält zwei synthetische Aufnahmen von 6 Sekunden mit Tönen und Frequenz-Sweeps zu bekannten Zeiten und Frequenzen, importiert aus den Raven-Tabellen in seinem Ordner source/. Die Tabellen enthalten zwei zu behebende Fehler: In einer Aufnahme fehlt ein abwärts gerichteter Sweep, und in der anderen ist ein Triller als Pfiff beschriftet.
python potato/flask_server.py start examples/audio/bioacoustics-boxes/config.yaml -p 8000Weiterführende Informationen
- Spektrogrammannotation - Schemaoptionen, Bedienelemente und die gespeicherte Antwort
- Kamerafallen - MegaDetector-Ausgabe prüfen
- Audioannotationswerkzeuge im Vergleich - Audiowerkzeuge nebeneinander
- Projekte importieren - Alle Formate, die
potato importliest
Implementierungsdetails finden Sie in der Quelldokumentation.