Bioacústica en Potato: revisar detecciones de Raven, Audacity y BirdNET
Importa tablas de selección de Raven, etiquetas de Audacity o la salida de BirdNET-Analyzer a Potato, corrige los rectángulos de las llamadas sobre un espectrograma y exporta archivos de Raven o Audacity.
Potato 2.12.0 comprueba y corrige rectángulos de tiempo-frecuencia sobre grabaciones de fauna cuando los rectángulos proceden de Raven, Audacity o BirdNET-Analyzer. Importas las tablas con sus grabaciones, los anotadores corrigen los rectángulos sobre un espectrograma en un esquema spectrogram_annotation, y los rectángulos corregidos se exportan de vuelta a Raven o Audacity.
Potato lee la salida de BirdNET y no ejecuta BirdNET. Los modelos de BirdNET tienen licencia CC BY-NC-SA y no se distribuyen con Potato. Ejecuta tú BirdNET-Analyzer e importa lo que escribe.
Importar las tablas
# 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 es una tabla o una carpeta de tablas. El formato se detecta a partir del contenido, y -f raven, -f audacity_labels o -f birdnet lo elige explícitamente.
Cada grabación se convierte en un ítem, copiado en la carpeta media/ del proyecto, y cada fila de su tabla se convierte en una preanotación de rectángulo, así que los anotadores abren el clip con los rectángulos ya dibujados. Una tabla se asocia con su grabación por el nombre: site3_0612.Table.1.selections.txt, site3_0612.BirdNET.selection.table.txt, site3_0612.BirdNET.results.csv y site3_0612.txt corresponden todos a site3_0612.wav (o .flac, .mp3, .ogg, .m4a, .aac, .opus, .webm). Una tabla que abarca varias grabaciones las nombra en una columna Begin File, Begin Path o File, y sus filas se reparten según esa columna.
Las etiquetas del esquema generado son las que se encuentran en las tablas. Añade el resto de tu lista de especies o de tipos de llamada a labels en config.yaml, para que los anotadores puedan etiquetar las llamadas que el origen no detectó.
Tablas de selección de Raven
| Columna de Raven | Potato |
|---|---|
Begin Time (s), End Time (s) | start_s, end_s |
Low Freq (Hz), High Freq (Hz) | low_hz, high_hz |
Selection, View | Las filas con el mismo número de selección se convierten en un rectángulo, usando la fila Spectrogram |
Channel | Se conserva en el rectángulo cuando no es 1 |
Begin File o Begin Path, File Offset (s) | La grabación, y el tiempo de inicio dentro de ella, en una tabla de varios archivos |
Confidence | Se conserva en el rectángulo, y --min-confidence filtra por ella |
| Una columna de anotación | La etiqueta |
La etiqueta procede de --label-column NAME cuando se indica. Si no, procede de la primera columna que tenga la tabla entre Annotation, Species, Label, Class, Scientific Name, Common Name, Species Code, Call Type, Type y Sound Type. Una fila con la etiqueta vacía se etiqueta como call.
Pistas de etiquetas de Audacity
Cada línea es start<TAB>end<TAB>label. Una etiqueta con selección espectral va seguida de una línea que empieza con una barra invertida, \<TAB>low<TAB>high. Las etiquetas sin esa línea, incluidas las etiquetas de punto, se convierten en rectángulos sobre todas las frecuencias.
Salida de BirdNET-Analyzer
Se leen los dos formatos de tabla de BirdNET-Analyzer. La tabla de selección de Raven (*.BirdNET.selection.table.txt) se etiqueta con su columna Scientific Name cuando la tiene y, si no, con Common Name. El CSV (*.BirdNET.results.csv) se etiqueta con el nombre científico, y sus filas no tienen rango de frecuencias, así que se importan como rectángulos sobre todas las frecuencias. --label-column "Common name" (CSV) o --label-column "Common Name" (tabla de Raven) usa en su lugar los nombres comunes.
Las filas por debajo de --min-confidence (0.1 por defecto) se dejan fuera, y el resumen de la importación indica cuántas. Los rectángulos de BirdNET se guardan con "source": "ai", "ai_model": "BirdNET" y su confianza, y la página los dibuja con un borde discontinuo hasta que un anotador los modifica.
Una fila cuyo tiempo no es un número, como 3,5 escrito con coma decimal, se deja fuera con una advertencia que nombra el archivo, la línea y el valor. Una fila cuyo tiempo final es anterior al inicial se conserva con los dos tiempos intercambiados, y una frecuencia negativa se elimina del rectángulo.
Revisar los rectángulos
python potato/flask_server.py start review-project/config.yaml -p 8000Los anotadores mueven, redimensionan, reetiquetan y eliminan rectángulos, y dibujan las llamadas que no se detectaron. Anotación de espectrogramas enumera los controles. Un rectángulo importado recibe "edited": true en cuanto se modifica, así que la exportación puede distinguir los rectángulos que un revisor aceptó de los que corrigió. Hacer clic en Next en un clip sin cambiar nada guarda sus rectángulos importados como respuesta del revisor, aceptados sin cambios.
Exportar de vuelta a Raven o Audacity
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 escribe una tabla de selección por grabación, con Selection, View, Channel, Begin Time (s), End Time (s), Low Freq (Hz), High Freq (Hz), la columna de etiqueta (Annotation, o --option label_column=Species) y Confidence cuando algún rectángulo la tiene. audacity_labels escribe un archivo de etiquetas por grabación, con una línea espectral para cada rectángulo que tiene rango de frecuencias. Ambos dan al archivo el nombre de la grabación, así que, con el audio al lado, se abren en Raven o Audacity y pueden volver a importarse a Potato. Con varios anotadores, el nombre del anotador se añade al nombre del archivo, y --option annotator=anna exporta a una sola persona.
Ejemplo
examples/audio/bioacoustics-boxes/ tiene dos grabaciones sintéticas de 6 segundos con tonos y barridos de frecuencia en tiempos y frecuencias conocidos, importadas desde las tablas de Raven de su carpeta source/. Las tablas tienen dos errores que corregir: a una grabación le falta un barrido descendente, y en la otra un trino está etiquetado como silbido.
python potato/flask_server.py start examples/audio/bioacoustics-boxes/config.yaml -p 8000Lecturas adicionales
- Anotación de espectrogramas - Opciones del esquema, controles y la respuesta guardada
- Cámaras trampa - Revisar la salida de MegaDetector
- Herramientas de anotación de audio comparadas - Herramientas de audio una junto a otra
- Importar proyectos - Todos los formatos que lee
potato import
Para detalles de implementación, consulta la documentación fuente.