{"id":337307,"name":"Perch","description":"A bioacoustics research project that produces a bird species classifier, trained on over 10k species.","url":"https://github.com/google-research/perch","last_synced_at":"2026-04-20T16:30:24.242Z","repository":{"id":37040287,"uuid":"471504037","full_name":"google-research/perch","owner":"google-research","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-08T20:48:35.000Z","size":18929,"stargazers_count":339,"open_issues_count":32,"forks_count":67,"subscribers_count":13,"default_branch":"main","last_synced_at":"2026-04-11T12:02:20.841Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google-research.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-03-18T20:14:52.000Z","updated_at":"2026-04-10T11:58:33.000Z","dependencies_parsed_at":"2026-01-29T01:00:48.793Z","dependency_job_id":"2b5a92ee-3794-4f94-91bf-5e9a8d079648","html_url":"https://github.com/google-research/perch","commit_stats":{"total_commits":543,"total_committers":23,"mean_commits":"23.608695652173914","dds":0.6556169429097606,"last_synced_commit":"77edeff5800be0cc1af81bf8c078f70a1ad82f79"},"previous_names":["google-research/perch","google-research/chirp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/google-research/perch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fperch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fperch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fperch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fperch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google-research","download_url":"https://codeload.github.com/google-research/perch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fperch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31753550,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":"google-research","name":"Google Research","uuid":"43830688","kind":"organization","description":"","email":null,"website":"https://research.google","location":"Earth","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/43830688?v=4","repositories_count":226,"last_synced_at":"2023-03-02T14:20:27.989Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/google-research","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-13T06:07:28.793Z","updated_at":"2023-03-02T14:20:28.230Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google-research","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google-research/repositories"},"packages":[],"commits":{"id":1384665,"full_name":"google-research/perch","default_branch":"main","total_commits":710,"total_committers":30,"total_bot_commits":5,"total_bot_committers":1,"mean_commits":23.666666666666668,"dds":0.576056338028169,"past_year_total_commits":17,"past_year_total_committers":9,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":1.8888888888888888,"past_year_dds":0.7058823529411764,"last_synced_at":"2026-04-17T15:01:39.782Z","last_synced_commit":"bd0c84089ee40967bd9c2c1b193e0de5c8d567ab","created_at":"2023-09-22T19:02:58.332Z","updated_at":"2026-04-17T15:01:17.698Z","committers":[{"name":"Tom Denton","email":"tomdenton@google.com","login":"sdenton4","count":301},{"name":"Vincent Dumoulin","email":"vdumoulin@google.com","login":"vdumoulin","count":95},{"name":"Bart van Merriënboer","email":"bartvm@google.com","login":null,"count":80},{"name":"Malik Boudiaf","email":"mboudiaf@google.com","login":null,"count":49},{"name":"Chirp Team","email":"chirp-bio@google.com","login":null,"count":36},{"name":"Eleni Triantafillou","email":"etriantafillou@google.com","login":"eleniTriantafillou","count":35},{"name":"Jenny Hamer","email":"hamer@google.com","login":"bringingjoy","count":28},{"name":"Lauren Harrell","email":"laurenharrell@google.com","login":"laurenharrell","count":9},{"name":"mschulist","email":"mschulist2@gmail.com","login":"mschulist","count":9},{"name":"Matt Harvey","email":"mattharvey@google.com","login":"matt-har-vey","count":8},{"name":"malik","email":"malik.boudiaf@hotmail.fr","login":"mboudiaf","count":7},{"name":"Dan Morris","email":"agentmorris@gmail.com","login":"agentmorris","count":7},{"name":"Jake VanderPlas","email":"vanderplas@google.com","login":null,"count":6},{"name":"Marcus Chiam","email":"marcuschiam@google.com","login":"chiamp","count":6},{"name":"Peter Hawkins","email":"phawkins@google.com","login":"hawkinsp","count":5},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":5},{"name":"Laura Pak","email":"lpak@google.com","login":"pak-laura","count":4},{"name":"Rebecca Chen","email":"rechen@google.com","login":"rchen152","count":3},{"name":"jeffgeoff4","email":"jeff.geoff.mis@gmail.com","login":"jeffgeoff4","count":3},{"name":"Bart van Merriënboer","email":"bart.vanmerrienboer@gmail.com","login":"bartvm","count":3},{"name":"Vamsi Manchala","email":"vamsimanchala@google.com","login":"vamsimanchala","count":2},{"name":"Cristian Garcia","email":"cgarcia.e88@gmail.com","login":"cgarciae","count":1},{"name":"DongHyun Choi","email":"dhchoi@google.com","login":"cdh4696","count":1},{"name":"Hana Joo","email":"hanajoo@google.com","login":"h-joo","count":1},{"name":"Matej Aleksandrov","email":"maleksandrov@google.com","login":"AleksMat","count":1},{"name":"Ethan Manilow","email":"emanilow@google.com","login":null,"count":1},{"name":"Oleh Prypin","email":"oprypin@google.com","login":"oprypin","count":1},{"name":"Oscar Wahltinez","email":"owahltinez@google.com","login":"owahltinez","count":1},{"name":"Sergei Lebedev","email":"slebedev@google.com","login":"superbobry","count":1},{"name":"Yilei Yang","email":"yileiyang@google.com","login":"yilei","count":1}],"past_year_committers":[{"name":"Tom Denton","email":"tomdenton@google.com","login":"sdenton4","count":5},{"name":"Lauren Harrell","email":"laurenharrell@google.com","login":"laurenharrell","count":4},{"name":"Vincent Dumoulin","email":"vdumoulin@google.com","login":"vdumoulin","count":2},{"name":"Sergei Lebedev","email":"slebedev@google.com","login":"superbobry","count":1},{"name":"Oleh Prypin","email":"oprypin@google.com","login":"oprypin","count":1},{"name":"Matej Aleksandrov","email":"maleksandrov@google.com","login":"AleksMat","count":1},{"name":"Hana Joo","email":"hanajoo@google.com","login":"h-joo","count":1},{"name":"Cristian Garcia","email":"cgarcia.e88@gmail.com","login":"cgarciae","count":1},{"name":"Jake VanderPlas","email":"vanderplas@google.com","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fperch/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.908Z","repositories_count":6214331,"commits_count":900128597,"contributors_count":34915678,"owners_count":1143434,"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":"google-research/perch","html_url":"https://github.com/google-research/perch","last_synced_at":"2026-04-15T14:01:59.594Z","status":"active","issues_count":40,"pull_requests_count":337,"avg_time_to_close_issue":7427822.483870967,"avg_time_to_close_pull_request":3433160.887681159,"issues_closed_count":31,"pull_requests_closed_count":276,"pull_request_authors_count":10,"issue_authors_count":19,"avg_comments_per_issue":1.35,"avg_comments_per_pull_request":0.29376854599406527,"merged_pull_requests_count":85,"bot_issues_count":1,"bot_pull_requests_count":320,"past_year_issues_count":6,"past_year_pull_requests_count":36,"past_year_avg_time_to_close_issue":1367057.0,"past_year_avg_time_to_close_pull_request":3850845.277777778,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":18,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":0.4166666666666667,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":36,"past_year_merged_pull_requests_count":8,"created_at":"2023-09-22T19:03:15.368Z","updated_at":"2026-04-15T14:01:59.595Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fperch","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fperch/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":95,"python":31,"terraform":1},"issue_author_associations_count":{"NONE":27,"COLLABORATOR":13},"pull_request_author_associations_count":{"NONE":236,"CONTRIBUTOR":98,"COLLABORATOR":3},"issue_authors":{"sdenton4":13,"sammlapp":5,"Shiro-LK":3,"joshctaylor":3,"IamJeffG":2,"cbalantic":1,"Mattk70":1,"nnbuainain":1,"copybara-service[bot]":1,"ryanz22":1,"Tindtily":1,"cmentokreen":1,"justinchuby":1,"cparcerisas":1,"rudrakshkarpe":1,"mschulist":1,"jongalon":1,"KasparSoltero":1,"ilyassmoummad":1},"pull_request_authors":{"copybara-service[bot]":224,"dependabot[bot]":96,"IamJeffG":4,"peichins":4,"mschulist":2,"cparcerisas":2,"agentmorris":2,"BenCretois":1,"vdumoulin":1,"bringingjoy":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-16T00:00:09.014Z","repositories_count":14284987,"issues_count":34599481,"pull_requests_count":113218995,"authors_count":11235841,"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":{"dependencies":27,"python":27},"past_year_issue_author_associations_count":{"NONE":6},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":28,"NONE":8},"past_year_issue_authors":{"cbalantic":1,"cmentokreen":1,"justinchuby":1,"Mattk70":1,"sammlapp":1,"Shiro-LK":1},"past_year_pull_request_authors":{"dependabot[bot]":28,"copybara-service[bot]":8},"maintainers":[{"login":"sdenton4","count":13,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sdenton4"},{"login":"agentmorris","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/agentmorris"},{"login":"vdumoulin","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/vdumoulin"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":34,"PullRequestEvent":69,"ForkEvent":15,"IssuesEvent":11,"WatchEvent":81,"IssueCommentEvent":33,"PushEvent":120,"CreateEvent":37},"last_year":{"DeleteEvent":17,"PullRequestEvent":32,"ForkEvent":8,"IssuesEvent":2,"WatchEvent":45,"IssueCommentEvent":9,"PushEvent":37,"CreateEvent":21}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"poetry.lock","sha":null,"kind":"lockfile","created_at":"2022-07-08T18:42:39.794Z","updated_at":"2022-07-08T18:42:39.794Z","repository_link":"https://github.com/google-research/perch/blob/main/poetry.lock","dependencies":[{"id":122730267,"package_name":"absl-py","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":122730268,"package_name":"apache-beam","ecosystem":"pypi","requirements":"2.39.0","direct":false,"kind":"runtime","optional":false},{"id":122730269,"package_name":"appdirs","ecosystem":"pypi","requirements":"1.4.4","direct":false,"kind":"develop","optional":false},{"id":122730270,"package_name":"appnope","ecosystem":"pypi","requirements":"0.1.3","direct":false,"kind":"runtime","optional":false},{"id":122730271,"package_name":"argon2-cffi","ecosystem":"pypi","requirements":"21.3.0","direct":false,"kind":"runtime","optional":false},{"id":122730272,"package_name":"argon2-cffi-bindings","ecosystem":"pypi","requirements":"21.2.0","direct":false,"kind":"runtime","optional":false},{"id":122730273,"package_name":"astroid","ecosystem":"pypi","requirements":"2.11.6","direct":false,"kind":"runtime","optional":false},{"id":122730274,"package_name":"astunparse","ecosystem":"pypi","requirements":"1.6.3","direct":false,"kind":"runtime","optional":false},{"id":122730275,"package_name":"atomicwrites","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":122730276,"package_name":"attrs","ecosystem":"pypi","requirements":"21.4.0","direct":false,"kind":"runtime","optional":false},{"id":122730277,"package_name":"audioread","ecosystem":"pypi","requirements":"2.1.9","direct":false,"kind":"develop","optional":false},{"id":122730278,"package_name":"backcall","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"runtime","optional":false},{"id":122730279,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"4.11.1","direct":false,"kind":"runtime","optional":false},{"id":122730280,"package_name":"bleach","ecosystem":"pypi","requirements":"5.0.0","direct":false,"kind":"runtime","optional":false},{"id":122730281,"package_name":"cached-property","ecosystem":"pypi","requirements":"1.5.2","direct":false,"kind":"runtime","optional":false},{"id":122730282,"package_name":"cachetools","ecosystem":"pypi","requirements":"5.2.0","direct":false,"kind":"runtime","optional":false},{"id":122730283,"package_name":"certifi","ecosystem":"pypi","requirements":"2022.6.15","direct":false,"kind":"runtime","optional":false},{"id":122730284,"package_name":"cffi","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":122730285,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"2.0.12","direct":false,"kind":"runtime","optional":false},{"id":122730286,"package_name":"chex","ecosystem":"pypi","requirements":"0.1.3","direct":false,"kind":"runtime","optional":false},{"id":122730287,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":122730288,"package_name":"clu","ecosystem":"pypi","requirements":"0.0.7","direct":false,"kind":"runtime","optional":false},{"id":122730289,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.5","direct":false,"kind":"runtime","optional":false},{"id":122730290,"package_name":"commonmark","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":122730291,"package_name":"contextlib2","ecosystem":"pypi","requirements":"21.6.0","direct":false,"kind":"runtime","optional":false},{"id":122730292,"package_name":"crcmod","ecosystem":"pypi","requirements":"1.7","direct":false,"kind":"runtime","optional":false},{"id":122730293,"package_name":"cycler","ecosystem":"pypi","requirements":"0.11.0","direct":false,"kind":"runtime","optional":false},{"id":122730294,"package_name":"debugpy","ecosystem":"pypi","requirements":"1.6.0","direct":false,"kind":"runtime","optional":false},{"id":122730295,"package_name":"decorator","ecosystem":"pypi","requirements":"5.1.1","direct":false,"kind":"runtime","optional":false},{"id":122730296,"package_name":"defusedxml","ecosystem":"pypi","requirements":"0.7.1","direct":false,"kind":"runtime","optional":false},{"id":122730297,"package_name":"dill","ecosystem":"pypi","requirements":"0.3.1.1","direct":false,"kind":"runtime","optional":false},{"id":122730298,"package_name":"dm-tree","ecosystem":"pypi","requirements":"0.1.7","direct":false,"kind":"runtime","optional":false},{"id":122730299,"package_name":"docopt","ecosystem":"pypi","requirements":"0.6.2","direct":false,"kind":"runtime","optional":false},{"id":122730300,"package_name":"entrypoints","ecosystem":"pypi","requirements":"0.4","direct":false,"kind":"runtime","optional":false},{"id":122730301,"package_name":"etils","ecosystem":"pypi","requirements":"0.6.0","direct":false,"kind":"runtime","optional":false},{"id":122730302,"package_name":"execnet","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":122730303,"package_name":"fastavro","ecosystem":"pypi","requirements":"1.5.1","direct":false,"kind":"runtime","optional":false},{"id":122730304,"package_name":"fastjsonschema","ecosystem":"pypi","requirements":"2.15.3","direct":false,"kind":"runtime","optional":false},{"id":122730305,"package_name":"flatbuffers","ecosystem":"pypi","requirements":"1.12","direct":false,"kind":"runtime","optional":false},{"id":122730306,"package_name":"flax","ecosystem":"pypi","requirements":"0.5.1","direct":false,"kind":"runtime","optional":false},{"id":122730307,"package_name":"fonttools","ecosystem":"pypi","requirements":"4.33.3","direct":false,"kind":"runtime","optional":false},{"id":122730308,"package_name":"gast","ecosystem":"pypi","requirements":"0.4.0","direct":false,"kind":"runtime","optional":false},{"id":122730309,"package_name":"google-auth","ecosystem":"pypi","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":122730310,"package_name":"google-auth-oauthlib","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":122730311,"package_name":"google-pasta","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"runtime","optional":false},{"id":122730312,"package_name":"googleapis-common-protos","ecosystem":"pypi","requirements":"1.56.2","direct":false,"kind":"runtime","optional":false},{"id":122730313,"package_name":"grpcio","ecosystem":"pypi","requirements":"1.46.3","direct":false,"kind":"runtime","optional":false},{"id":122730314,"package_name":"h5py","ecosystem":"pypi","requirements":"3.7.0","direct":false,"kind":"runtime","optional":false},{"id":122730315,"package_name":"hdfs","ecosystem":"pypi","requirements":"2.7.0","direct":false,"kind":"runtime","optional":false},{"id":122730316,"package_name":"httplib2","ecosystem":"pypi","requirements":"0.18.1","direct":false,"kind":"runtime","optional":false},{"id":122730317,"package_name":"idna","ecosystem":"pypi","requirements":"3.3","direct":false,"kind":"runtime","optional":false},{"id":122730318,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"4.11.4","direct":false,"kind":"runtime","optional":false},{"id":122730319,"package_name":"importlib-resources","ecosystem":"pypi","requirements":"5.8.0","direct":false,"kind":"runtime","optional":false},{"id":122730320,"package_name":"iniconfig","ecosystem":"pypi","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":122730321,"package_name":"ipykernel","ecosystem":"pypi","requirements":"6.15.0","direct":false,"kind":"runtime","optional":false},{"id":122730322,"package_name":"ipython","ecosystem":"pypi","requirements":"7.34.0","direct":false,"kind":"runtime","optional":false},{"id":122730323,"package_name":"ipython-genutils","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"runtime","optional":false},{"id":122730324,"package_name":"ipywidgets","ecosystem":"pypi","requirements":"7.7.0","direct":false,"kind":"runtime","optional":false},{"id":122730325,"package_name":"isodate","ecosystem":"pypi","requirements":"0.6.1","direct":false,"kind":"runtime","optional":false},{"id":122730326,"package_name":"isort","ecosystem":"pypi","requirements":"5.10.1","direct":false,"kind":"runtime","optional":false},{"id":122730327,"package_name":"jax","ecosystem":"pypi","requirements":"0.3.13","direct":false,"kind":"runtime","optional":false},{"id":122730328,"package_name":"jaxlib","ecosystem":"pypi","requirements":"0.3.10","direct":false,"kind":"runtime","optional":false},{"id":122730329,"package_name":"jedi","ecosystem":"pypi","requirements":"0.18.1","direct":false,"kind":"runtime","optional":false},{"id":122730330,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.2","direct":false,"kind":"runtime","optional":false},{"id":122730331,"package_name":"joblib","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"develop","optional":false},{"id":122730332,"package_name":"jsonschema","ecosystem":"pypi","requirements":"4.6.0","direct":false,"kind":"runtime","optional":false},{"id":122730333,"package_name":"jupyter","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":122730334,"package_name":"jupyter-client","ecosystem":"pypi","requirements":"7.3.4","direct":false,"kind":"runtime","optional":false},{"id":122730335,"package_name":"jupyter-console","ecosystem":"pypi","requirements":"6.4.3","direct":false,"kind":"runtime","optional":false},{"id":122730336,"package_name":"jupyter-core","ecosystem":"pypi","requirements":"4.10.0","direct":false,"kind":"runtime","optional":false},{"id":122730337,"package_name":"jupyterlab-pygments","ecosystem":"pypi","requirements":"0.2.2","direct":false,"kind":"runtime","optional":false},{"id":122730338,"package_name":"jupyterlab-widgets","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":122730339,"package_name":"keras","ecosystem":"pypi","requirements":"2.9.0","direct":false,"kind":"runtime","optional":false},{"id":122730340,"package_name":"keras-preprocessing","ecosystem":"pypi","requirements":"1.1.2","direct":false,"kind":"runtime","optional":false},{"id":122730341,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"1.4.3","direct":false,"kind":"runtime","optional":false},{"id":122730342,"package_name":"lazy-object-proxy","ecosystem":"pypi","requirements":"1.7.1","direct":false,"kind":"runtime","optional":false},{"id":122730343,"package_name":"libclang","ecosystem":"pypi","requirements":"14.0.1","direct":false,"kind":"runtime","optional":false},{"id":122730344,"package_name":"librosa","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"develop","optional":false},{"id":122730345,"package_name":"llvmlite","ecosystem":"pypi","requirements":"0.38.1","direct":false,"kind":"develop","optional":false},{"id":122730346,"package_name":"markdown","ecosystem":"pypi","requirements":"3.3.7","direct":false,"kind":"runtime","optional":false},{"id":122730347,"package_name":"markupsafe","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":122730348,"package_name":"matplotlib","ecosystem":"pypi","requirements":"3.5.2","direct":false,"kind":"runtime","optional":false},{"id":122730349,"package_name":"matplotlib-inline","ecosystem":"pypi","requirements":"0.1.3","direct":false,"kind":"runtime","optional":false},{"id":122730350,"package_name":"mccabe","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":122730351,"package_name":"mistune","ecosystem":"pypi","requirements":"0.8.4","direct":false,"kind":"runtime","optional":false},{"id":122730352,"package_name":"ml-collections","ecosystem":"pypi","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":122730353,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":"runtime","optional":false},{"id":122730354,"package_name":"nbclient","ecosystem":"pypi","requirements":"0.6.4","direct":false,"kind":"runtime","optional":false},{"id":122730355,"package_name":"nbconvert","ecosystem":"pypi","requirements":"6.5.0","direct":false,"kind":"runtime","optional":false},{"id":122730356,"package_name":"nbformat","ecosystem":"pypi","requirements":"5.4.0","direct":false,"kind":"runtime","optional":false},{"id":122730357,"package_name":"nest-asyncio","ecosystem":"pypi","requirements":"1.5.5","direct":false,"kind":"runtime","optional":false},{"id":122730358,"package_name":"notebook","ecosystem":"pypi","requirements":"6.4.12","direct":false,"kind":"runtime","optional":false},{"id":122730359,"package_name":"numba","ecosystem":"pypi","requirements":"0.55.2","direct":false,"kind":"develop","optional":false},{"id":122730360,"package_name":"numpy","ecosystem":"pypi","requirements":"1.21.6","direct":false,"kind":"runtime","optional":false},{"id":122730361,"package_name":"oauthlib","ecosystem":"pypi","requirements":"3.2.0","direct":false,"kind":"runtime","optional":false},{"id":122730362,"package_name":"opt-einsum","ecosystem":"pypi","requirements":"3.3.0","direct":false,"kind":"runtime","optional":false},{"id":122730363,"package_name":"optax","ecosystem":"pypi","requirements":"0.1.2","direct":false,"kind":"runtime","optional":false},{"id":122730364,"package_name":"orjson","ecosystem":"pypi","requirements":"3.7.2","direct":false,"kind":"runtime","optional":false},{"id":122730365,"package_name":"packaging","ecosystem":"pypi","requirements":"21.3","direct":false,"kind":"runtime","optional":false},{"id":122730366,"package_name":"pandas","ecosystem":"pypi","requirements":"1.3.5","direct":false,"kind":"runtime","optional":false},{"id":122730367,"package_name":"pandocfilters","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":122730368,"package_name":"parso","ecosystem":"pypi","requirements":"0.8.3","direct":false,"kind":"runtime","optional":false},{"id":122730369,"package_name":"pexpect","ecosystem":"pypi","requirements":"4.8.0","direct":false,"kind":"runtime","optional":false},{"id":122730370,"package_name":"pickleshare","ecosystem":"pypi","requirements":"0.7.5","direct":false,"kind":"runtime","optional":false},{"id":122730371,"package_name":"pillow","ecosystem":"pypi","requirements":"9.1.1","direct":false,"kind":"runtime","optional":false},{"id":122730372,"package_name":"platformdirs","ecosystem":"pypi","requirements":"2.5.2","direct":false,"kind":"runtime","optional":false},{"id":122730373,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":122730374,"package_name":"pooch","ecosystem":"pypi","requirements":"1.6.0","direct":false,"kind":"develop","optional":false},{"id":122730375,"package_name":"prometheus-client","ecosystem":"pypi","requirements":"0.14.1","direct":false,"kind":"runtime","optional":false},{"id":122730376,"package_name":"promise","ecosystem":"pypi","requirements":"2.3","direct":false,"kind":"runtime","optional":false},{"id":122730377,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.29","direct":false,"kind":"runtime","optional":false},{"id":122730378,"package_name":"proto-plus","ecosystem":"pypi","requirements":"1.20.6","direct":false,"kind":"runtime","optional":false},{"id":122730379,"package_name":"protobuf","ecosystem":"pypi","requirements":"3.19.4","direct":false,"kind":"runtime","optional":false},{"id":122730380,"package_name":"psutil","ecosystem":"pypi","requirements":"5.9.1","direct":false,"kind":"runtime","optional":false},{"id":122730381,"package_name":"ptyprocess","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":122730382,"package_name":"py","ecosystem":"pypi","requirements":"1.11.0","direct":false,"kind":"runtime","optional":false},{"id":122730383,"package_name":"pyarrow","ecosystem":"pypi","requirements":"7.0.0","direct":false,"kind":"runtime","optional":false},{"id":122730384,"package_name":"pyasn1","ecosystem":"pypi","requirements":"0.4.8","direct":false,"kind":"runtime","optional":false},{"id":122730385,"package_name":"pyasn1-modules","ecosystem":"pypi","requirements":"0.2.8","direct":false,"kind":"runtime","optional":false},{"id":122730386,"package_name":"pycparser","ecosystem":"pypi","requirements":"2.21","direct":false,"kind":"runtime","optional":false},{"id":122730387,"package_name":"pydot","ecosystem":"pypi","requirements":"1.4.2","direct":false,"kind":"runtime","optional":false},{"id":122730388,"package_name":"pydub","ecosystem":"pypi","requirements":"0.25.1","direct":false,"kind":"runtime","optional":false},{"id":122730389,"package_name":"pygments","ecosystem":"pypi","requirements":"2.12.0","direct":false,"kind":"runtime","optional":false},{"id":122730390,"package_name":"pylint","ecosystem":"pypi","requirements":"2.13.9","direct":false,"kind":"runtime","optional":false},{"id":122730391,"package_name":"pymongo","ecosystem":"pypi","requirements":"3.12.3","direct":false,"kind":"runtime","optional":false},{"id":122730392,"package_name":"pyparsing","ecosystem":"pypi","requirements":"3.0.9","direct":false,"kind":"runtime","optional":false},{"id":122730393,"package_name":"pyrsistent","ecosystem":"pypi","requirements":"0.18.1","direct":false,"kind":"runtime","optional":false},{"id":122730394,"package_name":"pytest","ecosystem":"pypi","requirements":"7.1.2","direct":false,"kind":"runtime","optional":false},{"id":122730395,"package_name":"pytest-forked","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":122730396,"package_name":"pytest-shard","ecosystem":"pypi","requirements":"0.1.2","direct":false,"kind":"runtime","optional":false},{"id":122730397,"package_name":"pytest-xdist","ecosystem":"pypi","requirements":"2.5.0","direct":false,"kind":"runtime","optional":false},{"id":122730398,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.8.2","direct":false,"kind":"runtime","optional":false},{"id":122730399,"package_name":"pytz","ecosystem":"pypi","requirements":"2022.1","direct":false,"kind":"runtime","optional":false},{"id":122730400,"package_name":"pywin32","ecosystem":"pypi","requirements":"304","direct":false,"kind":"runtime","optional":false},{"id":122730401,"package_name":"pywinpty","ecosystem":"pypi","requirements":"2.0.5","direct":false,"kind":"runtime","optional":false},{"id":122730402,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0","direct":false,"kind":"runtime","optional":false},{"id":122730403,"package_name":"pyzmq","ecosystem":"pypi","requirements":"23.2.0","direct":false,"kind":"runtime","optional":false},{"id":122730404,"package_name":"qtconsole","ecosystem":"pypi","requirements":"5.3.1","direct":false,"kind":"runtime","optional":false},{"id":122730405,"package_name":"qtpy","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":122730406,"package_name":"ratelimiter","ecosystem":"pypi","requirements":"1.2.0.post0","direct":false,"kind":"runtime","optional":false},{"id":122730407,"package_name":"rdflib","ecosystem":"pypi","requirements":"6.1.1","direct":false,"kind":"runtime","optional":false},{"id":122730408,"package_name":"requests","ecosystem":"pypi","requirements":"2.28.0","direct":false,"kind":"runtime","optional":false},{"id":122730409,"package_name":"requests-oauthlib","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":122730410,"package_name":"resampy","ecosystem":"pypi","requirements":"0.2.2","direct":false,"kind":"develop","optional":false},{"id":122730411,"package_name":"rich","ecosystem":"pypi","requirements":"11.1.0","direct":false,"kind":"runtime","optional":false},{"id":122730412,"package_name":"rsa","ecosystem":"pypi","requirements":"4.8","direct":false,"kind":"runtime","optional":false},{"id":122730413,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"1.0.2","direct":false,"kind":"develop","optional":false},{"id":122730414,"package_name":"scipy","ecosystem":"pypi","requirements":"1.7.3","direct":false,"kind":"runtime","optional":false},{"id":122730415,"package_name":"send2trash","ecosystem":"pypi","requirements":"1.8.0","direct":false,"kind":"runtime","optional":false},{"id":122730416,"package_name":"setuptools","ecosystem":"pypi","requirements":"62.6.0","direct":false,"kind":"runtime","optional":false},{"id":122730417,"package_name":"setuptools-scm","ecosystem":"pypi","requirements":"7.0.0","direct":false,"kind":"runtime","optional":false},{"id":122730418,"package_name":"six","ecosystem":"pypi","requirements":"1.16.0","direct":false,"kind":"runtime","optional":false},{"id":122730419,"package_name":"soundfile","ecosystem":"pypi","requirements":"0.10.3.post1","direct":false,"kind":"develop","optional":false},{"id":122730420,"package_name":"soupsieve","ecosystem":"pypi","requirements":"2.3.2.post1","direct":false,"kind":"runtime","optional":false},{"id":122730421,"package_name":"sparqlwrapper","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":122730422,"package_name":"tensorboard","ecosystem":"pypi","requirements":"2.9.1","direct":false,"kind":"runtime","optional":false},{"id":122730423,"package_name":"tensorboard-data-server","ecosystem":"pypi","requirements":"0.6.1","direct":false,"kind":"runtime","optional":false},{"id":122730424,"package_name":"tensorboard-plugin-wit","ecosystem":"pypi","requirements":"1.8.1","direct":false,"kind":"runtime","optional":false},{"id":122730425,"package_name":"tensorflow","ecosystem":"pypi","requirements":"2.9.1","direct":false,"kind":"runtime","optional":false},{"id":122730426,"package_name":"tensorflow-datasets","ecosystem":"pypi","requirements":"4.6.0","direct":false,"kind":"runtime","optional":false},{"id":122730427,"package_name":"tensorflow-estimator","ecosystem":"pypi","requirements":"2.9.0","direct":false,"kind":"runtime","optional":false},{"id":122730428,"package_name":"tensorflow-io-gcs-filesystem","ecosystem":"pypi","requirements":"0.26.0","direct":false,"kind":"runtime","optional":false},{"id":122730429,"package_name":"tensorflow-metadata","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":122730430,"package_name":"termcolor","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":122730431,"package_name":"terminado","ecosystem":"pypi","requirements":"0.15.0","direct":false,"kind":"runtime","optional":false},{"id":122730432,"package_name":"threadpoolctl","ecosystem":"pypi","requirements":"3.1.0","direct":false,"kind":"develop","optional":false},{"id":122730433,"package_name":"tinycss2","ecosystem":"pypi","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":122730434,"package_name":"toml","ecosystem":"pypi","requirements":"0.10.2","direct":false,"kind":"runtime","optional":false},{"id":122730435,"package_name":"tomli","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"runtime","optional":false},{"id":122730436,"package_name":"toolz","ecosystem":"pypi","requirements":"0.11.2","direct":false,"kind":"runtime","optional":false},{"id":122730437,"package_name":"tornado","ecosystem":"pypi","requirements":"6.1","direct":false,"kind":"runtime","optional":false},{"id":122730438,"package_name":"tqdm","ecosystem":"pypi","requirements":"4.64.0","direct":false,"kind":"runtime","optional":false},{"id":122730439,"package_name":"traitlets","ecosystem":"pypi","requirements":"5.3.0","direct":false,"kind":"runtime","optional":false},{"id":122730440,"package_name":"typed-ast","ecosystem":"pypi","requirements":"1.5.4","direct":false,"kind":"runtime","optional":false},{"id":122730441,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":122730442,"package_name":"urllib3","ecosystem":"pypi","requirements":"1.26.9","direct":false,"kind":"runtime","optional":false},{"id":122730443,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.5","direct":false,"kind":"runtime","optional":false},{"id":122730444,"package_name":"webencodings","ecosystem":"pypi","requirements":"0.5.1","direct":false,"kind":"runtime","optional":false},{"id":122730445,"package_name":"werkzeug","ecosystem":"pypi","requirements":"2.1.2","direct":false,"kind":"runtime","optional":false},{"id":122730446,"package_name":"wheel","ecosystem":"pypi","requirements":"0.37.1","direct":false,"kind":"runtime","optional":false},{"id":122730447,"package_name":"widgetsnbextension","ecosystem":"pypi","requirements":"3.6.0","direct":false,"kind":"runtime","optional":false},{"id":122730448,"package_name":"wrapt","ecosystem":"pypi","requirements":"1.14.1","direct":false,"kind":"runtime","optional":false},{"id":122730449,"package_name":"yapf","ecosystem":"pypi","requirements":"0.32.0","direct":false,"kind":"runtime","optional":false},{"id":122730450,"package_name":"zipp","ecosystem":"pypi","requirements":"3.8.0","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2022-07-08T18:42:39.825Z","updated_at":"2022-07-08T18:42:39.825Z","repository_link":"https://github.com/google-research/perch/blob/main/pyproject.toml","dependencies":[{"id":122730451,"package_name":"python","ecosystem":"pypi","requirements":"\u003e=3.7.1,\u003c3.11","direct":true,"kind":"runtime","optional":false},{"id":122730452,"package_name":"absl-py","ecosystem":"pypi","requirements":"^1.0.0","direct":true,"kind":"runtime","optional":false},{"id":122730453,"package_name":"clu","ecosystem":"pypi","requirements":"^0.0.7","direct":true,"kind":"runtime","optional":false},{"id":122730454,"package_name":"flax","ecosystem":"pypi","requirements":"^0.5.1","direct":true,"kind":"runtime","optional":false},{"id":122730455,"package_name":"jax","ecosystem":"pypi","requirements":"^0.3.9","direct":true,"kind":"runtime","optional":false},{"id":122730456,"package_name":"ml-collections","ecosystem":"pypi","requirements":"^0.1.1","direct":true,"kind":"runtime","optional":false},{"id":122730457,"package_name":"optax","ecosystem":"pypi","requirements":"^0.1.2","direct":true,"kind":"runtime","optional":false},{"id":122730458,"package_name":"tensorflow","ecosystem":"pypi","requirements":"^2.8.0","direct":true,"kind":"runtime","optional":false},{"id":122730459,"package_name":"tensorflow-datasets","ecosystem":"pypi","requirements":"^4.6.0","direct":true,"kind":"runtime","optional":false},{"id":122730460,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.3.5","direct":true,"kind":"runtime","optional":false},{"id":122730461,"package_name":"etils","ecosystem":"pypi","requirements":"^0.6.0","direct":true,"kind":"runtime","optional":false},{"id":122730462,"package_name":"ratelimiter","ecosystem":"pypi","requirements":"^1.2.0.post0","direct":true,"kind":"runtime","optional":false},{"id":122730463,"package_name":"SPARQLWrapper","ecosystem":"pypi","requirements":"^2.0.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2023-02-17T17:31:23.342Z","updated_at":"2023-02-17T17:31:23.342Z","repository_link":"https://github.com/google-research/perch/blob/main/.github/workflows/ci.yml","dependencies":[{"id":7743599738,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7743599740,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"chirp/birb_sep_paper/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-02-17T17:31:23.398Z","updated_at":"2023-02-17T17:31:23.398Z","repository_link":"https://github.com/google-research/perch/blob/main/chirp/birb_sep_paper/requirements.txt","dependencies":[{"id":7743600241,"package_name":"absl-py","ecosystem":"pypi","requirements":"==1.0.0","direct":true,"kind":"runtime","optional":false},{"id":7743600242,"package_name":"apache-beam","ecosystem":"pypi","requirements":"==2.38.0","direct":true,"kind":"runtime","optional":false},{"id":7743600294,"package_name":"ml-collections","ecosystem":"pypi","requirements":"==0.1.1","direct":true,"kind":"runtime","optional":false},{"id":7743600295,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.8.0","direct":true,"kind":"runtime","optional":false},{"id":7743600296,"package_name":"tensorflow","ecosystem":"pypi","requirements":"==2.8.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci_no_jaxtrain.yml","sha":null,"kind":"manifest","created_at":"2026-01-29T01:00:48.630Z","updated_at":"2026-01-29T01:00:48.630Z","repository_link":"https://github.com/google-research/perch/blob/main/.github/workflows/ci_no_jaxtrain.yml","dependencies":[{"id":25806281808,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":25806281810,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2023-12-09T19:51:26.804Z","updated_at":"2023-12-09T19:51:26.804Z","repository_link":"https://github.com/google-research/perch/blob/main/Dockerfile","dependencies":[{"id":14996657486,"package_name":"python","ecosystem":"docker","requirements":"3.11","direct":true,"kind":"build","optional":false}]}],"score":9.31739944426959,"created_at":"2025-12-09T00:20:36.669Z","updated_at":"2026-04-20T16:30:24.266Z","avatar_url":"https://github.com/google-research.png","language":"Python","category":"Biosphere","sub_category":"Bioacoustics and Acoustic Data Analysis","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Perch\n\n![CI](https://github.com/google-research/perch/actions/workflows/ci.yml/badge.svg)\n\nA bioacoustics research project.\n\nCaution: This repository is for sharing open code artifacts relating to the Perch project; certain segments are out of date and pip install is unlikely to work (thanks to certain parts of Tensorflow slowly being abandoned). For inference and practical tooling, please try the [Perch-Hoplite repository](https://github.com/google-research/perch-hoplite).\n\n## Directory of Things\n\nWe have published quite a few things which utilize this repository!\n\n### Perch (and SurfPerch!)\n\nWe produce a bird species classifier, trained on over 10k species.\n\n* The current [released Perch model](https://www.kaggle.com/models/google/bird-vocalization-classifier/frameworks/tensorFlow2/variations/bird-vocalization-classifier) is available from Kaggle Models.\n* The current-best citation for the model is our paper: [Global birdsong embeddings enable superior transfer learning for bioacoustic classification](https://www.nature.com/articles/s41598-023-49989-z.epdf).\n* The [SurfPerch model](https://www.kaggle.com/models/google/surfperch), trained on a combination of birds, coral reef sounds, and general audio, is also available at Kaggle models. The associated paper is (as of this writing) [available as a preprint](https://arxiv.org/abs/2404.16436).\n\nThe major parts of the Perch model training code is broken up across the following files:\n\n* [Model frontend](https://github.com/google-research/perch/blob/main/chirp/models/frontend.py) - we use a PCEN melspectrogram.\n* [EfficientNet model](https://github.com/google-research/perch/blob/main/chirp/models/efficientnet.py)\n* [Training loop](https://github.com/google-research/perch/blob/main/chirp/train/classifier.py)\n* [Training launch script](https://github.com/google-research/perch/blob/main/chirp/projects/main.py)\n* [Export](https://github.com/google-research/perch/blob/main/chirp/export_utils.py) from JAX to Tensorflow and TFLite\n* New model components for Perch 2.0 can be found in [perch_2.py](https://github.com/google-research/perch/blob/main/chirp/models/perch_2.py) and [heads.py](https://github.com/google-research/perch/blob/main/chirp/models/heads.py).\n\n### Agile Modeling\n\nAgile modeling combines search and active learning to produce classifiers for novel concepts quickly.\n\nHere's [Tutorial Colab Notebook](https://colab.research.google.com/drive/1gPBu2fyw6aoT-zxXFk15I2GObfMRNHUq) we produced for [Climate Change AI](https://www.climatechange.ai/) and presented at their workshop at [NeurIPS 2023](https://www.climatechange.ai/papers/neurips2023/133).\n\nWe maintain three 'working' notebooks for agile modeling in this repository:\n\n* [`embed_audio.ipynb`](https://github.com/google-research/perch/blob/main/embed_audio.ipynb) for performing mass-embedding of audio.\n* [`agile_modeling.ipynb`](https://github.com/google-research/perch/blob/main/agile_modeling.ipynb) for search and active learning over embeddings.\n* [`analysis.ipynb`](https://github.com/google-research/perch/blob/main/analysis.ipynb) for running inference and performing call density estimation (see below).\n* The code for agile modeling is largely contained in the [inference directory](https://github.com/google-research/perch/tree/main/chirp/inference), which contains its own extensive README.\n\nThe agile modeling work supports a number of different models, including our models (Perch and SurfPerch, and the [multi-species whale classifier](https://www.kaggle.com/models/google/multispecies-whale)), BirdNet, and some general audio models like [YamNet](https://www.kaggle.com/models/google/yamnet) and [VGGish](https://www.kaggle.com/models/google/vggish). Adding support for additional models is fairly trivial.\n\n### Call Density\n\nWe provide some tooling for estimating the proportion of audio windows in a dataset containing a target call type or species - anything you have a classifier for.\n\nPaper: [All Thresholds Barred: Direct Estimation of Call Density in Bioacoustic Data](https://www.frontiersin.org/journals/bird-science/articles/10.3389/fbirs.2024.1380636/full)\n\nCode: See [call_density.py](https://github.com/google-research/perch/blob/main/chirp/inference/call_density.py) and [call_density_test.py](https://github.com/google-research/perch/blob/main/chirp/inference/tests/call_density_test.py). Note that the code contains some interactions with our broader 'agile modeling' work, though we have endeavoured to isolate the underlying mathematics in more modular functions.\n\n### BIRB Benchmark\n\nWe produced a benchmark paper for understanding model generalization when transferring from focal to passive acoustic datasets. The preprint is [available here](https://arxiv.org/abs/2312.07439).\n\nFor details on setting up the benchmark and evaluation protocol, please refer to this [brief readme](https://docs.google.com/document/d/1RasVkxIKKlUToFlJ8gZxaHqIE-mMy9G1MZwfK98Gb-I) with instructions. The evaluation codebase is in [perch/chirp/eval](https://github.com/google-research/perch/tree/main/chirp/eval).\n\nTo build the BIRB evaluation data, after [installing](#installation) the `chirp` package, run the following command from the repository's root directory:\n\n```bash\npoetry run tfds build -i chirp.data.bird_taxonomy,chirp.data.soundscapes \\\n    soundscapes/{ssw,hawaii,coffee_farms,sierras_kahl,high_sierras,peru}_full_length \\\n    bird_taxonomy/{downstream_full_length,class_representatives_slice_peaked}\n```\n\nThe process should take 36 to 48 hours to complete and use around 256 GiB of disk space.\n\n\n### Source-Free Domain Adaptation and NOTELA\n\nWe have a paper on 'source-free domain generalization,' which involves automatic model adaptation to data from a shifted domain. We have a [blog post](https://research.google/blog/in-search-of-a-generalizable-method-for-source-free-domain-adaptation/) where you can read more about it. The [paper](https://proceedings.mlr.press/v202/boudiaf23a.html) was published in ICML 2023. The code for this project has been archived. You can [download a snapshot](https://github.com/google-research/perch/releases/tag/sfda-codebase-snapshot) of the repository containing the code, which can be found in the `chirp/projects/sfda` directory.\n\n\n## Installation\n\nWe support installation on a generic Linux workstation.\nA GPU is recommended, especially when working with large datasets.\nThe recipe below is the same used by our continuous integration testing.\n\nSome users have successfully used our repository with the Windows Linux\nSubsystem, or with Docker in a cloud-based virtual machine. Anecdotally,\ninstallation on OS X is difficult.\n\nYou will need the following dependencies.\n\n```bash\n# Install Poetry for package management\ncurl -sSL https://install.python-poetry.org | python3 -\n\n# Install dependencies for librosa\nsudo apt-get install libsndfile1 ffmpeg\n\n# Install all dependencies specified in the poetry configs.\n# Note that for Windows machines, you can remove the `--with nonwindows`\n# option to drop some optional dependencies which do not build for Windows.\npoetry install  --with jaxtrain --with nonwindows\n```\n\nRunning `poetry install` installs all Perch dependencies into a new virtual environment, in which you can run the Perch code base. To run the tests, use:\n\n```bash\npoetry run python -m unittest discover -s chirp/tests -p \"*test.py\"\npoetry run python -m unittest discover -s chirp/inference/tests -p \"*test.py\"\n```\n\n### Lightweight Inference\n\nNote that if you only need the python notebooks for use with pre-trained models,\nyou can install with lighter dependencies:\n\n```\n# Install inference-only dependencies specified in the poetry configs\npoetry install\n```\n\nAnd check that the inference tests succeed:\n```bash\npoetry run python -m unittest discover -s chirp/inference/tests -p \"*test.py\"\n```\n\n## Using a container\n\nAlternatively, you can install and run this project using a container via Docker. To build a container using the tag `perch`, run:\n\n```bash\ngit clone https://github.com/google-research/perch\ncd perch\ndocker build . --tag perch\n```\n\nAfter building the container, to run the unit tests, use:\n\n```bash\ndocker run --rm -t perch python -m unittest discover -s chirp/tests -p \"*test.py\"\n```\n\n*This is not an officially supported Google product.*\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["convolutional-neural-network","transformers","jax","deeplearning","vision-transformer","deep-neural-networks","attention","probabilistic-programming","bayesian-methods","python-framework"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/337307","html_url":"https://ost.ecosyste.ms/projects/337307"}