{"id":16700914,"url":"https://github.com/armsnyder/open-ears","last_synced_at":"2026-05-09T09:09:39.293Z","repository":{"id":79906473,"uuid":"88011001","full_name":"armsnyder/open-ears","owner":"armsnyder","description":"Instant automated parrot trainer","archived":false,"fork":false,"pushed_at":"2022-12-08T19:55:03.000Z","size":45,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-14T06:12:04.363Z","etag":null,"topics":["docker","machine-learning","philips-hue","python","raspberry-pi","signal-processing","svm"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/armsnyder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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}},"created_at":"2017-04-12T04:51:28.000Z","updated_at":"2023-01-10T19:31:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"2d89fbd9-b870-4031-95af-72460411b367","html_url":"https://github.com/armsnyder/open-ears","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/armsnyder/open-ears","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fopen-ears","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fopen-ears/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fopen-ears/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fopen-ears/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/armsnyder","download_url":"https://codeload.github.com/armsnyder/open-ears/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fopen-ears/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262362078,"owners_count":23299124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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"}},"keywords":["docker","machine-learning","philips-hue","python","raspberry-pi","signal-processing","svm"],"created_at":"2024-10-12T18:26:32.924Z","updated_at":"2026-05-09T09:09:34.254Z","avatar_url":"https://github.com/armsnyder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Open Ears\n[![Build Status](https://travis-ci.org/armsnyder/open-ears.svg?branch=master)](https://travis-ci.org/armsnyder/open-ears)\n\n## The Problem\n\nI have a parrot named Greg who has recently started making a very specific, very load, \nhigh-pitched beep. When I am close enough to her cage, the sound is loud enough to cause real ear\ndamage.\n\n## The Solution\n\nOpen Ears is a Dockerized Python script which runs on a Raspberry Pi with a microphone. It \nconstantly monitors the sound near Greg's cage for the very specific beep that is a problem. When\nit detects the beep, it triggers a mild negative stimulus: it flashes a ceiling lamp near the cage.\n\nDisclaimer: Parrot training works best with rewarding positive behavior and ignoring negative\nbehavior. Open Ears is meant to supplement these methods and is very experimental.\n\n## Details\n\nOpen Ears runs several processes using the `multiprocessing` module. The processes that monitor the\nmicrophone input stream are layered in complexity such that the cheap processes like calculating \nthe volume are run before the more expensive processes like fourier transforms.\n\n## Deployment\n\nOpen Ears can be built and deployed as a Docker image. The reason for using Docker is to separate\nthe hairy system-level audio libraries from the base Raspberry Pi filesystem.\n\nSince it is intended to be deployed to the ARM-based Raspberry Pi, but built on x86-based machines, \nthe Docker image is built on top of the resin/armv7hf-debian-qemu image.\n\nContinuous deployment is enabled on this repository, so pushes to `master` trigger automated\nbuild and deployment directly to the Raspberry Pi under Greg's cage.\n\nNote that in order for microphones to be available inside the Docker container they must be bound.\n\nExample:\n```bash\n$ docker build . -t openears\n$ docker run -d --restart always --device /dev/snd -v /home/pi/out:/out openears\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmsnyder%2Fopen-ears","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmsnyder%2Fopen-ears","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmsnyder%2Fopen-ears/lists"}