Code Monkey home page Code Monkey logo

birdnet-analyzer's Issues

analyzing mp3 detects file, but triggers "cannot open audio file"

Have 1h WAV recordings which are about 1.3GB.
analyze.py works fine

this code in python works fine to convert the WAV into mp3 reducing from 1.3GB to 28mb:
from pydub import AudioSegment
AudioSegment.converter = "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe"
AudioSegment.from_wav("C:\\temp\\birdanalyzer\\file.WAV").export("C:/temp/birdanalyzer/test_mp3/file.mp3", format="mp3")

but running
python3 analyze.py --i C:\temp\birdanalyzer\test_mp3\ --o C:\temp\birdanalyzer\test_mp3\results\

outputs:
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
Found 1 files to analyze
Analyzing C:\temp\birdanalyzer\test_mp3\file.mp3
Error: Cannot open audio file C:\temp\birdanalyzer\test_mp3\file.mp3

I can open the mp3 in Audacity and seems fine.
Any clue why the script "cannot open audio file"?

Docker Build Failure

I'm trying to build birdnet on docker.

I am using the following:
[1] Mac Mini M1 with macOS Monterey version 12.3.1,
[2] Docker Desktop version 4.7.1 (77678)

The error I'm getting is below:

=> ERROR [4/5] RUN pip3 install tensorflow 0.7s

[4/5] RUN pip3 install tensorflow:
#8 0.640 ERROR: Could not find a version that satisfies the requirement tensorflow (from versions: none)
#8 0.640 ERROR: No matching distribution found for tensorflow


executor failed running [/bin/sh -c pip3 install tensorflow]: exit code: 1

pyinstaller: bundle BirdNET-Analyzer to single package

I used the pyinstaller package to bundle the analyze.py with all its dependencies to a single package. With that it isn't required to install a Python interpreter or any module to use BirdNET-Analyzer. The described approach should be valid for both Linux and Windows:

Install pyinstaller (within your virtual environment):

pip install pyinstaller

Create a folder extra-hooks with a new file hook-librosa.py and add the following lines to hook-librosa.py:

from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('librosa')
hiddenimports=['scipy._lib.messagestream', 'sklearn.tree', 'sklearn.neighbors.typedefs','sklearn.neighbors._partition_nodes', 'sklearn.neighbors.quad_tree', 'sklearn.tree._utils', 'sklearn.utils._typedefs']

According to this Problem (which seems to be Windows-specific) you have to add 2 lines to analyze.py. First you can add freeze_support to line 8:

from multiprocessing import Pool, freeze_support

and the following line straight after the if __name__ == '__main__' line:

freeze_support()

Run pyinstaller:

pyinstaller analyze.py --additional-hooks-dir=extra-hooks

After that the bundled package can be found under dist/analyze/
Till this feature request is solved, the checkpoints folder and the eBird_taxonomy_codes file has to be located in the same directory from which you call the executable. That means immediately after packaging you can use the executable like this (for Linux/Windows):

dist/analyze/analyze --i example/ --o example/ --slist example/ --min_conf 0.5 --threads 4
dist/analyze/analyze.exe --i example/ --o example/ --slist example/ --min_conf 0.5 --threads 4

Note:
For maximum compatibility with different hardware don't use the default tensorflow wheels used by pip. I used this tensorflow wheel with python 3.8 under windows. For Linux I recommend to search a fitting wheel in the tensorflow-community-wheels. With that I used BirdNET-Lite and BirdNET-Analyzer succesfully on a Intel Celeron CPU 847 with 1.1 GHz.

"Error: Cannot open audio file ..." on some mp3 files, but not others.

I'm running BirdNET Analyzer from the command line in Windows, and can't figure out the following strange problem. I have a folder full of mp3 files all from the same audio recorder. BirdNET Analyzer processes many of them, but not all of them. For the audio files it doesn't process, it gives the error:

