Giter VIP home page Giter VIP logo

mbsantiago / whombat Goto Github PK

View Code? Open in Web Editor NEW
25.0 6.0 2.0 9.48 MB

Audio Annotation Tool for ML development

Home Page: https://mbsantiago.github.io/whombat/

License: GNU General Public License v3.0

Makefile 0.15% Python 50.16% TypeScript 49.08% JavaScript 0.01% CSS 0.03% Shell 0.31% Dockerfile 0.10% Mako 0.04% PowerShell 0.12%
annotation audio audio-annotation bioacoustics machine-learning

whombat's Introduction

Whombat

GitHub License Python Version from PEP 621 TOML Static Badge codecov build lint docs tests DOI

Whombat is an open-source, web-based audio annotation tool designed to streamline audio data labeling and annotation, with a particular focus on supporting machine learning model development.

Installation

Visit the Releases section on GitHub to download the bundled version compatible with your operating system.

If you prefer installing Whombat via Python, run the command

pip install whombat

For detailed installation instructions, refer to the Installation section of the documentation.

Usage

To run whombat either click on the bundled executable or run

python -m whombat

We have prepared a User Guide to accompany you in your annotation work. There you will be able to see all the features provided by Whombat, as well as clear instructions on how to use them.

Contribution

As a open source project we are incredibly excited for having contributions from the community. Head over to the Contributions section of the documentation to see how you can contribute.

Citation

If you want to use Whombat for your research, please cite as:

Balvanera, S. M., Mac Aodha, O., Weldy, M. J., Pringle, H., Browning, E., & Jones, K. E. (2023). Whombat: An open-source annotation tool for machine learning development in bioacoustics. arXiv preprint arXiv:2308.12688.

Acknowledgements

Whombat has been developed with the generous support of the Mexican Council of the Humanities, Science and Technology (CONAHCyT; Award Number 2020-000017-02EXTF-00334) and University College London (UCL).

whombat's People

Contributors

mbsantiago avatar vogelbam avatar

Stargazers

 avatar Claydson Assis avatar  avatar Julian Schäfer-Zimmermann avatar Sebastián Cadavid-Sánchez avatar  avatar Yann Bayle avatar Robin Sandfort avatar David Nicholson avatar  avatar Kaede Kimua avatar  avatar Georgia Atkinson avatar Melissa Weidlich-Rau avatar Gabriel L. M. Rosa avatar  avatar John Martinsson avatar Cathleen Balantic avatar Enis Berk Çoban avatar Paul Peyret avatar Álvaro Vega-Hidalgo avatar Morgan avatar Jean-François Godeau avatar Clea Parcerisas avatar Oisin Mac Aodha avatar

Watchers

 avatar  avatar David Nicholson avatar Álvaro Vega-Hidalgo avatar  avatar Jeff Reed avatar

Forkers

difiore vogelbam

whombat's Issues

Inconsistent audio play behavior

  • Whombat version: v0.4.1
  • Python version: 3.10.12
  • Operating System: Ubuntu 22.04

Description

There is inconsistent behavior in the audio play feature. If I move forward to the next clip while audio is playing, it continues playing until it reaches the end of the clip. If I move to the previous clip while audio is playing it stops.

Proposal: Adding Support for .flac Audio Files

Hello,

Thank you very much for supporting open source bioacoustics with this tool! I was wondering if there are plans to support .flac. I would appreciate any guidance on this, in case that you have a roadmap or notes about this feature. Probably that is a soundevent feature more than a whombat feature? Or both?

Looking forward to your feedback and excited about the possibility of contributing to whombat.

Thanks,

Incomplete spectrograms

  • Whombat version: 0.4.0
  • Python version: 3.11
  • Operating System: Ubuntu 20.04

Description

With arbitrary length audios the last segment of the spectrogram is sometimes missing.

What I Did

I've opened the annotation page for an audio file for a duration of 6.873088 seconds. However, the spectrogram is only generated until 6.4 seconds.

image

Error creating dataset from D drive

  • Whombat version: 0.4.1 (downloaded as a zip file from releases)
  • Python version: 3.11
  • Operating System: Windows

Hello.
I've been struggling to find an easy to use wildlife call annotator recently and have been looking forward to using whobat, so I'm glad I can finally use it.

Description of issue

When I try to create a new dataset with a directory in the D drive (like D:/path/to/my/directory), I get a "Failed to create dataset" error on the GUI. No message is displayed in the terminal window.
This error does not occur when a directory is in the C drive, the default storage.
I store most of my audio data on the D drive as it's too large to store on the C drive.
Do you have any idea how to get access to the D drive from whombat?

Sorry if I missed something already mentioned in the user guide.

