A local-first audio and video finishing workspace for macOS.
Clean speech, improve detail, trim silence, match a reference, transcribe, compare, and export.
Quick start · What it does · Workflow · Architecture · Español
AudioForge turns a chain of excellent open-source tools into one calm local workflow. Import a file or a public YouTube video, choose only the treatments you need, preview the real result, and export without moving your media to a cloud service.
| Bring your media | Shape the result | Deliver it |
|---|---|---|
| Local audio, video, or a public individual YouTube video | Denoise, enhance, trim silence, reference-match, mix, and optionally transcribe | WAV, MP3, or a video in its source container or MP4 |
The workspace previews silence cuts before processing, keeps A and B on the same timeline, and lets you control the final original-to-processed mix before export. Long-running YouTube preparation and processing states report progress instead of leaving you with an unexplained spinner.
- Bring your own source. Import local audio or video, or prepare a public individual YouTube video as full video or audio-only.
- Clean and restore speech. Run DeepFilterNet denoising and Resemble Enhance voice restoration, with fast, recommended, and high-quality modes.
- Remove silence deliberately. Preview the cut zones and use a single
0–100aggressiveness control before running the pipeline. - Match the sound you want. Use a selected YouTube reference clip or a local reference file, then choose natural, balanced, or reference-faithful mastering.
- Keep control of the finish. Blend edited original and processed audio
from
0–100%, then listen in the A/B comparison before exporting. - Create captions when needed. Generate word-level JSON, SRT, and VTT with
whisper.cppafter all audio processing has finished.
Source
└─ local audio/video or public YouTube video
↓
1. Clean DeepFilterNet removes background noise
2. Enhance Resemble Enhance restores speech detail in bounded chunks
3. Trim Auto-Editor applies the selected silence cuts
4. Match Matchering shapes tone and loudness from a reference
5. Mix FFmpeg blends original and processed audio
6. Transcribe Optional whisper.cpp word-level subtitles
7. Export Audio or video delivery, with subtitles when requested
Every stage runs in that order. Transcription is intentionally last, so caption timing always reflects the final audio timeline.
- macOS on Apple Silicon
- Homebrew, Git, and uv
- Node.js 22 or newer
- 16 GB RAM recommended when voice enhancement is enabled
- Local disk space for media, PCM intermediates, models, and exports
git clone https://github.com/ingeleyton/Audio_Enhanced.git
cd Audio_Enhanced
./scripts/bootstrap.sh
./scripts/start.shThen open http://127.0.0.1:8000.
If you only want the native core, without the heavier enhancement and matching workers:
./scripts/bootstrap.sh --skip-heavyTo inspect prerequisites without changing your machine:
./scripts/bootstrap.sh --checkUse a clean, continuous reference that represents the sound you want:
- YouTube reference: choose an exact
30 second–5 minuterange. AudioForge suggests 90 seconds when available. - Local reference file: WAV, MP3, FLAC, M4A, AAC, OGG, OPUS, AIFF, or WMA, from 30 seconds to 15 minutes.
| Source | Export choices |
|---|---|
| Audio | Lossless WAV or 320 kbps MP3 |
| Video | Original-compatible container with copied video when possible, or MP4. Incompatible video is encoded as H.264 CRF 18. |
| Captions | SRT and VTT, plus word-level JSON when transcription is enabled |
React workspace
↓
Rust + Axum engine
↓
single execution gate
├─ Auto-Editor
├─ DeepFilterNet
├─ Resemble Enhance
├─ Matchering
├─ whisper.cpp
├─ yt-dlp
└─ FFmpeg
AudioForge is deliberately disk-first and sequential. It bounds waveform and
log data, runs only one heavy child process at a time, and terminates Python
workers after each stage so macOS can reclaim memory before the next engine
starts. small-q5 is the default Whisper model; larger models download only on
demand.
Resemble Enhance has a meaningful fixed PyTorch cost. A real 19-second CPU
smoke test peaked near 5.3 GB RSS, then released that memory before Matchering
and Whisper. Disable Enhance voice or use --skip-heavy on smaller
machines.
AudioForge accepts only HTTPS URLs for public individual YouTube videos. Playlists, live streams, scheduled premieres, private media, cookies, browser profiles, and login are intentionally unsupported.
Media, jobs, models, logs, and exports remain on your Mac. The only network media operation is an explicitly requested YouTube download. Use YouTube features only with media you own or are authorized to process. AudioForge is not affiliated with YouTube.
small-q5 is installed and selected by default. Other choices remain visible
in the app and download only when selected:
./scripts/models.sh list
./scripts/models.sh install base
./scripts/models.sh install medium
./scripts/models.sh install large-v3-turbo-q5If the chosen model is unavailable, the API returns the exact installation command before it queues the job.
Run the development servers:
./scripts/dev.shVite listens on 127.0.0.1:5173 and proxies /api to the Rust engine on
127.0.0.1:8000.
Run the full verification suite:
cargo test --manifest-path engine/Cargo.toml
uv run pytest backend/tests -v
npm --prefix frontend test -- --run
npm --prefix frontend run build
cargo build --manifest-path engine/Cargo.toml --releaseThe automated suites use fake processes and do not load ML models.
AudioForge integrates these projects, each under its own license and terms:
Read CONTRIBUTING.md, follow the Code of Conduct, and report vulnerabilities through SECURITY.md.
AudioForge is available under the MIT License.