Analyzing E:\xxxxx\fiilename.mp3
Error: Cannot open audio file E:\xxxxx\fiilename.mp3

I've tried moving the offending files to different folder locations (such as local to my machine in case it was some type of connection issue with the external hard drive), but the error persists only for specific files. The files producing this error are not too short, they open fine in Audacity and other programs, and don't seem to be corrupt or have any obvious issues. BirdNET-Analyzer runs fine on these files if I convert them to wave first, but I'd rather avoid this workaround to mitigate size/storage challenges. Has anyone run into this, and do you know of a workaround?

Is there demand for Kaleidoscope csv format Compatibility?

In our work we have found Kaleidoscope csv outputs to be very convenient to work with since it consolidates the ability to use a powerful software to quickly look at a lot of spectrograms of an audio dataset, as well as conveniently process a large csv with all of the annotations using Pandas, R, or excel.

We modified the deprecated BirdNET-Lite repo with this functionality, and we will likely rework our pipeline a bit to use these new models, but I am curious if there would be any demand for us to add an extra "rtype" parameter 'kaleidoscope' that produces a csv in that format on this repo? Not sure what the intersection of people that use Kaleidoscope and people that use BirdNET looks like.

If this git issue gets any traction, I can submit a PR request for this functionality.

Question: what dataset is used to train the current BirdNET model?

Hello BirdNET team.
I am a contributor of eBird and use your tool a lot!I wonder if the sound recordings uploaded to eBird (i.e. to Macaulay library) are part of your dataset used - or, if I upload recordings, am I technically helping the improvement of this tool? If so, does the high-quality recordings help more or low-quality ones are equally important?

Difference to BirdNET Lite

Dear Stefan,

thanks for the wonderful new software. Makes it easy with analyzing in locale and segements. But the results differ quite from the old BirdNET-Lite. I used a fork that can manage to analze a folder https://github.com/UCSD-E4E/BirdNET-Lite and the results have been quite better, ring ouzel was right and also pygmy owl. The parameters have been just the same.
python3 analyze.py --i /home/jalmer/Musik/TestHofbauernalm/ --lat 47.856 --lon 12.344 --week 16 --overlap 1.5 --min_conf 0.7 --sensitivity 1.25 --locale de --o /home/jalmer/Musik/TestHofbauernalm/
grafik

Unexpected: segments.py uses .txt results files even when .csv is specified as argument

Hello! I'm enjoying getting to know the new model and tools and have found one unexpected and minor issue:

If there are both a .csv and a .txt result file within the specified --results directory, segments.py uses the .txt even if --rtype csv is specified as an argument for segments.py.

To replicate, assuming BirdNET-Analyzer is cloned in the home directory:

Remove any old test results for this replication test

cd ~/BirdNET-Analyzer
rm ./examples/soundscape.Bird*

Create .csv results and run segments.py

python3 ./analyze.py --i example/ --o example/ --lat 42.5 --lon -76.45 --week 4 --sensitivity 1.0 --rtype csv
python3 ./segments.py --audio example/ --results example/  --seg_length 6 --rtype csv

That should all be successful.

Next:

Remove the segments that were generated in the test above, but keep the .csv results file

