NoMusic is a browser extension that removes background music from tab audio in real time with an entirely local processing pipeline.
- Captures the active tab audio stream.
- Runs speech enhancement in the browser with ONNX Runtime Web (
onnxruntime-web) and Web Audio worklets. - Offers multiple audio models (Standard and Lite) to balance between processing power and audio quality.
- Applies RNNoise denoising after enhancement.
- Auto-follows the active tab when the extension is enabled.
- Keeps processing on-device with no backend service.
- Supports native fullscreen for videos while the extension is active.
- Includes English and Arabic localizations for the popup interface.
The current extension is aimed at people who want to watch online video content without background music.
The extension is built around a Manifest V3 service worker and an offscreen document:
- background.js manages extension state, the offscreen document, active-tab tracking, tab capture orchestration, and popup messaging.
- offscreen.js creates the audio graph and coordinates the real-time processing pipeline.
- fastenhancer-worker.js runs the FastEnhancer ONNX model in a worker.
- ring-buffer-audio-processor.js bridges audio frames between the Web Audio graph and the worker through shared buffers.
- rnnoise-worklet.js runs RNNoise as an AudioWorklet stage.
- content.js is injected only into the captured tab to detect fullscreen events and synchronize OS-level window state.
- popup.js powers the browser action UI.
At a high level, the pipeline is:
- Capture the current tab audio.
- Feed stereo audio into the FastEnhancer worker.
- Pass the enhanced stream through per-channel RNNoise worklets.
- Play the processed result back to the user.
- manifest.json: Chrome extension manifest.
- background.js: Manifest V3 service worker.
- content.js: Fullscreen workaround script (injected into the captured tab only).
- offscreen.html: Offscreen host page.
- offscreen.js: Audio processing engine.
- popup.html: Popup UI.
- popup.js: Popup behavior.
- styles.css: Popup styling.
- assets: Bundled model and runtime assets.
- icons: Extension icons.
- Clone or download this repository.
- Open Chrome and go to chrome://extensions.
- Enable Developer mode.
- Select Load unpacked.
- Choose this project folder.
- There is no build step in the current repository. The extension can be loaded directly from source.
- The audio pipeline uses local model/runtime assets already committed under assets.
- Manifest permissions include tab capture, tabs, storage, active tab access, offscreen documents, and scripting (used solely to inject the fullscreen helper into the captured tab).
NoMusic is designed to process audio locally in the browser. This repository does not include a server component, remote inference service, or cloud upload path for captured audio.
This repository includes or depends on third-party runtime/model assets, including ONNX Runtime Web, RNNoise runtime assets, and the FastEnhancer model files committed under assets.
If you redistribute this project, keep the relevant third-party license terms, attribution requirements, and model usage terms in mind.
This project builds on open-source speech enhancement and inference work from the following repositories:
- FastEnhancer: https://github.com/aask1357/fastenhancer
- Source for the FastEnhancer speech-enhancement model family.
- The bundled
assets/fastenhancer_s.onnx(Standard) andassets/fastenhancer_t.onnx(Lite) are based on the FastEnhancer ONNX releases.
- RNNoise: https://github.com/xiph/rnnoise
- Source for the RNNoise denoising model/runtime used in the browser audio pipeline.
- The bundled assets/rnnoise.wasm and rnnoise-worklet.js are part of this integration layer.
- ONNX Runtime Web (
onnxruntime-web): https://github.com/microsoft/onnxruntime- Source for the ONNX Runtime Web engine used to execute the FastEnhancer model in-browser.
- Bundled runtime files live under assets/vendor/onnxruntime-web.
Credit goes to the authors and contributors of those projects for the underlying models, runtimes, and research this extension depends on.
This project is open-sourced under the ISC license. See LICENSE.

