{"id":314844,"name":"acoupi","description":"A Python package that streamlines bioacoustic classifier deployment on edge devices like the Raspberry Pi.","url":"https://github.com/acoupi/acoupi","last_synced_at":"2026-04-25T11:30:44.292Z","repository":{"id":257822056,"uuid":"610365388","full_name":"acoupi/acoupi","owner":"acoupi","description":"Python toolkit to implement bioacoustics classifier on embedded systems.","archived":false,"fork":false,"pushed_at":"2026-03-21T13:22:53.000Z","size":113736,"stargazers_count":38,"open_issues_count":19,"forks_count":3,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-03-28T02:49:47.614Z","etag":null,"topics":["acoustic-monitoring","bioacoustics","edge-computing","python-toolkit","raspberry-pi"],"latest_commit_sha":null,"homepage":"https://acoupi.github.io/acoupi/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/acoupi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-06T16:17:56.000Z","updated_at":"2026-03-21T13:22:10.000Z","dependencies_parsed_at":"2024-11-15T03:03:35.160Z","dependency_job_id":"eb3176b8-cfc1-47bc-be84-840200722577","html_url":"https://github.com/acoupi/acoupi","commit_stats":null,"previous_names":["acoupi/acoupi"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/acoupi/acoupi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acoupi","download_url":"https://codeload.github.com/acoupi/acoupi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31168414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-29T21:28:10.185Z","status":"ssl_error","status_checked_at":"2026-03-29T21:23:32.226Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"acoupi","name":"acoupi","uuid":"152899600","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/152899600?v=4","repositories_count":1,"last_synced_at":"2024-10-11T17:43:06.936Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/acoupi","funding_links":[],"total_stars":0,"followers":0,"following":0,"created_at":"2024-10-11T17:43:06.941Z","updated_at":"2024-10-11T17:43:06.941Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acoupi","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acoupi/repositories"},"packages":[{"id":10963916,"name":"acoupi","ecosystem":"pypi","description":"Classifier for bioacoustic devices","homepage":null,"licenses":"GPL-3.0","normalized_licenses":["GPL-3.0"],"repository_url":"https://github.com/acoupi/acoupi","keywords_array":[],"namespace":null,"versions_count":4,"first_release_published_at":"2024-10-11T17:19:20.000Z","latest_release_published_at":"2026-01-26T16:07:12.000Z","latest_release_number":"0.3.2","last_synced_at":"2026-04-17T11:06:35.686Z","created_at":"2024-10-11T17:31:27.762Z","updated_at":"2026-04-17T12:56:17.585Z","registry_url":"https://pypi.org/project/acoupi/","install_command":"pip install acoupi --index-url https://pypi.org/simple","documentation_url":"https://acoupi.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":[],"normalized_name":"acoupi","project_status":null},"repo_metadata":{"id":257822056,"uuid":"610365388","full_name":"acoupi/acoupi","owner":"acoupi","description":"Python toolkit to implement bioacoustics classifier on embedded systems.","archived":false,"fork":false,"pushed_at":"2026-03-21T13:22:53.000Z","size":113736,"stargazers_count":38,"open_issues_count":19,"forks_count":3,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-03-28T02:49:47.614Z","etag":null,"topics":["acoustic-monitoring","bioacoustics","edge-computing","python-toolkit","raspberry-pi"],"latest_commit_sha":null,"homepage":"https://acoupi.github.io/acoupi/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/acoupi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-06T16:17:56.000Z","updated_at":"2026-03-21T13:22:10.000Z","dependencies_parsed_at":"2024-11-15T03:03:35.160Z","dependency_job_id":"eb3176b8-cfc1-47bc-be84-840200722577","html_url":"https://github.com/acoupi/acoupi","commit_stats":null,"previous_names":["acoupi/acoupi"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/acoupi/acoupi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acoupi","download_url":"https://codeload.github.com/acoupi/acoupi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31168414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-29T21:28:10.185Z","status":"ssl_error","status_checked_at":"2026-03-29T21:23:32.226Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"acoupi","name":"acoupi","uuid":"152899600","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/152899600?v=4","repositories_count":1,"last_synced_at":"2024-10-11T17:43:06.936Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/acoupi","funding_links":[],"total_stars":0,"followers":0,"following":0,"created_at":"2024-10-11T17:43:06.941Z","updated_at":"2024-10-11T17:43:06.941Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acoupi","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acoupi/repositories"},"tags":[{"name":"v0.3.2","sha":"ae3c4275f7e0556251d260853d036768b5f95ea5","kind":"tag","published_at":"2026-01-26T16:01:50.000Z","download_url":"https://codeload.github.com/acoupi/acoupi/tar.gz/v0.3.2","html_url":"https://github.com/acoupi/acoupi/releases/tag/v0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/acoupi/acoupi@v0.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.3.2/manifests"},{"name":"v0.3.1","sha":"7238594e074421bc39f6ac236c2b87e627c6574f","kind":"commit","published_at":"2025-11-10T17:01:45.000Z","download_url":"https://codeload.github.com/acoupi/acoupi/tar.gz/v0.3.1","html_url":"https://github.com/acoupi/acoupi/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/acoupi/acoupi@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"4fbe9872dc1f188ed1d06fb63af806af68813cdd","kind":"tag","published_at":"2024-12-03T19:04:13.000Z","download_url":"https://codeload.github.com/acoupi/acoupi/tar.gz/v0.3.0","html_url":"https://github.com/acoupi/acoupi/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/acoupi/acoupi@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"1790f72ad258bc29fe7f24528c00a0ee8a07fc5d","kind":"tag","published_at":"2024-12-02T11:01:20.000Z","download_url":"https://codeload.github.com/acoupi/acoupi/tar.gz/v0.2.0","html_url":"https://github.com/acoupi/acoupi/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/acoupi/acoupi@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"f25906101c78a20c8c3fad7df482395bf54bba92","kind":"commit","published_at":"2024-10-11T17:12:58.000Z","download_url":"https://codeload.github.com/acoupi/acoupi/tar.gz/v0.1.0","html_url":"https://github.com/acoupi/acoupi/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/acoupi/acoupi@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-04-17T12:56:17.564Z","dependent_packages_count":0,"downloads":56,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":57.48060238991651,"dependent_packages_count":10.212800785725978,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":33.846701587821244},"purl":"pkg:pypi/acoupi","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/acoupi","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/acoupi","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/acoupi/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-25T21:02:41.323Z","issues_count":35,"pull_requests_count":61,"avg_time_to_close_issue":4966891.833333333,"avg_time_to_close_pull_request":506105.224137931,"issues_closed_count":18,"pull_requests_closed_count":58,"pull_request_authors_count":3,"issue_authors_count":5,"avg_comments_per_issue":1.342857142857143,"avg_comments_per_pull_request":0.18032786885245902,"merged_pull_requests_count":56,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":11,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":1960761.5,"past_year_avg_time_to_close_pull_request":5735171.666666667,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":2.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/issues","maintainers":[{"login":"mbsantiago","count":49,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbsantiago"},{"login":"audevuilli","count":29,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/audevuilli"}],"active_maintainers":[{"login":"mbsantiago","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbsantiago"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/acoupi/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/acoupi/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/acoupi/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/acoupi/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/acoupi/codemeta","maintainers":[{"uuid":"mbsantiago","login":"mbsantiago","name":null,"email":null,"url":null,"packages_count":22,"html_url":"https://pypi.org/user/mbsantiago/","role":null,"created_at":"2024-10-11T17:43:06.439Z","updated_at":"2024-10-11T17:43:06.439Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/mbsantiago/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":844153,"maintainers_count":360677,"namespaces_count":0,"keywords_count":271316,"github":"pypi","metadata":{"funded_packages_count":53172},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-04-09T05:08:03.587Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":5769483,"full_name":"acoupi/acoupi","default_branch":"main","total_commits":1349,"total_committers":2,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":674.5,"dds":0.27798369162342473,"past_year_total_commits":12,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":6.0,"past_year_dds":0.08333333333333337,"last_synced_at":"2026-04-17T08:02:15.204Z","last_synced_commit":"2cc436821d99de4bb486589db13a2604e74e0d3e","created_at":"2024-11-15T03:03:26.046Z","updated_at":"2026-04-17T08:02:15.138Z","committers":[{"name":"Aude","email":"47717187+audevuilli","login":"audevuilli","count":974},{"name":"mbsantiago","email":"santiago.mbal@gmail.com","login":"mbsantiago","count":375}],"past_year_committers":[{"name":"mbsantiago","email":"santiago.mbal@gmail.com","login":"mbsantiago","count":11},{"name":"Aude","email":"aude.vuilliomenet.18@ucl.ac.uk","login":"audevuilli","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.908Z","repositories_count":6214219,"commits_count":900055504,"contributors_count":34914885,"owners_count":1143435,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"acoupi/acoupi","html_url":"https://github.com/acoupi/acoupi","last_synced_at":"2026-04-11T05:01:36.346Z","status":"active","issues_count":35,"pull_requests_count":62,"avg_time_to_close_issue":4966891.833333333,"avg_time_to_close_pull_request":506105.224137931,"issues_closed_count":18,"pull_requests_closed_count":58,"pull_request_authors_count":4,"issue_authors_count":5,"avg_comments_per_issue":1.457142857142857,"avg_comments_per_pull_request":0.1774193548387097,"merged_pull_requests_count":56,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":11,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":1960761.5,"past_year_avg_time_to_close_pull_request":5735171.666666667,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":2.3636363636363638,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"created_at":"2025-04-22T00:09:48.338Z","updated_at":"2026-04-11T05:01:36.346Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/acoupi%2Facoupi/issues","issue_labels_count":{"bug":7,"note":3,"question":2,"help wanted":1,"enhancement":1},"pull_request_labels_count":{"enhancement":3},"issue_author_associations_count":{"COLLABORATOR":19,"NONE":16},"pull_request_author_associations_count":{"COLLABORATOR":59,"NONE":3},"issue_authors":{"audevuilli":12,"timchurches":7,"mbsantiago":7,"SarahDal":6,"libbymiller":3},"pull_request_authors":{"mbsantiago":42,"audevuilli":17,"augustweinbren":2,"leogaggl":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-13T00:00:15.727Z","repositories_count":14240319,"issues_count":34631349,"pull_requests_count":113115597,"authors_count":11233269,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":10,"COLLABORATOR":1},"past_year_pull_request_author_associations_count":{"COLLABORATOR":4,"NONE":1},"past_year_issue_authors":{"timchurches":7,"libbymiller":3,"mbsantiago":1},"past_year_pull_request_authors":{"mbsantiago":4,"leogaggl":1},"maintainers":[{"login":"mbsantiago","count":49,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbsantiago"},{"login":"audevuilli","count":29,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/audevuilli"}],"active_maintainers":[{"login":"mbsantiago","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbsantiago"}]},"events":{"total":{"ReleaseEvent":1,"DeleteEvent":6,"PullRequestEvent":25,"ForkEvent":2,"IssuesEvent":15,"WatchEvent":35,"IssueCommentEvent":32,"PushEvent":78,"PullRequestReviewCommentEvent":9,"PullRequestReviewEvent":16,"CreateEvent":15},"last_year":{"PullRequestEvent":1,"IssuesEvent":2,"WatchEvent":9,"IssueCommentEvent":5,"PushEvent":7,"CreateEvent":1}},"keywords":["acoustic-monitoring","bioacoustics","edge-computing","python-toolkit","raspberry-pi"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/docs.yml","sha":null,"kind":"manifest","created_at":"2024-10-16T17:06:30.711Z","updated_at":"2024-10-16T17:06:30.711Z","repository_link":"https://github.com/acoupi/acoupi/blob/main/.github/workflows/docs.yml","dependencies":[{"id":20211469379,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":20211469380,"package_name":"actions/cache","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":20211469381,"package_name":"actions/cache","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/lint.yml","sha":null,"kind":"manifest","created_at":"2024-10-16T17:06:31.187Z","updated_at":"2024-10-16T17:06:31.187Z","repository_link":"https://github.com/acoupi/acoupi/blob/main/.github/workflows/lint.yml","dependencies":[{"id":20211469382,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":20211469383,"package_name":"actions/cache","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish.yml","sha":null,"kind":"manifest","created_at":"2024-10-16T17:06:31.577Z","updated_at":"2024-10-16T17:06:31.577Z","repository_link":"https://github.com/acoupi/acoupi/blob/main/.github/workflows/publish.yml","dependencies":[{"id":20211469384,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":20211469385,"package_name":"pypa/hatch","ecosystem":"actions","requirements":"install","direct":true,"kind":"composite","optional":false},{"id":20211469386,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":20211469387,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":20211469388,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"release/v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/tests.yml","sha":null,"kind":"manifest","created_at":"2024-10-16T17:06:32.053Z","updated_at":"2024-10-16T17:06:32.053Z","repository_link":"https://github.com/acoupi/acoupi/blob/main/.github/workflows/tests.yml","dependencies":[{"id":20211469408,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":20211469409,"package_name":"actions/cache","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-10-16T17:06:32.544Z","updated_at":"2024-10-16T17:06:32.544Z","repository_link":"https://github.com/acoupi/acoupi/blob/main/pyproject.toml","dependencies":[{"id":20211469410,"package_name":"pony","ecosystem":"pypi","requirements":"\u003e=0.7.16","direct":true,"kind":"runtime","optional":false},{"id":20211469411,"package_name":"pyaudio","ecosystem":"pypi","requirements":"\u003e=0.2.13","direct":true,"kind":"runtime","optional":false},{"id":20211469412,"package_name":"pyyaml","ecosystem":"pypi","requirements":"\u003e=6.0","direct":true,"kind":"runtime","optional":false},{"id":20211469413,"package_name":"paho-mqtt","ecosystem":"pypi","requirements":"\u003e=1.6.1","direct":true,"kind":"runtime","optional":false},{"id":20211469414,"package_name":"pydantic","ecosystem":"pypi","requirements":"\u003e=1.10.8","direct":true,"kind":"runtime","optional":false},{"id":20211469415,"package_name":"click","ecosystem":"pypi","requirements":"\u003e=8.1.3","direct":true,"kind":"runtime","optional":false},{"id":20211469416,"package_name":"astral","ecosystem":"pypi","requirements":"\u003e=3.2","direct":true,"kind":"runtime","optional":false},{"id":20211469417,"package_name":"celery","ecosystem":"pypi","requirements":"\u003e=5.4.0","direct":true,"kind":"runtime","optional":false},{"id":20211469418,"package_name":"Jinja2","ecosystem":"pypi","requirements":"\u003e=3.1.2","direct":true,"kind":"runtime","optional":false},{"id":20211469419,"package_name":"pydantic-settings","ecosystem":"pypi","requirements":"\u003e=2.0.3","direct":true,"kind":"runtime","optional":false},{"id":20211469420,"package_name":"pytz","ecosystem":"pypi","requirements":"\u003e=2023.3.post1","direct":true,"kind":"runtime","optional":false},{"id":20211469421,"package_name":"requests","ecosystem":"pypi","requirements":"\u003e=2.31.0","direct":true,"kind":"runtime","optional":false},{"id":20211469422,"package_name":"eventlet","ecosystem":"pypi","requirements":"\u003e=0.36.1","direct":true,"kind":"runtime","optional":false},{"id":20211469423,"package_name":"pygments","ecosystem":"pypi","requirements":"\u003e=2.18.0","direct":true,"kind":"runtime","optional":false},{"id":20211469424,"package_name":"pydantic-extra-types","ecosystem":"pypi","requirements":"\u003e=2.9.0","direct":true,"kind":"runtime","optional":false}]}],"score":8.779249716229046,"created_at":"2025-04-22T00:09:43.466Z","updated_at":"2026-04-25T11:30:44.306Z","avatar_url":"https://github.com/acoupi.png","language":"Python","category":"Biosphere","sub_category":"Bioacoustics and Acoustic Data Analysis","monthly_downloads":56,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# acoupi\n\n\u003e [!TIP]\n\u003e Read the latest [documentation](https://acoupi.github.io/acoupi/)\n\n#### Readme Content\n- [What is acoupi?](#what-is-acoupi)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Ready to use AI Bioacoustic Classifiers](#ready-to-use-ai-bioacoustic-classifiers)\n    - [BatDetect2](#batdetect2)\n    - [BirdNET-Lite](#birdnet-lite-coming-soon)\n- [Acoupi software architecture](#acoupi-software)\n    - [Framework](#acoupi-framework)\n    - [Application](#acoupi-application)\n- [Features and Development](#features-and-development)\n\n## What is acoupi? \n_acoupi_ is an open-source Python package that streamlines bioacoustic classifier deployment on edge devices like the Raspberry Pi.\nIt integrates and standardises the entire bioacoustic monitoring workflow, from recording to classification.\nWith various components and templates, _acoupi_ simplifies the creation of custom sensors, handling audio recordings, processing, classifications, detections, communication, and data management.\n\n\u003cfigure\u003e\n    \u003cimg src=\"docs/img/acoupi_software_overview.jpeg\" alt=\"Figure 1: Overview of where the acoupi software package fits in the toolbox of bioacoustic research\" width=\"60%\"\u003e\n    \u003cfigcaption\u003e\u003cb\u003eFigure 1: An overview of \u003ci\u003eacoupi\u003c/i\u003e software.\u003c/b\u003e Input your recording settings and deep learning model of choice, and \u003ci\u003eacoupi\u003c/i\u003e handles the rest, sending detections where you need them.\n\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n## Requirements\n_acoupi_ has been designed to run on single-board computer devices like the [Raspberry Pi](https://www.raspberrypi.org/) (RPi).\nUsers should be able to download and test _acoupi_ software on any Linux-based machines with Python version \u003e=3.8,\u003c3.12 installed.\n\n- A Linux-based single board computer such as the Raspberry Pi 4B. \n- A SD Card with 64-bit Lite OS version installed.\n- A USB Microphone such as an AudioMoth, a µMoth, an Ultramic 192K/250K.\n\n\u003e [!TIP]\n\u003e **Recomended Hardware**\n\u003e \n\u003e The software has been extensively developed and tested with the RPi 4B. We advise users to select the RPi 4B or a device featuring similar specifications.\n\n\u003e [!IMPORTANT]\n\u003e \n\u003e Although acoupi has been tested across a range of Python versions, using external programs such as those provided by acoupi-birdnet and acoupi-batdetect2 may require a Python version that is compatible with those tools as well.\n\u003e Please refer to their respective documentation for specific installation requirements.\n\n## Installation\n\nTo install and use the bare-bone framework of acoupi on your embedded device follow these steps: \n\n**Step 1:** Install _acoupi_ and its dependencies. \n```bash\ncurl -sSL https://github.com/acoupi/acoupi/raw/main/scripts/setup.sh | bash\n```\n\n**Step 2:** Configure an _acoupi_ program.\n\n```bash\nacoupi setup --program `program-name`\n```\n\n_acoupi_ includes two pre-built programs; a `default` and a `connected` program.\nThe `default` program only records and saves audio files based on users' settings. This program does not do any audio processing neither send any messages, being comparable to an AudioMoth.\nThe `connected` program is similar to the `default` program but with the added capability of sending messages to a remote server. \n\nConfigure _acoupi_ `default` program\"\n\n```bash\nacoupi setup --program acoupi.programs.default\n```\n\nConfigure _acoupi_ `connected` program\"\n\n```bash\nacoupi setup --program acoupi.programs.connected\n```\n\n**Step 3:** Start the deployment of your _acoupi's_ configured program.\n\n```bash\nacoupi deployment start\n```\n\n\u003e [!TIP] \n\u003e To check what are the available commands for acoupi, enter `acoupi --help`.\n\n\n## Ready to use AI Bioacoustic Classifiers\n\n_acoupi_ simplifies the use and implementation of open-source AI bioacoustic models. Currently, it supports two classifiers: the `BatDetect2`, developed by [@macodha and al.](https://doi.org/10.1101/2022.12.14.520490), and the `BirdNET-Lite`, developed by [@kahst and al.](https://github.com/kahst).\n\n\u003e [!WARNING]\n\u003e **Licenses and Usage**\n\u003e \n\u003e Before using a pre-trained AI bioacoustic classifier, review its license to ensure it aligns with your intended use.\n\u003e `acoupi` programs built with these models inherit the corresponding model licenses.\n\u003e For further licensing details, refer to the [FAQ](https://acoupi.github.io/acoupi/faq/#licensing) section.\n\n\u003e [!WARNING]\n\u003e **Model Output Reliability**\n\u003e \n\u003e Please note that `acoupi` is not responsible for the accuracy or reliability of model predictions.\n\u003e It is crucial to understand the performance and limitations of each model before using it in your project.\n\n\u003e [!IMPORTANT]\n\u003e **Please make sure you are aware of their license, if you use these models.**\n\n### BatDetect2\n\nThe BatDetect2 bioacoustic DL model has been trained to detect and classify UK bats species.\nThe [*acoupi_batdetect2*](https://acoupi.github.io/acoupi_batdetect2/) repository provides users with a pre-built _acoupi_ program that can be configured and tailored to their use cases.\n\nStep 1: Install _acoupi_batdetect2_ program.\n\n```bash\nuv tool install -w acoupi-batdetect2 -p 3.12 acoupi\n```\n\nStep 2: Setup and configure _acoupi_batdetect2_ program.\n\n```bash\nacoupi setup --program acoupi_batdetect2.program\n```\n\n### BirdNET-Lite (COMING SOON!)\n\nThe BirdNET-Lite bioacoustic DL model has been trained to detect and classify a large number of bird species.\nThe [*acoupi_birdnet*](https://acoupi.github.io/acoupi_birdnet/) repository provides users with a pre-build _acoupi_ program that can be configured and tailored to their use cases of birds monitoring.\n\nInstall _acoupi_birdnet_ program.\n\n```bash\nuv tool install -w acoupi-birdnet -p 3.11 acoupi\n```\n\nSetup and configure _acoupi_birdnet_ program.\n\n```bash\nacoupi setup --program acoupi_birdnet.program\n```\n\n### In development 🐳🐘🐝\n\n\u003e [!TIP]\n\u003e **Interested in sharing your AI bioacoustic model with the community?**\n\u003e\n\u003e_acoupi_ allows you to integrate your own bioacoustic classifier model. If you already have a model and would like to share it with the community, we'd  love to hear from you! We are happy to offer guidance and support to help include your classifier in the _acoupi_ list of \"ready-to-use\" AI bioacoustic classifiers. \n\n## _acoupi_ Software\n\nAcoupi software is divided into two parts; the code-based architecture and the running application. The _acoupi_ framework is organised into layers that ensure standardisation of data while providing flexibility of configuration. The _acoupi_ application provides a simple command line interface (CLI) allowing users to configure the acoupi framework for deployment. \n\n### _acoupi_ Framework\nThe _acoupi_ software has been designed to provide maximum flexibility and keep away the internal complexity from a user. The architecture is made of four intricate elements, which we call the data schema, components, tasks, and programs. \n\nThe figure below provides a simplified example of an acoupi program. This program illustrates some of the most important data schema, components, and tasks.\n\n\u003cfigure\u003e\n    \u003cimg src=\"/docs/img/acoupi_program_simplified.png\" alt=\"*Figure 2: An example of a simplified _acoupi_ program\" width=\"90%\"\u003e\n    \u003cfigcaption\u003e\u003cb\u003eFigure 2: An example of a simplified \u003ci\u003eacoupi\u003c/i\u003e program.\u003c/b\u003eThis example program implements the four tasks; audio recording, model, communication and management. Each task is composed of components        executing specific actions such as recording an audio file, processing it, sending results, and storing associated metadata. The components input or output data objects defined by the data schema to validate format of  information flowing between components and tasks.\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\n\u003e [!TIP]\n\u003e **Refer to the [**Explanation**](https://acoupi.github.io/acoupi/explanation/section) of the documentation for full details on each of these elements.**\n\n### _acoupi_ Application\nAn _acoupi_ application consists of the full set of code that runs at the deployment stage. This includes a set of scripts made of an acoupi program with user configurations, celery files to organise queues and workers, and bash scripts to start, stop, and reboot the application processes. An acoupi application requires the acoupi package and related dependencies to be installed before a user can configure and run it. The figure below gives an overview of key stages related to the installation, configuration and runtime of an acoupi application.\n\n\u003cfigure\u003e\n    \u003cimg src=\"/docs/img/acoupi_installation_steps.png\" alt=\"*Figure 3: Steps to deploy an acoupi application\" width=\"90%\"\u003e\n    \u003cfigcaption\u003e\u003cb\u003eFigure 3: An visual diagram highlighting the elements of an \u003ci\u003eacoupi\u003c/i\u003e application.\u003c/b\u003eThree main steps are involved in setting up and running an \u003ci\u003eacoupi\u003c/i\u003e application: (1) installation, (2) configuration, and (3) deployment.\n    \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n## Features and development\n**acoupi** builds on other Python packages. The list of the most important packages and their functions is summarised below. For more information about each of them, make sure to check their respective documentation. \n- [PDM](https://pdm-project.org/2.10/) to manage package dependencies. \n- [Pydantic](https://docs.pydantic.dev/dev/) for data validation. \n- [Pytest](https://docs.pytest.org/en/7.4.x/) as a testing framework.\n- [Pony-ORM](https://ponyorm.org/) for databse queries. \n- [Celery](https://docs.celeryq.dev/en/stable/getting-started/introduction.html) to manage the processing of tasks. \n- [Jinja](#jinja) for text templating. \n","funding_links":[],"readme_doi_urls":["https://doi.org/10.1101/2022.12.14.520490"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/314844","html_url":"https://ost.ecosyste.ms/projects/314844"}