aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: d3c5b6b3c1de3c21270ab7d066bb1d6abf53a16c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# producer

One-click audio file mastering. Give it a raw recording; it denoises, enhances, applies a warm voice chain, and delivers a loudness-normalized master.

```bash ./producer <filename>.wav ```

## The sound

The default `audiobook` profile targets a close-narration master: high-pass at 80 Hz, a gentle mud cut, low-shelf warmth, serial compression (2:1 then 3:1), de-essing, restrained presence/air, breath ducking, then normalization to RMS -20 dB with a -3 dB true-peak ceiling.

`--profile podcast` switches to broadcast loudness: -16 LUFS integrated, -1.5 dBTP ceiling, 48 kHz, slightly brighter EQ. `--profile radio` targets the deep, warm broadcast voice: +3 dB low shelf at 100 Hz, a tighter mud cut, heavy serial compression, dynamic resonance control (`soothe`) that ducks boxy 200-450 Hz and harsh 2.5-6 kHz peaks only while they stick out, and asymmetric tape saturation (`tape`) for the even-harmonic analog sheen.

## Engines

| Stage       | Choices                                    | Notes                                                                                                                                                                                                                                                                                                                   |
| ----------- | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--denoise` | `dfn3` (default), `zipenhancer`, `off`     | [DeepFilterNet3](https://github.com/Rikorose/DeepFilterNet): 48 kHz full-band, faithful, fast on CPU, CUDA optional. [ZipEnhancer](https://github.com/gyj1201/zipEnhancer) (ICASSP 2025 SOTA, PESQ 3.69): 16 kHz native, bandwidth is restored after, slightly softer highs.                                            |
| `--enhance` | `off` (default), `mossformer2`, `resemble` | [MossFormer2_SE_48K](https://github.com/modelscope/ClearerVoice-Studio) (ClearVoice): full-band studio restoration, GPU-strong. [Resemble Enhance](https://github.com/resemble-ai/resemble-enhance): generative restoration for badly damaged audio, runs in an isolated venv; can alter voice timbre, so it is opt-in. |

Engine dependencies (torch ~2.5 GB on CUDA, model weights ~8 MB) are installed lazily on first use into `lib/` (`lib/models`, `lib/venvs`). Prefer `--denoise off` for pure-DSP masters with zero heavy downloads.

## Usage

```bash
    ./producer in.wav [-o out.wav] [--profile audiobook|podcast|radio]
    [--denoise dfn3|zipenhancer|off] [--denoise-strength 0-1] [--enhance off|mossformer2|resemble]
    [--enhance-strength 0-1] [--no-dsp] [--no-levelling] [--hpf-hz N] [--mud N] [--warmth N]
    [--soothe N] [--compress N] [--tape N] [--deess N] [--presence N] [--air N] [--breath N]
    [--target N] [--ceiling N] [--format wav|flac|mp3] [--sample-rateN] [--bit-depth 16|24|32]
    [--device auto|cuda|cpu] [--batch] [--report] [--dry-run] [-v]
```

Batch: `./producer --batch takes/ -o masters/` expands a directory (or glob) and processes each file. Reports: `--report` writes `<output>.report.json` with before/after RMS, true peak, LUFS, noise floor, and per-stage timings.

Persistent settings go in `config.toml`

## Requirements

- curl
- ffmpeg
- NVidia GPU (optional)

## License

0BSD