{"id":25930929,"url":"https://github.com/veralvx/audiotame","last_synced_at":"2025-07-21T00:33:12.351Z","repository":{"id":278383841,"uuid":"932558081","full_name":"veralvx/audiotame","owner":"veralvx","description":"A command-line tool that normalizes audio and reduces noise. Optional Gradio Web Ui","archived":false,"fork":false,"pushed_at":"2025-06-20T00:25:31.000Z","size":175,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-20T01:27:43.478Z","etag":null,"topics":["audio","audio-effect","audio-norm","audio-processing","bash","bash-script","denoise","denoiser","denoising","docker","docker-container","dockerfile","ffmpeg","gradio","gradio-ui","normalization","normalize","normalizer","shellscript","web-ui"],"latest_commit_sha":null,"homepage":"https://huggingface.co/spaces/veralvx/audiotame","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/veralvx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"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,"zenodo":null}},"created_at":"2025-02-14T05:26:18.000Z","updated_at":"2025-06-20T00:25:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"e053f1b5-46d1-4226-a941-f62d204d1b49","html_url":"https://github.com/veralvx/audiotame","commit_stats":null,"previous_names":["lvxvvv/audiotame","veralvx/audiotame"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/veralvx/audiotame","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veralvx%2Faudiotame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veralvx%2Faudiotame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veralvx%2Faudiotame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veralvx%2Faudiotame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/veralvx","download_url":"https://codeload.github.com/veralvx/audiotame/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veralvx%2Faudiotame/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266221321,"owners_count":23894966,"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","audio-effect","audio-norm","audio-processing","bash","bash-script","denoise","denoiser","denoising","docker","docker-container","dockerfile","ffmpeg","gradio","gradio-ui","normalization","normalize","normalizer","shellscript","web-ui"],"created_at":"2025-03-03T23:55:46.176Z","updated_at":"2025-07-21T00:33:12.324Z","avatar_url":"https://github.com/veralvx.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AudioTame\n\nA command-line tool that normalizes audio and reduces noise. This tool aims to effortless create an audio file that is high in quality. It targets an integrated loudness (LUFS, RMS) close to 20, by default. It uses [ffmpeg-normalize](https://github.com/slhck/ffmpeg-normalize) and additional ffmpeg filters to achieve the desired result, as well as SoX and mp3gain.\n\nAudiotame has an [ACX Check](#acx-check). Notice, however, that while meeting these requirements may be desirable for some users, it not guaranteed to be achieved on the first run without some tweaks.\n\nAlso, it uses Bash, so it is not expected to work on Windows systems, unless used under WSL or containers.\n\nA live demo is running on [HuggingFace](https://huggingface.co/spaces/veralvx/audiotame)\n\n**Contents**\n\n- [Installation](#installation)\n    - [System Packages](#system-packages)\n    - [Pip](#pip-package)\n    - [Docker/Podman](#dockerpodman-image)\n        - [Build from Source](#build-the-image-from-source)\n        - [Pull the Image](#pull-the-image)\n- [Usage](#usage)\n    - [CLI](#cli)\n        - [Tame Audio](#tame-audio)\n        - [ACX Check](#acx-check)\n        - [Environment File](#environment-file)\n    - [Gradio](#gradio)\n\n\n## Installation\n\n### System Packages\n\n- `ffmpeg`\n- `sox`\n- `mp3gain`\n- `python3`\n- `python3-pip`\n\n\n### Pip Package\n\n```\npython3 -m pip install audiotame\n```\n\nIf you wish to use this program with Gradio's Web UI:\n\n```\npython3 -m pip install audiotame[gui]\n```\n\nNotice: even installing the `pip` package, you still need to install system packages.\n\n\n### Docker/Podman Image\n\n#### Build the Image from Source\n\n```\ngit clone --recurse-submodules https://github.com/veralvx/audiotame.git audiotame\ncd audiotame\npodman build . -t audiotame\n```\n\n#### Pull the Image\n\n```\npodman pull ghcr.io/veralvx/audiotame:cli\n```\n\n```\npodman pull ghcr.io/veralvx/audiotame:gradio\n```\n\nThen, you can run:\n\n```\npodman run --rm -it --volume \"$(pwd)\":/workspace audiotame:cli\n```\n\n```\npodman run -it -p 7860:7860 audiotame:gradio\n```\n\n#### Using Alias\n\nUse an alias in your `~/.bashrc`:\n\n```\nalias audiotame='podman run --rm --volume $(pwd):/workspace audiotame:cli'\n```\n\n```\nalias audiotame:gradio='podman run -it --rm -p 7860:7860 audiotame:gradio'\n```\n\n\n```\necho \"alias audiotame='podman run --rm --volume \\$(pwd):/workspace audiotame:cli'\" \u003e\u003e ~/.bashrc\n```\n\n```\necho \"alias audiotame:gradio='podman run -it --rm -p 7860:7860 audiotame:gradio'\" \u003e\u003e ~/.bashrc\n```\n\nThen,\n\n```\nsource ~/.bashrc\n```\n\nThe directory from wich you run `audiotame` command will be mounted in `/workspace`, which is also the working directory. So, a file named `audio.wav` in your current directory can be passed to the program with:\n\n```\naudiotame audio.wav\n```\n\n## Usage:\n\n### CLI\n\n#### Tame Audio\n\n\n```\nUsage: audiotame {path_to_file | --gradio} [operation] [operation_arg]\n\nFlag:\n  --gradio                Start Gradio server\n\nOperations:\n  pass                    Do not alter peak level db\n  stats                   Display audio file statistics\n  acx                     Check for ACX compatibility\n  sr \u003csample_rate\u003e        Change sample rate (e.g., 44100)\n  br \u003cbitrate\u003e            Change bitrate (e.g., 128k, 320k)\n  convert \u003cformat\u003e        Convert to specified format (e.g., mp3, wav)\n  extract                 Extract audio from video\n```\n\n\nExample:\n\n```\naudiotame path_to_file\n```\n\nThis outputs `file-tamed.wav` in the same directory as the file is located.\n\n\n**Notice**: The functions below - [change peak level](#change-peak-level), [change sample rate](#change-sampling-rate), [change bit rate](#change-bit-rate) - may not work with all file formats. Changing peak level and sampling rate always work for `.wav` files, but that not may be the case for other file formats. Also, except for changing the peak level, the other functions are standalone, that is, they are not run inside the main function of the program\n\n##### Change peak level\n\nSet the db limit for the audio. For example, to tweak to -5.0 before normalization and to -3.0 after normalization:\n\n\n```\naudiotame path_to_file -5.0 -3.0\n```\n\nIf you wish to tweak the peak only after the normalization:\n\n```\naudiotame path_to_file pass -3.0\n```\n\n##### Change Sampling Rate\n\n```\naudiotame path_to_file sr num\n```\n\nExample:\n\nChange the sampling rate of `audio.wav` to 44.1khz\n\n```\naudiotame audio.wav sr 44100\n```\n\n##### Convert\n\n```\naudiotame path_to_file convert file_extension\n```\n\nExample:\n\n\n```\naudiotame audio.wav convert mp3\n```\n\n##### Extract Audio\n\n```\naudiotame path_to_file convert extract\n```\n\n\nExample:\n\n\n```\naudiotame vid.mp4 extract\n```\n\n\n##### Change Bit Rate\n\n```\naudiotame path_to_file br numk\n```\n\nExample:\n\nChange the sampling rate of `audio.wav` to 192kbps\n\n```\naudiotame audio.wav br 192k\n```\n\n\n\n##### Stats\n\nCheck stats of an audio:\n\n```\naudiotame path_to_file stats\n```\n\n\n\n##### ACX Check\n\n`acx` can be passed as the second argument to verify if an audio complies with [ACX's requirements](https://help.acx.com/s/article/what-are-the-acx-audio-submission-requirements):\n\n\n```\naudiotame path_to_file acx\n```\n\n\n| **Parameter**           | **Requirement**         |\n|-------------------------|-------------------------|\n| Integrated Loudness     | –23 dB to –18 dB        |\n| Peak Level              | ≤ –3 dB                 |\n| Bit Rate                | ≥ 192 kbps (CBR)        |\n| Sample Rate             | 44.1 kHz                |\n\n\n##### Environment File\n\nThis program uses some variables as default:\n\n```\nCONVERT_LOSSY_TO_WAV=1\nDB_PEAK_BEFORE_ALL=\"-100\"\nDB_PEAK_AFTER_NORM=\"-100\"\nNORM_TYPE=\"ebu\"\nLOUD_TARGET=\"-21\"\nARNNDN=0\nARNNDN_MODEL=\"cb.rnnn\"\nSOX_DENOISE=1\nSOX_FACTOR=0.21\nSOX_NOISE_THRESHOLD=\"-50\"\nSOX_NOISE_MIN_DURATION=0.5\nREGULAR_DENOISE=1\nREGULAR_NOISE_THRESHOLD=\"-50\"\nSILENCE_FLOOR=\"-60\"\nDEBUG=0\n```\n\n- `CONVERT_LOSSY_TO_WAV`: if the input format is a lossy format, the program will convert to `.wav`;\n\n- `NORM_TYPE`: Normalization type: `ebu` ou `rms`;\n\n- `LOUD_TARGET`: Normalization loudness target;\n\n- `ARNNDN`: whether to use RNN (ffmpeg's arnndn filter). Must be `0` or `1`;\n\n- `SOX_DENOISE`: whether to denoise (except for arnndn, which is a separete category) the audio or not with sox. Must be `0` or `1`. If `0`;\n\n- `SOX_FACTOR`: the factor that sox will use to denoise your audio. 0 is none, 1 is maximum. best values are regarded to be in 0.2-0.3 range;\n\n- `SOX_NOISE_THRESHOLD`: the dB value that sets a threshold below which sound is considered noise by sox;\n\n- `SOX_NOISE_MIN_DURATION`: the minimum duration that a sound that is below the threshold to be considered noise by sox. The default is 0.5s;\n\n- `REGULAR_DENOISE`: whether to denoise using ffmpeg's regular filter (lowers intensity of audio below the threshold);\n\n- `REGULAR_NOISE_THRESHOLD`: he dB value that sets a threshold below which sound is considered noise by ffmpeg;\n\n- `SILENCE_FLOOR`: the dB value that sets a threshold below which sound is considered silence.\n\n- `DEBUG`: will print to the console stats of audio files generated at each step.\n\n`NORM_TYPE` and `LOUD_TARGET` are set in accordance to [ffmpeg-normalize](https://github.com/slhck/ffmpeg-normalize).\n\nAvailable `ARNNDN` models are in (https://github.com/richardpl/arnndn-models). \n\nYou can override these values with a `.env` file in the directory from which you run audiotame. Accepted names are `audiotame.env`, `env.audiotame`, `.env`. Or can have a file in `~/.env.audiotame` or in `~/.config/.env.audiotame`\n\nExample of a `.env` file:\n\n```\nexport NORM_TYPE=\"rms\"\nexport LOUD_TARGET=\"-14\"\nexport ARNNDN=1\n```\n\n### Gradio\n\nAfter installing the package with [pip](#pip-package), you can launch gradio with:\n\n```\naudiotame --gradio\n```\n\nOr, you can pull the [gradio image](#dockerpodman-image)\n\n\n![](assets/demo.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveralvx%2Faudiotame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fveralvx%2Faudiotame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveralvx%2Faudiotame/lists"}