{"id":16766622,"url":"https://github.com/lucianodato/libspecbleach","last_synced_at":"2026-01-03T14:25:55.398Z","repository":{"id":38292607,"uuid":"477113768","full_name":"lucianodato/libspecbleach","owner":"lucianodato","description":"C library for audio noise reduction and other spectral effects","archived":false,"fork":false,"pushed_at":"2022-12-20T04:22:56.000Z","size":134,"stargazers_count":76,"open_issues_count":12,"forks_count":13,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-16T07:23:33.250Z","etag":null,"topics":["audio","broadband-noise-reduction","c","fft","library","noise-reduction","noise-removal","non-stationary-noise-reduction","spectral","spectral-processing","stationary-noise-reduction","stft"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucianodato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-02T16:43:54.000Z","updated_at":"2025-03-03T19:55:34.000Z","dependencies_parsed_at":"2023-01-29T23:45:51.291Z","dependency_job_id":null,"html_url":"https://github.com/lucianodato/libspecbleach","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianodato%2Flibspecbleach","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianodato%2Flibspecbleach/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianodato%2Flibspecbleach/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianodato%2Flibspecbleach/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucianodato","download_url":"https://codeload.github.com/lucianodato/libspecbleach/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243961752,"owners_count":20375304,"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":["audio","broadband-noise-reduction","c","fft","library","noise-reduction","noise-removal","non-stationary-noise-reduction","spectral","spectral-processing","stationary-noise-reduction","stft"],"created_at":"2024-10-13T06:07:01.622Z","updated_at":"2026-01-03T14:25:55.392Z","avatar_url":"https://github.com/lucianodato.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libspecbleach\n\n[![build](https://github.com/lucianodato/libspecbleach/actions/workflows/build.yml/badge.svg)](https://github.com/lucianodato/libspecbleach/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/lucianodato/libspecbleach/branch/main/graph/badge.svg)](https://codecov.io/gh/lucianodato/libspecbleach)\n[![License: LGPL v2.1](https://img.shields.io/badge/License-LGPL%20v2.1-blue.svg)](https://www.gnu.org/licenses/lgpl-2.1)\n\nC library for audio noise reduction and other spectral effects\n\n## Table of Contents\n\n- [Background](#background)\n- [De-noise Algorithms](#de-noise-algorithms)\n- [Build](#build)\n- [Installation](#installation)\n- [Usage Examples](#usage-examples)\n- [Development](#development)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Background\n\nThis library is based on the algorithms that were used in [noise-repellent](https://github.com/lucianodato/noise-repellent). These were extracted into a standalone library to remove the lv2 dependency. It was designed to be extensible and modular. It uses the concept of a spectral processor which itself uses a short time Fourier transform (STFT) to process the audio. There are two initial processors in place, one which uses the adaptive part of noise repellent and one that uses the manual capturing profile based denoising. The library could be extended with more spectral processors using any STFT-based algorithm such as de-crackle, de-click and other audio restoration algorithms.\n\n## De-noise Algorithms\n\nThere are several techniques implemented in the library that are being used in the denoisers, such as masking thresholds estimation, onset detectors, etc. All these are being used in conjunction to improve the very basic spectral subtraction algorithm. Most of the papers used are listed in the wiki of the project. Also a block diagram is provided to explain the reduction architecture.\n\n## Build\n\nIf you wish to compile yourself and install the library you will need:\n- A C compiling toolchain (GCC or Clang)\n- [Meson](https://mesonbuild.com/) build system (0.60.0 or newer)\n- [Ninja](https://ninja-build.org/) build tool\n- [FFTW3](http://www.fftw.org/) library (float version)\n- [libsndfile](https://github.com/libsndfile/libsndfile) (optional, for examples)\n\n## Installation\n\n```bash\ngit clone https://github.com/lucianodato/libspecbleach.git\ncd libspecbleach\nmeson setup build --buildtype=release\nmeson compile -C build\nsudo meson install -C build\n```\n\n## Build Options\n\nYou can configure the build using `-Doption=value`:\n\n- `enable_examples`: Build example applications (default: `false`). Requires `libsndfile`.\n- `enable_tests`: Build unit and integration tests (default: `false`). Requires `libsndfile`.\n- `static_deps`: Link internal dependencies (like FFTW3) statically (default: `false`). Useful for creating self-contained libraries.\n- `custom_warning_level`: 0-3 (default: `2`). Controls compiler warning verbosity.\n- `treat_warnings_as_errors`: Treat compiler warnings as errors (default: `false`).\n- `enable_sanitizers`: Enable sanitizers in debug builds (default: `false`).\n- `sanitize_address`: Enable AddressSanitizer (default: `false`).\n- `sanitize_undefined`: Enable UndefinedBehaviorSanitizer (default: `false`).\n\nExample for a static build with examples:\n```bash\nmeson setup build -Dstatic_deps=true -Denable_examples=true\nmeson compile -C build\n```\n\n\n## Usage Examples\n\nSimple console apps examples are provided to demonstrate how to use the library. It needs libsndfile to compile successfully. You can build them with:\n\n```bash\nmeson setup build --buildtype=release -Denable_examples=true\nmeson compile -C build\n```\n\n### Adaptive noise reduction\n\n```bash\n./build/example/adenoiser_demo \u003cinput file name\u003e \u003coutput file name\u003e\n```\n\n### Manual noise reduction\n\n```bash\n./build/example/denoiser_demo \u003cinput file name\u003e \u003coutput file name\u003e\n```\n\nIt will recognize any libsndfile supported format.\n\n## Development\n\n### Building for Development\n\nFor development builds with debugging symbols:\n\n```bash\nmeson setup build --buildtype=debug\nmeson compile -C build\n```\n\n### Code Formatting\n\nThe project uses `clang-format` for code formatting. To format the code:\n\n```bash\nmeson compile format -C build\n```\n\n### Running Tests\n\nIf tests are enabled:\n\n```bash\nmeson setup build -Denable_tests=true\nmeson test -C build\n```\n\n### Coverage\n\nTo generate coverage reports locally, you will need `gcovr` or `lcov` installed.\n\n```bash\nmeson setup build --buildtype=debug -Db_coverage=true\nmeson compile -C build\nmeson test -C build\nninja -C build coverage-html\n```\n\nThe report will be available in `build/meson-logs/coveragereport/index.html`.\n\n## License\n\nThis library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.\n\nSee [LICENSE](LICENSE) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucianodato%2Flibspecbleach","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucianodato%2Flibspecbleach","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucianodato%2Flibspecbleach/lists"}