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
|
# Producer configuration. This file is loaded automatically because it sits
# next to producer.sh. Flat TOML: no section headers. Named CLI flags override
# these values; --set KEY=VALUE overrides named flags. Use --profile, not
# --set profile=... All explicit values below override preset defaults, even
# with --profile radio. Remove settings you want a different profile to supply.
profile = "narrator" # natural, narrator, radio, cleanup-only
denoiser = "clearvoice" # clearvoice (MossFormer2_SE_48K, best attack preservation), deepfilter; fft is explicit non-AI fallback; none
device = "auto" # auto, cpu, cuda; explicit cuda fails if unavailable
denoise_strength = 1.0 # 0..1; AI dry/wet blend; zero skips denoising and AI setup
fft_reduction_db = 8.0 # 0.01..30; FFT reduction is scaled by denoise_strength
highpass = true
highpass_hz = 80.0 # 20..300
lowpass = false
lowpass_hz = 16000.0 # 4000..22000; must be below output Nyquist when enabled
hum_hz = 0 # 0 (off), 50 or 60; notches fundamental and next two harmonics
# One static gain adjustment for the whole recording, not automatic gain riding.
leveling = true
level_target_db = -23.0 # -40..-12; heuristic speech level in dBFS, not LUFS
max_gain_db = 18.0 # 0..30; caps both gain and attenuation
expansion = false
expansion_threshold_db = -50.0 # -90..-20
expansion_ratio = 1.5 # 1..4
expansion_range_db = 12.0 # 0..40
# Static gap trimming: gaps longer than max_gap_s are shortened to gap_pad_s
# (total silence kept, split at the gap edges). Speech is copied through
# unattenuated - no gate, so word attacks are never touched. Use this instead
# of relying on the denoiser to erase room tone in blank sections.
trim_silence = true
max_gap_s = 1.5 # 0.5..10; gaps longer than this are shortened
gap_pad_s = 0.6 # 0.1..3; total silence kept around each trimmed gap (< max_gap_s)
gap_threshold_db = -50.0 # -90..-20; blocks below this count as silence
eq = true
warmth_db = 0.5 # -12..12; 140 Hz
mud_db = -1.5 # -12..12; 300 Hz
presence_db = 1.0 # -12..12; 3500 Hz
compression = true
compressor_threshold_db = -21.0 # -50..-5
compressor_ratio = 2.0 # 1..10
compressor_attack_ms = 15.0 # 0.1..200
compressor_release_ms = 150.0 # 10..2000
deess = true
deess_intensity = 0.15 # 0..1
deess_amount = 0.4 # 0..1
# Two-pass normalization plus export verification; target misses warn only.
# Turning normalize off leaves limiter on unless you also disable limiter.
# normalize=true requires limiter=true. Previews force both on, even cleanup-only.
normalize = true
target_lufs = -19.0 # -30..-12; mono delivery target, not ACX certification
loudness_range = 9.0 # 1..20 LU
limiter = true
true_peak_db = -1.5 # -9..-0.5 dBTP; MP3 can overshoot, inspect report warnings
# Final exports are always mono, 32-bit PCM WAV, with an optional MP3 sidecar.
sample_rate = 48000 # 44100 or 48000; intermediate processing is 48 kHz float
mp3 = false
mp3_bitrate = 192 # 128, 160, 192, 224, 256 or 320 kb/s
|