{"id":28317436,"url":"https://github.com/royshil/obs-cleanstream","last_synced_at":"2025-06-24T14:31:24.862Z","repository":{"id":173535768,"uuid":"650811276","full_name":"royshil/obs-cleanstream","owner":"royshil","description":"CleanStream is an OBS plugin that uses AI to clean live audio streams from unwanted words and utterances","archived":false,"fork":false,"pushed_at":"2024-12-19T16:42:08.000Z","size":71684,"stargazers_count":166,"open_issues_count":13,"forks_count":13,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-10T02:17:54.665Z","etag":null,"topics":["ai","obs","obs-plugin","obs-studio","obs-studio-plugin","plugin","profanity-blocking","profanity-detection","profanity-filter","profanity-filtering","real-time-filter","real-time-transcription","realtime-detection","realtime-transcribe","speech-to-text","transcription","whisper"],"latest_commit_sha":null,"homepage":"https://obsproject.com/forum/resources/cleanstream-remove-uhs-ums-profanity-in-your-live-stream-or-recording-with-ai.1732/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/royshil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":["royshil"]}},"created_at":"2023-06-07T21:29:50.000Z","updated_at":"2025-06-07T12:55:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"7c9354eb-ac95-4b45-9948-0abad0f55f57","html_url":"https://github.com/royshil/obs-cleanstream","commit_stats":{"total_commits":133,"total_committers":1,"mean_commits":133.0,"dds":0.0,"last_synced_commit":"a31bb541d92673218260e65649affa1027096e12"},"previous_names":["royshil/obs-cleanstream","obs-ai/obs-cleanstream","occ-ai/obs-cleanstream","locaal-ai/obs-cleanstream"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/royshil/obs-cleanstream","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-cleanstream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-cleanstream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-cleanstream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-cleanstream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/royshil","download_url":"https://codeload.github.com/royshil/obs-cleanstream/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royshil%2Fobs-cleanstream/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260167220,"owners_count":22968817,"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":["ai","obs","obs-plugin","obs-studio","obs-studio-plugin","plugin","profanity-blocking","profanity-detection","profanity-filter","profanity-filtering","real-time-filter","real-time-transcription","realtime-detection","realtime-transcribe","speech-to-text","transcription","whisper"],"created_at":"2025-05-25T05:04:00.059Z","updated_at":"2025-06-24T14:31:24.854Z","avatar_url":"https://github.com/royshil.png","language":"C++","funding_links":["https://github.com/sponsors/royshil"],"categories":[],"sub_categories":[],"readme":"# ⚠️ Stalled ⚠️ This project is not under active developmet\n\n## Cleanstream - Live Speech Filter using AI\n\nCleanStream is an OBS plugin that cleans live audio streams from unwanted words and utterances using real-time local AI.\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub](https://img.shields.io/github/license/locaal-ai/obs-cleanstream)](https://github.com/locaal-ai/obs-cleanstream/blob/main/LICENSE)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/locaal-ai/obs-cleanstream/push.yaml)](https://github.com/locaal-ai/obs-cleanstream/actions/workflows/push.yaml)\n[![Total downloads](https://img.shields.io/github/downloads/locaal-ai/obs-cleanstream/total)](https://github.com/locaal-ai/obs-cleanstream/releases)\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/locaal-ai/obs-cleanstream)](https://github.com/locaal-ai/obs-cleanstream/releases)\n\n\u003c/div\u003e\n\n## Usage\n\n- Add the plugin to any audio-generating source\n- Adjust the settings\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://youtu.be/vgcK3K654FU\"\u003e\u003cimg src=\"https://github.com/locaal-ai/obs-cleanstream/assets/441170/59f0038a-4e0e-47ed-afb8-110acd463146\" width=\"40%\" /\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n## Download\nCheck out the [latest releases](https://github.com/locaal-ai/obs-cleanstream/releases) for downloads and install instructions.\n\n## Method\nThis video walkthrough (YouTube) will explain various parts of the code if you're looking to learn from what I've discovered.\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://youtu.be/HdSI3sUKwsY\" target=\"_blank\"\u003e\n        \u003cimg width=\"480\" src=\"https://img.youtube.com/vi/HdSI3sUKwsY/maxresdefault.jpg\" /\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n### Audio processing\n\nThe filter is running Whisper in real-time to detect words in small chunks of the incoming audio. For each chunck it produces a decision which then determines if the audio rendering will play the original audio or e.g. a beep or silence. The processing happens in a separate thread and therefore there's a built-in lag/delay mechanism to make sure the audio decision (play, beep, silence) is in-sync with the actual audio playback based on the timestamp. The built-in delay is adaptive since some systems (e.g. with CUDA) can make faster decisions.\n\nHere is an illustration of the process:\n\n![alt text](docs/image.png)\n\n## Requirements\n- OBS version 30+ for plugin versions 0.0.4+\n- OBS version 29 for plugin versions 0.0.2+\n- OBS version 28 for plugin versions 0.0.1\n\nWe do not support older versions of OBS since the plugin is using newer APIs.\n\n## Introduction\nCleanStream is an OBS plugin that cleans live audio streams from unwanted words and utterances, such as \"uh\"s and \"um\"s, and other words that you can configure, like profanity.\n\nSee our [resource on the OBS Forums](https://obsproject.com/forum/resources/cleanstream-remove-uhs-ums-profanity-in-your-live-stream-or-recording-with-ai.1732/) for additional information.\n\nIt is using a neural network ([OpenAI Whisper](https://github.com/openai/whisper)) to predict in real time the speech and remove the unwanted words.\n\nIt's using the [Whisper.cpp](https://github.com/ggerganov/whisper.cpp) project from [ggerganov](https://github.com/ggerganov) to run the Whisper network in a very efficient way.\n\nBut it is working and you can try it out. *Please report any issues you find.* 🙏 ([submit an issue](https://github.com/locaal-ai/obs-cleanstream/issues) or meet us on https://discord.gg/KbjGU2vvUz)\n\nWe're working on improving the plugin and adding more features. If you have any ideas or suggestions, please open an issue.\n\n## Building\n\nThe plugin was built and tested on Mac OSX, Windows and Ubuntu Linux. Help is appreciated in building on other OSs and packages.\n\nThe building pipelines in CI take care of the heavy lifting. Use them in order to build the plugin locally.\n\nStart by cloning this repo to a directory of your choice.\n\n### Mac OSX\n\nUsing the CI pipeline scripts, locally you would just call the zsh script.\n\n```sh\n$ ./.github/scripts/build-macos.zsh -c Release -t macos-x86_64\n```\n\n#### Install\nThe above script should succeed and the plugin files will reside in the `./release` folder off of the root. Copy the files to the OBS directory e.g. `/Users/you/Library/Application Support/obs-studio/obs-plugins`.\n\nTo get `.pkg` installer file, run\n```sh\n$ ./.github/scripts/package-macos.zsh -c Release -t macos-x86_64\n```\n(Note that maybe the outputs in the e.g. `build_x86_64` will be in the `Release` folder and not the `install` folder like `pakage-macos.zsh` expects, so you will need to rename the folder from `build_x86_64/Release` to `build_x86_64/install`)\n\n### Linux (Ubuntu-ish)\n\nUse the CI scripts again\n```sh\n$ ./.github/scripts/build-linux.sh\n```\n\n### Windows\n\nUse the CI scripts again, for example:\n\n```powershell\n\u003e .github/scripts/Build-Windows.ps1 -Configuration Release\n```\n\nThe build should exist in the `./release` folder off the root. You can manually install the files in the OBS directory.\n\n```powershell\n\u003e Copy-Item -Recurse -Force \"release\\Release\\*\" -Destination \"C:\\Program Files\\obs-studio\\\"\n```\n\n#### Building with CUDA support on Windows\n\nCleanStream will now build with CUDA support automatically through a prebuilt binary of Whisper.cpp from https://github.com/occ-ai/occ-ai-dep-whispercpp. The CMake scripts will download all necessary files.\n\nTo build with cuda add `CPU_OR_CUDA` as an environment variable (with `cpu`, `12.2.0` or `11.8.0`) and build regularly\n\n```powershell\n\u003e $env:CPU_OR_CUDA=\"12.2.0\"\n\u003e .github/scripts/Build-Windows.ps1 -Configuration Release\n```\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=locaal-ai/obs-cleanstream\u0026type=Date)](https://star-history.com/#locaal-ai/obs-cleanstream\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froyshil%2Fobs-cleanstream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froyshil%2Fobs-cleanstream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froyshil%2Fobs-cleanstream/lists"}