aboutsummaryrefslogtreecommitdiff
path: root/config.toml
blob: 1f05b75d96e5c8700c4edf0676975f0656cab185 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# producer settings — CLI flags always override anything set here.

# "audiobook" = close-narration voice chain, RMS -20 dB, true peak <= -3 dB, 44.1 kHz
# "podcast"   = broadcast chain, -16 LUFS, true peak <= -1.5 dBTP, 48 kHz, brighter EQ
# "radio"     = deep, warm broadcast voice: +3 dB low shelf @ 100 Hz, tighter mud cut,
#               heavy compression, tape saturation; -16 LUFS, 48 kHz
profile = "radio"

# Output container/codec: wav | flac | mp3          (default: wav)
# format = "wav"

# Bit depth: 16 | 24 | 32                           (default: 32)
# bit_depth = 32

# Output sample rate in Hz                          (default: 44100 audiobook / 48000 podcast)
# sample_rate = 44100

# Compute device: auto (CUDA if present) | cuda | cpu
# device = "auto"

# GPU engine processing: engines receive the whole file by default so models
# run one warm pass with no seam artifacts and a single model cold-start.
# chunk > 0 forces chunked streaming in seconds (very long files / low VRAM);
# whole-file runs fall back to chunks automatically if they run out of memory.
# engine_chunk = 0.0     # 0 = whole file (default)
# engine_overlap = 0.5   # crossfade between chunks in seconds

# Loudness target and true-peak ceiling in dB.
# Without these, each profile uses RMS -20 / ceiling -3 (audiobook) or -16 LUFS / -1.5 (podcast).
# target = -20.0
# ceiling = -3.0

# How much of the denoised/enhanced signal to blend in (0-1). 0 disables the stage.
# denoise_strength = 1.0
# enhance_strength = 1.0

# Denoiser: "dfn3" (DeepFilterNet3, default, fast, 48 kHz full-band)
#           "zipenhancer" (ICASSP 2025 SOTA, 16 kHz native, bandwidth restored)
#           "spectral" (pure-DSP dd-wiener with a file-global noise profile,
#                       no downloads, no wobble)
#           "off" (pure DSP, no heavy downloads)
# Heavy deps + model weights are installed lazily on first use.
[denoise]
engine = "dfn3"
# 0.9 flattens residual denoiser gain wobble (volume pumping); the small dry
# blend trades a whisper of noise back for level stability. 1.0 = max attack.
strength = 0.9
# pf = false  # DeepFilterNet post filter: extra noise reduction, opt-in —
#             # may eat soft speech on clean recordings (off by default)

# Speech enhancement: "off" (default), "mossformer2" (studio restoration),
#                     "resemble" (generative, opt-in isolated venv, may alter timbre)
[enhance]
engine = "off"

# Per-profile voice DSP strengths, 0-1 each (CLI flags --hpf, --mud, ... always win).
# 0 disables a stage entirely; every stage is optional.
# hpf      = strength of the high-pass (0 turns it off; corner set via hpf_hz)
# mud      = cut around 300 Hz (boxy mud)
# warmth   = low-shelf lift (position set per profile: 150 Hz audiobook/podcast, 100 Hz radio)
# soothe   = dynamic EQ that ducks boxy (200-450 Hz) and harsh (2.5-6 kHz) resonances
#            only while they stick out — unlike static EQ, "off" when the voice is clean
# compress = serial 2:1 + 3:1 compression
# tape     = asymmetric soft-clip saturation — analog/even-harmonic radio warmth
# deess    = de-esser active around 5.5-8 kHz
# presence = boost around 3 kHz
# air      = high shelf from 9-10 kHz
# breath   = downward expander depth used to duck breaths and residual hiss
#            in sentence gaps (0 disables; up to ~24 dB of ducking at 1.0)

[audiobook]
mud = 0.8
warmth = 0.8
soothe = 0.3
compress = 0.8
tape = 0.0
deess = 0.6
presence = 0.8
air = 0.6
breath = 0.35
# hpf_hz = 80.0     # high-pass corner frequency (audiobook default 80)

[podcast]
mud = 0.6
warmth = 0.7
soothe = 0.5
compress = 0.9
tape = 0.2
deess = 0.7
presence = 1.0
air = 0.8
breath = 0.2
# hpf_hz = 80.0     # high-pass corner frequency (podcast default 80)

[radio]
mud = 0.9
warmth = 1.0
soothe = 0.7
compress = 1.0
tape = 0.55
deess = 0.5
presence = 0.7
air = 0.5
breath = 0.4
# hpf_hz = 70.0     # high-pass corner frequency (radio default 70)