{"id":24796345,"url":"https://github.com/anthonytedja/speakcv","last_synced_at":"2026-05-09T01:13:07.803Z","repository":{"id":119358789,"uuid":"487112467","full_name":"anthonytedja/speakCV","owner":"anthonytedja","description":"speakCV. desktop client automates @Zoom actions with OpenCV","archived":false,"fork":false,"pushed_at":"2022-06-30T15:43:43.000Z","size":76070,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T20:18:34.519Z","etag":null,"topics":["bootstrap","computer-vision","dlib","machine-learning","opencv","scipy","tkinter","zoom"],"latest_commit_sha":null,"homepage":"https://speakcv.anthonytedja.com","language":"HTML","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/anthonytedja.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":"2022-04-29T21:16:43.000Z","updated_at":"2024-01-22T04:02:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"4b71749b-2178-409c-8e89-3cafd2a4f7ae","html_url":"https://github.com/anthonytedja/speakCV","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/anthonytedja/speakCV","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonytedja%2FspeakCV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonytedja%2FspeakCV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonytedja%2FspeakCV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonytedja%2FspeakCV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anthonytedja","download_url":"https://codeload.github.com/anthonytedja/speakCV/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonytedja%2FspeakCV/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32803654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"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"}},"keywords":["bootstrap","computer-vision","dlib","machine-learning","opencv","scipy","tkinter","zoom"],"created_at":"2025-01-30T00:33:02.705Z","updated_at":"2026-05-09T01:13:07.788Z","avatar_url":"https://github.com/anthonytedja.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpeakCV\n\n[![Preview](assets/img/thumbnail.jpg)](https://anthonytedja.github.io/speakCV/)\n\n\u003e SpeakCV is a desktop client that automates video call actions with OpenCV.\n\n## Setup\n\nVisit our [website](https://anthonytedja.github.io/speakCV/) and click the download button to get the zip file containing SpeakCV. (you will only need the speech_code folder), or get the speech_code folder directly from this repository.\n\n![Download](assets/img/download.jpg)\n\n### Zoom Settings\n\nUnder the Audio Section, make sure to enable microphone premute when joining a meeting so SpeakCV. will toggle correctly.\n\n![Mute](assets/img/mute.jpg)\n\nUnder the Keyboard Shortcuts Section, make sure to enable the global shortcut for Mute/Unmute My Audio as Alt+A to ensure SpeakCV. will work in the background.\n\n![Shortcut](assets/img/shortcut.jpg)\n\n### Installing OBS\n\nEnsure you have [OBS](https://obsproject.com/download) installed on your PC to use your webcam in Zoom with SpeakCV.\n\n### Installing Anaconda\n\nYou will need  [Anaconda](https://www.anaconda.com/) in order to install the necessary dependencies for SpeakCV.\n\nAfter installing Anaconda, open up Anaconda Powershell Prompt / Anaconda Prompt for the following commands.\n\nYou will need Python 3.9.12+ for SpeakCV. Check your current python version in the terminal with `python --version`\n\n```bash\n$ python --version\nPython 3.9.12\n```\n\nUse the following command to install the correct version if your python version is not above 3.9.12:\n\n```bash\nconda install python=3.9.12\n```\n\nCreate the environment from the `environment.yaml` file to install the dependencies:\n\n```bash\nconda env create -f environment.yaml\n```\n\n## Usage\n\nActivate the environment:\n\n```bash\nconda activate deerhack\n```\n\nRun the GUI:\n\n```bash\npython gui.py\n```\n\nNow you're all set to use SpeakCV. alongside Zoom!\n\n## Documentation\n\n### :thought_balloon: Inspiration\n\nThroughout our Zoom university journey, our team noticed that we often forget to unmute our mics when we talk, or forget to mute it when we don't want others to listen in. To combat this problem, we created SpeakCV, a desktop client that automatically mutes and unmutes your mic for you using computer vision to understand when you are talking.\n\n### :wrench: How We Built It\n\nWe used Dlib's HOG-based face detector to map out landmark point on a user's face. We used a pre-existing model to extract 68 landmark coordinates which map to contours on a user's face. These landmark points can be used to map a user's facial features such as there eyebrows, eyes, nose, jaw, and mouth.\n\n![Dots](assets/img/dots.jpg)\n\nFor SpeakCV, we are interested in the 20 landmark points used to map out a user's mouth. We used these points to calculate the aspect ratio of a user's mouth at any given time. We determined that if the aspect ratio of a user is above a certain threshold, we can reasonably assume that user is speaking. Once this is detected, SpeakCV. unmutes a user during their zoom call. When the user closes there mouth again, SpeakCV. will mute the user.\n\nWe used Tkinter to create a user-friendly interface that can be used to launch SpeakCV. The interface gives the user the option to see a debug window, which shows the detected facial feature in real time using OpenCV. The interface also allows the user to change the default mute delay from 5 seconds to whatever suits them.\n\n### :star: The Features\n\n- Automatic Zoom muting/unmuting based on user speech\n- Customizable mute timeout duration\n- Debug mode for developers\n\n### :brain: What we learned\n\n- How to setup and use virtual environments in Anaconda to ensure the program can run locally without issues.\n- Working with virtual video/audio to access the streams from our own program.\n- GUI creation for Python applications with Tkinter.\n\n### :heart: What's next\n\n- Improve the precision of the shape recognition model, by further adjusting the mouth aspect ratio or by tweaking the contour spots used in the algorithm for determining a user's mouth shape.\n- Moving the application to the Zoom app marketplace by making the application with the Zoom SDK, which requires migrating the application to C++.\n- Another option is to use the Zoom API and move the application onto the web.\n\n### :link: The Links\n\n- [Website](https://anthonytedja.github.io/speakCV/)\n- [Devpost](https://devpost.com/software/speakcv)\n- [Demo Video](https://www.youtube.com/watch?v=s5Hf1rLZhns)\n\n### :hammer: The Team\n\n- [@anthonytedja](https://github.com/anthonytedja)\n- [@raghavst](https://github.com/raghavst)\n- [@kevshinXP](https://github.com/kevshinXP)\n- [@hani64](https://github.com/hani64)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonytedja%2Fspeakcv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanthonytedja%2Fspeakcv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonytedja%2Fspeakcv/lists"}