SoundScope is a python-based software that facilitates the visualization and manual verification of detections from automatic whale and fish sound detectors (or any other sound detectors). It allows to display and navigate through detections time series, filter and sort by classification confidence, and dynamically produce spectrograms of the detections. SoundScope was initially created in the Juanes Lab at the University of Victoria and is currently being developped at the Passive Acoustic Branch of NOAA's Northeast Fisheries Science Center.
SoundScope is still under heavy development. Please don't hesitate to reach out if you want to use it or want to help with the development.
There are 2 ways to use SoundScope:
This is the easiest way as it does not require to install anything. The binaries are uploaded in this Google folder: SoundScope binaries Download the latest zip file, unzip it, and double click on soundscope.exe to launch the application.
This is more involved as it requires to install python and required python libraries. For instructions see the "Development notes" section below.
Currently, SoundScope uses netCDF files as input. The data format in the ndtCDF files follows the structure of the Annotation and Measurement objects defined by the ecosound library. More documentation describing how to create these netCDF files will be added in the near future. In the meantime, you can have a look at the script convert_acodet2netcdf.py in the "utils" folder which converts outputs from the ACODET detector to the SoundScope format.
An example of netCDF file can be found in the folder here. You can open it directly in SoundScope. Note that it will allow you to play around with the detection plots, but will not be able to display the spectrogram of selected detections because it won't have access to the original audio data.
To examine the structure of the netCDF file you can open it in python with ecosound:
from ecosound.core.annotation import Annotation
annot = Annotation()
annot.from_netcdf(r'.\SoundScope_data_examples\SoundScape_detections_example.nc')
# all the detection data and metadate are in the pandas dataframe in annot.data
print(annot.data)
The code above requires to have ecosound installed. To install ecosound use the command: pip install ecosound
If you found a bug please add an entry to the issues list with the label "bug". Please include as much information as possible.
If you want new functionalities to be added to SoundScope, add an entry to the issues list with the label "enhancement". Use the thumbs-up emoji (👍) to boost the priority of a new features.
- Added capability to download daily and hourly detection summary as csv file (issue #14)
- Added capability to download audio clip of the selected detection
- Fixed bug where the first detection clicked in the table returned an error
- Showing time zone of the analysis in the main interface (top right)
- Added error notifications in main interface to help the user identify issues
- Upgraded to python 3.10
- Upgraded to panel 1.5.3
- Fixed instabilities with selections the calendar plots
- Increased maximum allowed time offset in spectrogram to 500 seconds
- Added time zone support
- Initial release
python 3.10
$ pip install -r requirements.txt
-
Run soundscope:
$ panel serve soundscope.py --show --autoreload
-
or just..
$ python soundscope.py
- Make sure to work with the binary branch which contains extra code to optimize the binaries.
1.) Install pyinstaller:
$ pip install pyinstaller
2.) Compile code in Windows:
In a terminal change to current directory to the sounscope folder using the cd command. Then type
$ pyinstaller -i images\SoundScopeLogo.png --collect-all holoviews --collect-all distributed --collect-all param --hidden-import matplotlib.backends.backend_agg .\soundscope.py
or
$ pyinstaller .\soundscope.spec
3.) Copy over the images directory to the dist folder.
$ mv images dist/images