{"id":31718493,"url":"https://github.com/bradsec/audionorm","last_synced_at":"2025-10-09T02:52:32.307Z","repository":{"id":316224126,"uuid":"1062489499","full_name":"bradsec/audionorm","owner":"bradsec","description":"Command line audio processing and transcription tools","archived":false,"fork":false,"pushed_at":"2025-09-23T10:21:49.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-23T12:28:48.888Z","etag":null,"topics":["audio-processing"],"latest_commit_sha":null,"homepage":"","language":"Python","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/bradsec.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-23T10:21:14.000Z","updated_at":"2025-09-23T10:29:55.000Z","dependencies_parsed_at":"2025-09-23T12:28:50.292Z","dependency_job_id":"36c6a390-02e1-446b-bf1f-56b8153e2a4f","html_url":"https://github.com/bradsec/audionorm","commit_stats":null,"previous_names":["bradsec/audionorm"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/bradsec/audionorm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsec%2Faudionorm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsec%2Faudionorm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsec%2Faudionorm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsec%2Faudionorm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradsec","download_url":"https://codeload.github.com/bradsec/audionorm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsec%2Faudionorm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000764,"owners_count":26082906,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["audio-processing"],"created_at":"2025-10-09T02:52:26.457Z","updated_at":"2025-10-09T02:52:32.303Z","avatar_url":"https://github.com/bradsec.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AudioNorm \u0026 AudioScribe\n\nCommand line audio processing and transcription tools combining FFmpeg,\nAI-based denoising, and speech recognition. Can be used with TTS-generated audio, podcasts, and voice recordings.\n\n## What These Tools Do\n\n### AudioNorm - Audio Enhancement \u0026 Cleanup\n\n- **AI-powered denoising** using SpeechBrain MTL-MIMIC and Demucs models\n- **Professional normalization** with EBU R128 loudness standards\n- **Vocal/background separation** with stem export functionality\n\n### AudioScribe - Audio Transcription\n\n- **Whisper-based transcription** using Faster-Whisper models\n- **Multi-language support** with auto-detection\n- **Timestamps and formatting** options\n\n## System Requirements\n\n- **Python 3.8+**\n- **FFmpeg** (must be in system PATH)\n\n## Installation\n\n### System Dependencies\n\n```bash\n# Ubuntu/Debian\nsudo apt update \u0026\u0026 sudo apt install ffmpeg\n\n# macOS (with Homebrew)\nbrew install ffmpeg\n\n# Windows (with Chocolatey)\nchoco install ffmpeg\n\n# Verify installation\nffmpeg -version\n```\n\n### Clone Repo and setup Python Environment\n\n## Option 1: Python conda environment\n\n```bash\n# Create conda virtual environment\nconda create -n audionorm-env python=3.12\nconda activate audionorm-env\n\ngit clone https://github.com/bradsec/audionorm.git\ncd audionorm\n\n# Install dependencies\npip install -r requirements.txt\n\n# Verify installation\npython audionorm.py --help\npython audioscribe.py --help\n```\n\n## Option 2: Python venv environment\n\n```bash\n# Create virtual environment\npython -m venv audionorm-env\nsource audionorm-env/bin/activate  # Linux/macOS\n# audionorm-env\\Scripts\\activate   # Windows\n\ngit clone https://github.com/bradsec/audionorm.git\ncd audionorm\n\n# Install dependencies\npip install -r requirements.txt\n\n# Verify installation\npython audionorm.py --help\npython audioscribe.py --help\n```\n\n## AudioNorm - Audio Enhancement\n\n### AudioNorm Features\n\n- **SpeechBrain Enhancement**: MTL-MIMIC model for voice quality improvement\n- **Demucs AI Denoising**: htdemucs_ft model optimized for vocal separation\n- **Stem Separation**: Extract vocals and background tracks separately\n- **Professional Normalization**: EBU R128 loudness standards\n- **Intelligent Processing**: Auto-detects optimal processing pipeline\n- **Batch Processing**: Handle entire directories recursively\n\n### AudioNorm Examples\n\n```bash\nusage: audionorm.py [-h] [--target-lufs TARGET_LUFS] [--model MODEL]\n                    [--device {cpu,cuda}] [--recursive] [--keep-temp]\n                    [--skip-demucs] [--enhanced-cleaning] [--basic-cleaning]\n                    [--python-restoration] [--verbose] [--quiet]\n                    [--trim-silence] [--silence-threshold SILENCE_THRESHOLD]\n                    [--intensive-cleanup] [--use-loudnorm] [--overwrite]\n                    [--format {wav,mp3}] [--two-pass-loudnorm]\n                    [--single-pass-loudnorm] [--no-speechbrain] [--save-stems]\n                    [--stems-only] [--voice-consistent]\n                    input\n\nAudio normalization and cleanup for TTS-generated audio\n\npositional arguments:\n  input                 Input audio file or directory\n\noptions:\n  -h, --help            show this help message and exit\n  --target-lufs TARGET_LUFS\n                        Target loudness in LUFS (default: -18.0 optimized for\n                        voice content)\n  --model MODEL         Demucs model (default: htdemucs_ft for better vocal\n                        separation)\n  --device {cpu,cuda}   Processing device (auto-detect if not specified)\n  --recursive, -r       Process directories recursively\n  --keep-temp           Keep temporary files for debugging\n  --skip-demucs         Skip Demucs denoising (FFmpeg normalization only)\n  --enhanced-cleaning   Enable enhanced FFmpeg cleaning (gentle)\n  --basic-cleaning      Use basic cleaning only (faster processing)\n  --python-restoration  Use Python-based restoration (librosa + noisereduce)\n                        instead of Demucs\n  --verbose, -v         Enable verbose logging\n  --quiet, -q           Minimal output mode\n  --trim-silence        Trim extended silences (\u003e1s) to natural pause lengths\n                        (0.2-0.8s)\n  --silence-threshold SILENCE_THRESHOLD\n                        Silence detection threshold in dB (default: -30,\n                        lower=more sensitive)\n  --intensive-cleanup   Enable intensive post-AI cleanup (may cause reverb\n                        artifacts, disabled by default)\n  --use-loudnorm        Use loudnorm instead of dynaudnorm (may sound over-\n                        processed)\n  --overwrite           Overwrite existing output files (default: skip\n                        existing files)\n  --format {wav,mp3}, -f {wav,mp3}\n                        Output audio format (default: wav)\n  --two-pass-loudnorm   Use professional two-pass loudnorm for superior volume\n                        consistency (default: enabled)\n  --single-pass-loudnorm\n                        Use single-pass loudnorm instead of two-pass (faster\n                        but less accurate)\n  --no-speechbrain      Disable SpeechBrain MTL-MIMIC voice enhancement\n                        (default: enabled)\n  --save-stems          Save all Demucs stems (vocals, drums, bass, other)\n                        when using Demucs pipeline\n  --stems-only          Only separate into vocal and background stems without\n                        any processing or normalization\n  --voice-consistent    Use voice-consistent normalization for uniform voice\n                        levels throughout audio (fixes level variations)\n\nExamples:\n  audionorm.py audio.wav\n  audionorm.py /path/to/audio/folder --recursive\n  audionorm.py audio.wav --target-lufs -23 --model htdemucs\n  audionorm.py folder/ --device cuda --keep-temp --quiet\n\n```\n\n## AudioScribe - Speech Transcription\n\n### Core Features\n\n- **Faster-Whisper Models**: Optimized Whisper implementation\n- **Multi-language Support**: 60+ languages with auto-detection\n- **Flexible Output**: Plain text, timestamps, or structured formats\n- **Batch Transcription**: Process entire directories\n- **Model Selection**: From tiny (fast) to large-v3 (most accurate)\n\n### Usage\n\n```bash\nusage: audioscribe.py [-h]\n                      [--model {tiny,tiny.en,base,base.en,small,small.en,medium,medium.en,large-v1,large-v2,large-v3,distil-large-v2,distil-large-v3}]\n                      [--language LANGUAGE] [--task {transcribe,translate}] [--device {cpu,cuda}]\n                      [--beam-size BEAM_SIZE] [--recursive] [--no-timestamps] [--keep-temp] [--verbose] [--quiet]\n                      [--list-models] [--overwrite]\n                      input\n\nHigh-quality audio transcription with Faster-Whisper\n\npositional arguments:\n  input                 Input audio file or directory\n\noptions:\n  -h, --help            show this help message and exit\n  --model {tiny,tiny.en,base,base.en,small,small.en,medium,medium.en,large-v1,large-v2,large-v3,distil-large-v2,distil-large-v3}\n                        Whisper model size (default: large-v2 for best balance)\n  --language LANGUAGE   Source language code (auto-detect if not specified). Examples: en, es, fr, de, it, pt, ru, ja,\n                        ko, zh\n  --task {transcribe,translate}\n                        Task to perform (default: transcribe)\n  --device {cpu,cuda}   Processing device (auto-detect if not specified)\n  --beam-size BEAM_SIZE\n                        Beam size for decoding (higher = more accurate but slower, default: 5)\n  --recursive, -r       Process directories recursively\n  --no-timestamps       Disable timestamps in output (plain text only)\n  --keep-temp           Keep temporary files for debugging\n  --verbose, -v         Enable verbose logging\n  --quiet, -q           Minimal output mode\n  --list-models         List available models and exit\n  --overwrite           Overwrite existing transcript files (default: skip existing files)\n\nExamples:\n  audioscribe.py audio.wav\n  audioscribe.py /path/to/audio/folder --recursive\n  audioscribe.py audio.wav --model large-v3 --language en\n  audioscribe.py folder/ --device cuda --no-timestamps --quiet\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradsec%2Faudionorm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradsec%2Faudionorm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradsec%2Faudionorm/lists"}