aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorhistoria <historiavg@proton.me>2026-09-11 18:06:53 -0400
committerhistoria <historiavg@proton.me>2026-09-11 18:06:53 -0400
commit3eccf822e14f5f4dd1f6b96e785c0217db647c3e (patch)
tree8c3204d3568e713ae98a5cfa59b18f37a72a1722 /README.md
parent077c82d9614328ff267632298da6c88009313337 (diff)
downloadproducer-3eccf822e14f5f4dd1f6b96e785c0217db647c3e.tar.gz
Remove analyze and channel selection; move reports to logs/
Diffstat (limited to 'README.md')
-rw-r--r--README.md97
1 files changed, 31 insertions, 66 deletions
diff --git a/README.md b/README.md
index 4d87a12..c405e75 100644
--- a/README.md
+++ b/README.md
@@ -1,33 +1,35 @@
# Producer
-Local speech cleanup and mastering for voice recordings, driven by a single
-script: `producer.sh`. Noise removal uses DeepFilterNet3; filtering, dynamics
-and loudness normalization are FFmpeg. Everything runs on your machine;
+Local speech cleanup and mastering for voice recordings. Noise removal uses `DeepFilterNet3`. Filtering, dynamics and loudness normalization are `FFmpeg`.
+
`producer.sh` bootstraps its own managed Python environments and downloads
dependencies and models automatically.
-## Quick Start
+## Requirements
+
+- glibc
+- `uv` (or Python 3)
+- NVidia driver and toolkit (optional)
+
+## Usage
```bash
+git clone https://git.historia.vg/git/producer
+./producer.sh setup
./producer.sh process recording.wav
```
First run installs the runtime into `lib/runtime/` and may take a few minutes.
-After that, runs are fast and work offline.
-Requirements: glibc Linux with `bash`. An existing `uv`, or Python 3 with venv
-support, plus network access for the first bootstrap. For GPU acceleration
-(`--device cuda`) you need a working NVIDIA driver and toolkit; check
-`nvidia-smi` first, then run `./producer.sh setup --device cuda`. Use `--device
-cpu` for CPU-only processing (the default `auto` picks GPU when available).
+The master WAV is always **mono, 32-bit PCM**, at 48 kHz (default) or 44.1
+kHz; stereo inputs must be downmixed to mono first. MP3 is encoded as
+constant bitrate at 192 kb/s by default. Loudness is normalized to **-19
+LUFS with a -1.5 dBTP true-peak ceiling**. A diagnostic report for each run
+is written to a `logs/` directory next to the outputs, not beside the audio.
-## Everyday Use
+### Examples
```bash
-# Master with the default (natural) profile; outputs appear next to the input:
-# recording.natural.wav, recording.natural.report.json
-./producer.sh process recording.wav
-
# Optional MP3 alongside the WAV
./producer.sh process recording.wav --mp3
@@ -41,84 +43,47 @@ cpu` for CPU-only processing (the default `auto` picks GPU when available).
# Write outputs somewhere else
./producer.sh process recording.wav --output-dir delivery --mp3
-# Stereo input requires an explicit channel choice (output is always mono)
-./producer.sh process stereo.wav --channel left # or right, or mix
-
# Skip AI noise removal (FFT fallback or none at all)
./producer.sh process recording.wav --denoiser fft
./producer.sh process recording.wav --no-denoise
-# Measure a recording without processing it
-./producer.sh analyze recording.wav > analysis.json
-```
-
-Outputs are written beside each input by default: `<stem>.<profile>.wav` plus
-`<stem>.<profile>.report.json`, and `<stem>.<profile>.mp3` with `--mp3`.
-Existing outputs cause an error unless you pass `--overwrite`.
-
-## Output Format
-
-The master WAV is always **mono, 32-bit PCM**, at 48 kHz (default) or 44.1
-kHz:
-
-```bash
-./producer.sh process recording.wav --sample-rate 44100
-```
-
-MP3 is encoded as constant bitrate at 192 kb/s by default. For example, a
-LibriVox-style delivery file (44.1 kHz, 128 kbps CBR, -19 LUFS, mono):
-
-```bash
+# LibriVox-style delivery file: 44.1 kHz, 128 kbps CBR, -19 LUFS, mono
./producer.sh process recording.wav \
--sample-rate 44100 --mp3 --mp3-bitrate 128 \
--target-lufs -19 --true-peak-db -1.5
```
-Loudness is normalized to **-19 LUFS with a -1.5 dBTP true-peak ceiling**
-(two-pass, then verified on both the WAV and the decoded MP3). All of these
-are configurable; run `./producer.sh config` to see every setting and its
-default, or `--help` on any command for the flags. A fully commented example
-config lives at `lib/project/examples/voice.toml`.
+All of these settings are configurable; run `./producer.sh config` to see every
+setting and its default, or `--help` on any command for the flags. A fully
+documented example config lives at `lib/project/examples/voice.toml`.
## Profiles
-| Profile | Sound |
-| --- | --- |
-| `natural` | Mild EQ, 2:1 compression, light de-essing (default) |
-| `narrator` | Gentler compression, slower attack, wider loudness range |
-| `radio` | Stronger compression, more warmth/presence, tighter range |
+| Profile | Sound |
+| -------------- | --------------------------------------------------------- |
+| `natural` | Mild EQ, 2:1 compression, light de-essing (default) |
+| `narrator` | Gentler compression, slower attack, wider loudness range |
+| `radio` | Stronger compression, more warmth/presence, tighter range |
| `cleanup-only` | Denoise + highpass only; no EQ, dynamics or normalization |
-Hear the difference on your own audio before committing:
+Test the difference on your own audio before committing:
```bash
./producer.sh preview recording.wav --start 10 --duration 30
```
-Previews are loudness-matched renders of a short clip for each profile.
-
-## Reports
-
-Each run writes a JSON report next to the WAV with measurements, applied
-settings and warnings. Check the `warnings` field before publishing: the tool
-verifies its own output (loudness target, true peak, format), but misses over
-0.5 LU or MP3 true-peak overshoots are reported rather than silently fixed.
-
## Troubleshooting
- **Bootstrap fails:** the first run needs `uv` or Python 3 with venv support
and network access to PyPI. Install the missing tool and rerun.
- **CUDA unavailable:** run `./producer.sh doctor`, check `nvidia-smi` and the
driver, then retry `./producer.sh setup --device cuda`. Or use `--device cpu`.
-- **Model download fails:** check network access and free disk space; never
- bypass the checksum.
- **Sounds watery or thin:** lower the denoise strength (`--denoise-strength
0.65`) or compare profiles with `preview`.
-Add `--rebuild` to any command to rebuild the runtime after editing the source
-in `lib/project/`.
-
## License
-[0BSD](LICENSE). Upstream components (DeepFilterNet, PyTorch, FFmpeg, uv)
-carry their own licenses; review them before redistributing.
+[0BSD](LICENSE).
+
+Upstream components (DeepFilterNet, PyTorch, FFmpeg, uv)
+carry their own licenses