rm -drf ./example/*\ *

Create a .txt results table, but run segments.py specifying to use the .csv

python3 ./analyze.py --i example/ --o example/ --lat 42.5 --lon -76.45 --week 4 --sensitivity 1.0 --rtype table
python3 ./segments.py --audio example/ --results example/  --seg_length 6 --rtype csv

That will fail complaining that it is unable to convert the first line of the results table to a float:

pi@tester:~/BirdNET-Analyzer-Pi $ python3 ./segments.py --audio example/ --results example/  --seg_length 6 --rtype csv
Found 1 audio files with valid result file.
Traceback (most recent call last):
  File "/home/pi/BirdNET-Analyzer-Pi/./segments.py", line 229, in <module>
    cfg.FILE_LIST = parseFiles(cfg.FILE_LIST, max(1, int(args.max_segments)))
  File "/home/pi/BirdNET-Analyzer-Pi/./segments.py", line 60, in parseFiles
    segments = findSegments(afile, rfile)
  File "/home/pi/BirdNET-Analyzer-Pi/./segments.py", line 128, in findSegments
    start = float(d[0])
ValueError: could not convert string to float: '1\tSpectrogram 1\t1\t0\t3.0\t150\t12000\tbkcchi\tBlack-capped Chickadee\t0.4102'

I'm sorry I'm not quite able to just fix this and simply submit a pull request, as I would love to be of more help, but the issue is not big and most users would be able to figure out what is going on.

My best,
Patrick

Curious about the differences between current BirdNET-Analyzer 2.1 vs. the BirdNET-Lite model

Hi there BirdNET team! I have been working to encapsulate the BirdNET-Lite model which can make predictions for ~6000 species around the world to test out its efficacy in automatically segmenting binary bird labels from large datasets. I just saw the deprecation notice on BirdNET-Lite today and was curious what the main differences between the current Analyzer model 2.1 with ~2500 species. I looked over the model version history, but didn't see any reference to the BirdNET-Lite model.

A quick follow-up question, is there any variation in the vector space for the model inputs? For my use-case, it would be nice to compare these models, assuming that it is as simple as modifying the path to the respective model and everything working seamlessly.

Limit Results

Is it possible to filter out results that we below a threshold?

{
    "msg": "success",
    "results": [
        [
            "Pluvialis apricaria_European Golden-Plover",
            0.014033333333333335
        ],
        [
            "Columba livia_Rock Pigeon",
            0.0045
        ],
        [
            "Pyrrhula pyrrhula_Eurasian Bullfinch",
            0.0015666666666666667
        ],
        [
            "Branta canadensis_Canada Goose",
            0.0009999999999999998
        ],
        [
            "Parus major_Great Tit",
            0.0008333333333333334
        ]
    ]
}

Only return results above 0.01?

App on F-Droid

Is the Android app also open-source?
Would be great to have it on F-Droid.

Feature request: model, … file paths relative to script location

It would be nice to have the possibility to run the analyze.py script independently of the actual location of the user (e.g. python3 BirdNET-Analyzer/analyze.py ...). To allow this it would be necessary to define the model, label, species_list and eBird-codes file paths relative to the location of analyze.py.

I'd like to suggest the following after parsing the arguments:

cfg.MODEL_PATH = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), cfg.MODEL_PATH)
cfg.LABELS_FILE = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), cfg.LABELS_FILE)
cfg.MDATA_MODEL_PATH = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), cfg.MDATA_MODEL_PATH)

And Line 308 (cfg.SPECIES_LIST_FILE = args.slist) could be replaced by:

cfg.SPECIES_LIST_FILE = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), args.slist)

Moreover there should be a cfg.CODES_FILE to adjust the path for the eBird-Codes as well.

Is it possible to use the Google coral with TFLite for BirdNET?

So I noticed #6 and the following commit would allow for specifying TFLite import. Would this also then open up for using the Google Coral to do the processing, or is the workload so low that this isn't benefitial? I already have a few of those in my cluster, and I thought it would be neat to feed audio from my outdoor cameras (RTSP) into BirdNET since I live in the middel of a bird migration "pit stop". But using as little resources as possible is always nice.

Slow docker performance

Hello

I'm getting really slow processing times when using docker vs native.

native:

jason@LAPTOP-T8LSCUVL:~/benchmark/native/BirdNET-Analyzer$ python3 analyze.py
Species list contains 2434 species
Found 2 files to analyze
Analyzing example/soundscape.wav
Analyzing example/test.wav
Finished example/test.wav in 1.07 seconds
Finished example/soundscape.wav in 4.40 seconds

docker:

jason@LAPTOP-T8LSCUVL:~/benchmark/docker/BirdNET-Analyzer$ sudo docker run -v /home/jason/benchmark/native/BirdNET-Analyzer/example/:/audio birdnet analyze.py --i /audio --o /audio --slist /audio
Species list contains 41 species
Found 2 files to analyze
Analyzing /audio/soundscape.wav
Analyzing /audio/test.wav
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
Finished /audio/test.wav in 12.22 seconds
Finished /audio/soundscape.wav in 15.75 seconds
jason@LAPTOP-T8LSCUVL:~/benchmark/docker/BirdNET-Analyzer$

I'm guess this is to do with the line "INFO: Created TensorFlow Lite XNNPACK delegate for CPU."
Just wanted to know if anyone else had seen this issue?

Docker GPU instructions for BirdNET-Analyzer?

I have been a huge user of the original BirdNET - thank you for creating it!!! I want to run this new version over our existing collection Having a similar "Dockerfile-GPU" set of instructions (to the original BirdNET) for the new version would speed that up immensely.

Error using segments.py and multiple threads

It appears that when using multiple threads, there are some timing issues with directory creation. When I use multiple threads, I get multiple errors that are like:

Error: Cannot extract segments from e:\audio\20220427_081956.WAV. Traceback (most recent call last): File "D:\Downloads\BirdNET-Analyzer-main\BirdNET-Analyzer-main\segments.py", line 188, in extractSegments os.makedirs(outpath) File "C:\Users\jknowles\AppData\Local\ESRI\conda\envs\clone3\lib\os.py", line 223, in makedirs mkdir(name, mode) FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'e:\\segments_0_80\\Virginia Rail'

I think what is happening is that lines 187 and 188 in segments.py are being run concurrently in separate threads that are causing the os to try and create a directory that was already created in a different thread.

if not os.path.exists(outpath):
os.makedirs(outpath)

Potential solution would be to go through and create all the species directories first before using Pool to run extractSegments in multiple threads.

I was able to successfully run segments.py without any errors using --threads set to 1.

config file inputs not workin

Hello, this is probably my naivety with python but I opened the folder in VS code, and edited my config.py file with the input, output, species_list and inference settings. then ran the config file, then ran analyze.py but it still is running the default example files and species list. Am I missing a step?

conda-forge for BirdNET-Analyzer?

Hello!

I was previously using BirdNET-Lite to process audio files through BirdNET via R. I wrote up an install-BirdNET-for-Windows guide and documented some R functions that helped me process and wrangle the BirdNET-Lite outputs.

Now that BirdNET-Lite is deprecating, I am updating my workflows to accommodate BirdNET-Analyzer. With BirdNET-Lite, what worked to run via R was to set up a conda environment for BirdNET.

Now as I tinker with BirdNET-Analyzer instead, the error messages I'm getting lead me to believe that I will need to have my conda environment include the BirdNET-Analyzer-main module that I've locally installed. I'm not sure how to do this, since conda develop seems to be deprecated.

My question is, would it be possible to include your releases of BirdNET-Analyzer-main on conda-forge so that it could be easily installed to a conda environment?

(i.e., conda install - n birdnetenv -c conda forge birdnet-analyzer)

All of this may seem cumbersome to the more computer science-minded folks here, but I am trying to come up with well-documented ways to use BirdNET and promote access for more R-minded colleagues, collaborators, students, and interns who I work with. Apologies for the potentially uninformed question since Python is not my strong suit! It's possible there is a very easy solution if I were only using my own machine, but I'm hoping for a more portable solution so that I can easily document and explain to collaborators.

Thank you for what you do.

UK species list does not work on run.bat

Hi there,

if i run the run.bat file with the uk species list i get this error

"""D:\BirdNET-Analyzer>BirdNET-Analyzer.exe --i "E:\site_1_orange\s1june10pm.WAV" --o _soundfile_data_s1june10am --slist labels\V2.1\BirdNET_GLOBAL_2K_V2.1_Labels_uk.txt

Traceback (most recent call last):

File "analyze.py", line 389, in

File "analyze.py", line 65, in loadSpeciesList

File "encodings\cp1252.py", line 23, in decode

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 582: character maps to

[13944] Failed to execute script 'analyze' due to unhandled exception!

D:\BirdNET-Analyzer>pause

Press any key to continue . . .""""

It's very odd as the other species lists work fine and they only seem to be txt files with very little to no difference.

list of non-avian labels

Hello!

Thanks so much for the incredible resource of BirdNET. In addition to birds, my organization is curious about all of the non-avian sound sources BirdNET can now apparently identify (e.g., we now get engine, various amphibians, coyote, etc.). I went into some of the labels files and I know the possible labels are all there, but I was wondering if there is some easy way to find a list specifically of just the non-avian sounds BirdNET Analyzer can label, so I can bring this information to others. Apologies if this is easily accessible already and I'm just missing it! Any direction is much-appreciated.

Thanks

Please add Begin.File info to the selection tables?

Hi Stefan and dev team,
The new BirdNET-Analyzer is a marked improvement over the previous version so far, thanks very much for your work!
However, there is a small snippet that disappeared which makes my work far more difficult (and I'm sure others too).
The selection table files don't have Begin.File info anymore. This was really useful for batch processing data in R because it allowed for easy extraction of the exact date, time and recorder name from the file name. Do you think you could add that back without too much of a hassle?
Thanks a lot!
Thomas

Embeddings.py appears to outputs species classifications, not embeddings

I'm currently looking into at Birdnet embeddings for clustering via embeddings.py. Someone I was working with noticed the size of the embeddings array (from the embeddings.py output) is the same size as the species list implying embeddings.py is outputting the classifications.

After playing around it looks like when running embeddings.py,loadmodel() in model.py is being called with class_output=True instead of class_output=False. When manually changing class_output=False, embeddings.py outputs an array of size 420 instead of 2434.

Which is the correct embeddings array?

EDIT: In embeddings.py on line 75, models.predict() is called and it returns an array of size 2434 (same size as species list). Changing this to models.embeddings() returns the array of size 420.

Fully packaged Windows version available for model v2.2 ?

Hi!
I successfully used the fully packaged version for Windows available under this link:

grafik

It seems to be based on model version v2.1 with 2434 classes
It would be nice, if the latest model version v2.2 (with 3337 classes) could also be provided as a fully packaged version!

Thanks very much in advance!

Frank

.NET issue

image

Running the GUI on windows 10 I get this error in the console. Does this make sense to anyone?

Questions: About the parameters overlap and sensitive

Hi BirdNET team,

Thank you so much for your work. I am new to BirdNET, and I am wondering how the parameters "overlap" and "sensitive" affect the results. I tried different "overlap" and got different results. Is the "overlap" means the minimum time interval between to detected species? And about the "sensitive," what is the interaction between "sensitive" and confidence in the result?

Thank you in advance!

Liufeng

Feature Request: Translated Common Names

It would be desirable to have the option for BirdNET to use translated Common Names. The language could then be chosen by using the option --language DE with the appropriate Language abbreviations.

Also, it would be good, if a user with a more exotic language, that is not yet covered by BirdNET, could create his/her own translated version. Therefore, there should be a downloadable file with the eBird code & the Scientific_Name list, so one could fill another column with the Common_Name and send the prepared file to @kahst Stefan Kahl for incorporation into the BirdNET language file.

Thanks to @patlevin, there is already an extensive list of translated common names for the 6K model of BirdNET-Lite for 29 different languages. It can be found here: kahst/BirdNET-Lite#4 (comment)

There is also a corrected list of German names for this model: kahst/BirdNET-Lite#4 (comment)
and the European species in German for this model: kahst/BirdNET-Lite#4 (comment)

Can't see results file when using Docker

Hello,

I am trying to use Docker to analyze my files but I cannot access or see the results file from the analysis. Below is an example script:

docker run -v /Users/obs/BirdNET-Analyzer:/audio birdnet --i 20210627_120000.WAV --o /Users/obs/BirdNET-Analyzer/docker_test.csv --lat 35.06184 --lon -97.193914

Is BirdNET saving the results file in the container? If so how do I access it?

Thanks and kind regards,

Meelyn Pandit

GUI install not working - error about GTK/QT

I am having trouble getting the GUI to load. I input the exact commands on the page for Ubuntu setup, and then the pip install pywebview and python gui.py commands but I am getting this error. I tried doing pip install pywebview[qt] and this also does not work. I am doing this SSH'd into an Azure virtual machine (Ubuntu Data Science 20.04 image).

I tried the same code on my Mac (M1 chip) and it worked fine then...

azureuser@lemurprayers:/datadrive/BirdNET-Analyzer$ python gui.py
[pywebview] GTK cannot be loaded
Traceback (most recent call last):
  File "/anaconda/lib/python3.9/site-packages/webview/guilib.py", line 16, in import_gtk
    import webview.platforms.gtk as guilib
  File "/anaconda/lib/python3.9/site-packages/webview/platforms/gtk.py", line 26, in <module>
    import gi
ModuleNotFoundError: No module named 'gi'
[pywebview] Using Qt 5.15.2
qt.qpa.xcb: could not connect to display 
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.

Aborted (core dumped)
(base) azureuser@lemurprayers:/datadrive/BirdNET-Analyzer$

Use "old" 6K model?

Hi @kahst

Thanks for including me on your private group. I have flawlessly installed the Analyzer main version on Windows and Pi and both work well with "example" scripts on both systems.

I have been "dabbling" with BirdNET & BirdNET-Lite & then got involved with @mcguirepr89 on BirdNET-Pi & learnt a lot about bash, sql, caddy........ I am his "Python coder", learning the language as I go, so don't blame him for my naïve & messy approach in this area!!

Being in the Southern Hemisphere (South Africa), the 1K and 3K model lists have smaller sample of possible species (about 18% and 29% of the official 865 possible species, and they are predominantly migrants) than the old BirdNET-Lite (62% of possible species), which identified well (few false negatives and easily identified false positives) for my "backyard birder" installation.

I have managed to get the old BirdNET-Lite 6K tflite model to run "bare" in Analyzer (no location, week etc data), but I think I need a MDATA tflite model to hone it for location/week etc? Would it be a big task to generate this?

I'm going to be helping Patrick on upgrading the BirdNET-Pi system to "Analyze", and would like it to test in as best an environment as possible.

Best regards
Dennis

Low-pass filter on example

Hello,

Do you usually apply a low-pass filter on the audio recordings? The example soundscape file has one and I am wondering why that was applied.

Thanks and kind regards,

Meelyn Pandit

Error using 3k protobuf model

When trying to use the recently released 3k protobuf model I get the error '_UserObject' object has no attribute 'predict' and a warning that indicates that the "keras_metadata.pb" is missing.
Should a "keras_metadata.pb" file be present with the 3k protobuf model?
Thanks!

Clarification on spatial scale used to generate latitude/longitude-based species lists?

Hi BirdNET team,

Is it possible to add a brief clarification to the ReadME about the spatial scale/model used to filter the species list based on lat-long?

I started noticing some slight differences in the number of species used -- for example, two sites located about 200m away from one another where one "Species list contains 137 species" and the other "Species list contains 138 species." In retrospect, I realized this was due to different weeks of the year for the recordings I was looking at, rather than the small chance that both sites fell in different grid cells in the underlying model. Nevertheless, it did cause me to wonder about what spatial scale is used in the underlying model to select the species list (i.e., 10km, 1km, eBird species list grid cells?). Are you able to clarify?

Thank you for this incredible tool!

Output file time fields are missing trailing numbers?

Using either dockerized or Windows version of BirdNet, and saving output in CSV format, the "Start (s)" and "End (s)" fields seems to sometimes miss trailing zero (or other number?)

Example, rows 2, 16 and 17:

1018.0,1021.0,Buteo lineatus,Red-shouldered Hawk,0.1006
102.0,105.0,Turdus viscivorus,Mistle Thrush,0.2857
1020.0,1023.0,Turdus merula,Eurasian Blackbird,0.1264
1020.0,1023.0,Fulica atra,Eurasian Coot,0.1195
1022.0,1025.0,Fulica atra,Eurasian Coot,0.5702
1026.0,1029.0,Drepanis coccinea,Iiwi,0.1028
1030.0,1033.0,Dog,Dog,0.1531
1030.0,1033.0,Turdus viscivorus,Mistle Thrush,0.1335
1030.0,1033.0,Corvus corax,Common Raven,0.1332
1032.0,1035.0,Anas crecca,Green-winged Teal,0.3920
1032.0,1035.0,Anser anser,Graylag Goose,0.1338
1034.0,1037.0,Anas crecca,Green-winged Teal,0.1263
1036.0,1039.0,Turdus merula,Eurasian Blackbird,0.4798
1038.0,1041.0,Anser anser,Graylag Goose,0.4178
1038.0,1041.0,Cygnus cygnus,Whooper Swan,0.1124
104.0,107.0,Turdus migratorius,American Robin,0.2337
104.0,107.0,Turdus philomelos,Song Thrush,0.1144
1040.0,1043.0,Anser anser,Graylag Goose,0.2485
1040.0,1043.0,Cygnus cygnus,Whooper Swan,0.1544

Problematic fields seem to systematically have larger value on the end field than the following row: e.g. on row 2 end value should maybe be 1050.0, which is larger than the end value 1023.0 on row 3.

Occasionally the time value is even shorter, like on row 2 here:

1198.0,1201.0,Anser anser,Graylag Goose,0.8534
12.0,15.0,Haemorhous mexicanus,House Finch,0.1176
1200.0,1203.0,Anser anser,Graylag Goose,0.9340

Running segments.py with forward slashes crashes it

Running segments.py with forward slashes on Windows 10 leads to a system error. For example when running the example command python3 segments.py --audio example/ --results example/ --o example/segments/
This seems to be caused by the code expecting backslashes (pathname splitting on line 191 doesn't work as expected).

Thanks for fixing this!

F-droid APK

Hello,
would it be possible to make Birdnet available on f-droid ?
It would allow users to download an up to date APK event if users do not have a google account

Regards

First initial check / test of docker install fails

Finished doing:
[1] "git clone" of the BirdNET-Analyzer package, and
[2] sudo docker build -t birdnet.

All successful. However, using the first example on website to run container, I'm getting the following error:

sudo docker run -v $PWD/example:/audio birdnet --i audio --o audio --slist audio
Password:
unknown option --i
usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Try `python -h' for more information.

List of non-avian species in BirdNET Analyzer

Hello!

Thanks so much for the incredible resource of BirdNET. In addition to birds, my organization is curious about all of the non-avian sound sources BirdNET can now apparently identify (e.g., we now get engine, various amphibians, coyote, etc.). I went into some of the labels files and I know the possible labels are all there, but I was wondering if there is some easy way to find a list specifically of just the non-avian sounds BirdNET Analyzer can label, so I can bring this information to others. Apologies if this is easily accessible already and I'm just missing it! Any direction is much-appreciated.

Thanks

Analyzing stereo files takes twice the time of mono files

The code clearly loads audio files as mono in audio.py
Do you have any idea why BirdNET still takes twice the time?

This happens on a RaspberryPi 3A+
Memory usage is similar when analyzing mono files.
The function librosa.load(..., mono = True) executes almost instantaneously

Species filter too restrictive?

Hi all,
I have been a fairly extensive user of the birdnet algorithms, first the lite version and now 2.1 and 2.2. It is fantastic work by the team of developers.

I noticed that the the species filter of version 2.1 and 2.2 is too restrictive in southern Germany.

Entering -lat, -lon and -week is way too restrictive for several of my recording sessions, excluding several bird species from the analysis which do in fact occur in the area and are present in the recordings. Even the least restrictive species filter using -lat -lon and -sf_thresh 0.01 still excluded some species from the analysis that do in fact occur in the area and in the recordings (prominently, the Eagle Owl), while at the same time including many extreme rarities.

Takeaway for me: It may be quite important to check the effectiveness of the species filter with species.py before analyzing large datasets. Did other users encounter this behavior before?

It is easy to get around this issue by using a manually compiled species list with the -slist option, starting from the resulting list of species.py and then manually add the species that might actually occur (or remove those that are not relevant).

cheers, Michael

BirdNet License

Hey!

Could you clarify the license, please? It's stated to be Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International, however, in the paper for BirdNet, you mentioned that you use Macaulay Library, and it has a more strict license.

So I guess it's a 2-fold question:

  • Is the license really Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International?
  • If so, how does that relate to Macaulay Library data? Maybe you only used it for testing, and not for training?

Where are BirdNET observation sound snippets saved on an iPhone?

I'm relaying this question from someone else at the Bioacoustics Stack Exchange (currently in beta):
https://bioacoustics.stackexchange.com/questions/114/where-are-birdnet-saved-observation-sound-snippets-saved-on-an-iphone

"I've recorded some sounds using the app BirdNET (https://birdnet.cornell.edu/) and would like to share/export some of the recorded observations I made and saved. I cannot find them within my iPhone's folder structure. Is anyone familiar with where these are saved by default or how to extract them?"

Stefan or others, if there's a better place to ask this question about the phone apps, please let me know!

Dear BirdNet

Dear BirdNET
Have you considered being able to save a recording and share it on Facebook?

Yours sincerely
Brian

Conditional import of Keras/TFLite in model.py

When running BirdNET on a Raspberry Pi it is sufficient to install tflite-runtime without the need to install tensorflow.
Not having to install tensorflow/keras keeps the installation smaller and the process simpler.

It would be great if the import could be conditional so that the script does not throw an error when there is no installation of tensorflow.

It could be something like

if cfg.MODEL_PATH.endswith('.tflite'):
    try:
        import tflite_runtime.interpreter as tflite
    except ModuleNotFoundError:
        from tensorflow import lite as tflite
else:
   from tensorflow import keras

Species probability classes

I'm curious to learn about the probability class definition; where are they defined and on which basis? Is there any (scientific) documentation on that?

Feature request: output of BirdNET formatted for subsequent analysis in R

It would be desirable to have a standardized output format for subsequent analysis of the results with R / R-Studio. Would be nice to have a specific --rtype 'R' option

The standardized output for this format would be a csv-file with the following columns:

• Filepath of the analysed file (eg. „f:/Audio/00_Demo_Aken_18/De03_2019_05_03_08_32_23.wav“)
• Start of detected chunk (in sec)
• End of detected chunk (in sec)
• Scientific_Name
• Common_Name --> in the preselected language, see here #1 (comment)
• Confidence
• Lat
• Lon
• Week
• Overlap
• Sensitivity
• Min_conf
• Custom_list
• Model for classification (eg.“BirdNET_GLOBAL_1K_V2.0_Model_INT8.tflite“)

Lines would correspond to single detections.

To use the read-functions of the readr package in R it would be necessary to avoid "empty" output files in which the header is followed by the newline character \n. We would therefore suggest to use no newline character in the header and a leading one with every detection.

Date and Time of the detections would be handled within the R script.

Thanks for providing BirdNET and for all your hard work, its greatly appreciated!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.