Thank you for your efforts in developping whombat!

Executable not working (v4.1) on Mac OS (M1 chip)

  • Whombat version: 4.1
  • Python version: N/A
  • Operating System: Mac OS 12.6 on Apple M1 Pro

Description

I downloaded the executable for Mac and double-clicked it

What I Did

Here's the message displayed:


    Welcome to:

    __      _| |__   ___  _ __ ___ | |__   __ _| |_
    \ \ /\ / / '_ \ / _ \| '_ ` _ \| '_ \ / _` | __|
     \ V  V /| | | | (_) | | | | | | |_) | (_| | |_
      \_/\_/ |_| |_|\___/|_| |_| |_|_.__/ \__,_|\__|

    An ML-focused audio annotation tool.

    Please wait while Whombat starts up...
    
The environment does not allow connecting to the splash screen. Are the splash resources attached to the bootloader or did an error occur?
Traceback (most recent call last):
  File "PyInstaller/fake-modules/pyi_splash.py", line 98, in <module>
  File "<frozen os>", line 679, in __getitem__
KeyError: '_PYIBoot_SPLASH'

Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

ValidationError while annotating

  • Whombat version: 0.4.0 (71c7519)
  • Python version: 3.11
  • Operating System: Ubuntu 23.10

Description

Trying to add annotations, the app returns raises a ValidationError while getting the current active user. The code in commit 8f6adf9 works fine for me. The following commit might have broken authentication. I think the same applies to other actions too.

What I Did

I've setup Whombat, created a user, a dataset and an annotation task. When I try to add any kind of annotation (e.g. a bounding box), I receive an internal server error. Running dev mode or adding a super user does not change this behavior.

ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/applications.py", line 116, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
    raise exc
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 91, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 146, in simple_response
    await self.app(scope, receive, send)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 55, in wrapped_app
    raise exc
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 44, in wrapped_app
    await app(scope, receive, sender)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/routing.py", line 746, in __call__
    await route.handle(scope, receive, send)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/routing.py", line 75, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 55, in wrapped_app
    raise exc
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 44, in wrapped_app
    await app(scope, receive, sender)
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/starlette/routing.py", line 70, in app
    response = await func(request)
               ^^^^^^^^^^^^^^^^^^^
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 285, in app
    raise e
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 275, in app
    solved_result = await solve_dependencies(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/fastapi/dependencies/utils.py", line 598, in solve_dependencies
    solved = await call(**sub_values)
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vogelbam/projects/whombat/back/src/whombat/routes/dependencies/auth.py", line 48, in get_current_user
    return schemas.SimpleUser.model_validate(current_active_user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vogelbam/projects/whombat/back/.venv/lib/python3.11/site-packages/pydantic/main.py", line 503, in model_validate
    return cls.__pydantic_validator__.validate_python(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for SimpleUser
  Input should be a valid dictionary or object to extract fields from [type=model_attributes_type, input_value=<function Authenticator.c...dency at 0x7f22f008e700>, input_type=function]
    For further information visit https://errors.pydantic.dev/2.5/v/model_attributes_type

Inconsistent spectrogram representation

  • Whombat version: 0.4.0
  • Python version: 3.11
  • Operating System: 20.04

Description

Switching the selected best covering segment seems to impair the representation of calls. I'm not sure whether there's a satisfying solution to this issue, however, it might be confusing to labelers.

What I Did

I opened a file for annotation and zoomed in. While scrolling horizontally I noticed a call changing its representation which made it look as if the box wasn't fit properly. It appears to be caused by selecting a different covering segment. Here's an example including the used and selected segments:

Screenshot from 2024-03-26 10-45-07

Selected segment: 4
Start time: 1.2, End time: 1.7
Start time: 0.8999999999999999, End time: 1.4
Start time: 1.5, End time: 2

Screenshot from 2024-03-26 10-44-06

Selected segment: 5
Start time: 1.5, End time: 2
Start time: 1.2, End time: 1.7
Start time: 1.7999999999999998, End time: 2.3

Feature requests

Good morning! I was hoping to place three feature requests.

  1. Could you add the Whombat version number to the About Us page? It would help with documentation and troubleshooting.
  2. Could you add a hotkey for 'add tags' in the Clip Tags window? Possibly, it should work for both instances of add tag, so if an annotation is selected, the add tag hotkey would work for the annotation, but if no annotations are selected, the add tag defaults to the Clip Tags window. I think 'T' makes sense here.
  3. Add a spectrogram feature setting to set the y-axis range. The filtering option looks like it applies a low/high/band-pass filter, but the y-axis still ranges from 0-Nyquist. It would be really helpful to set this range to focus on specific frequency ranges.

Best,
Matt

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.