aboutsummaryrefslogtreecommitdiff
path: root/config.toml
blob: a6777e3a596ab8b6475421cbd83f66c34d668457 (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
# 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" # MossFormer2_SE_48K; compare with deepfilter on your voice; fft or none also available
device = "auto" # auto, cpu, cuda; explicit cuda fails if unavailable
denoise_strength = 0.85 # 0..1; a little dry signal can preserve consonants, but also retains noise
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

# Silence pauses without shortening them. Silero VAD analyzes PRE-denoise
# speech; protected word margins and smooth fades reduce clipped consonants.
# First use installs a small CPU detector and downloads hash-checked weights.
# VAD can miss whispers/breaths; audition the result, not just the meter.
pause_silence = true
pause_threshold = 0.35 # 0.1..0.9; LOWER keeps more possible speech
pause_pre_ms = 120.0 # 30..500; keep this much before detected speech
pause_post_ms = 120.0 # 30..1000; preserve word endings and decay
pause_fade_ms = 10.0 # 2..100; fades outside protected speech
pause_min_ms = 80.0 # 20..1000; minimum zero core, in addition to margins/fades

# Optional pacing EDIT, not noise removal. Long gaps are shortened to
# gap_pad_s. With pause_silence enabled, only near-zero cores are eligible;
# gap_threshold_db is used only when pause_silence is disabled.
trim_silence = false
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