Neural audio modeling for guitar effects with hybrid architectures:
- Hybrid WaveNet U-Net Transformer backbone with optional learnable IR branch (frequency-domain fast convolution)
- Robust, overlap-add (OLA) reconstruction for seamless long-form audio
Able to clone guitar tone (including tones produced with multiple pedals) using a few minutes of original and transformed recordings. Purpose-built to extend time-invariant or short-term temporal guitar effects (e.g., overdrive, distortion, EQ) to model long-term temporal dependencies (e.g., reverb, delay, echo). Current successful experiments include cloning overdrive, distortion, various amplifier heads, delay, and reverb.
This repository focuses on training and evaluating effect models such as Overdrive, Reverb, and Delay from paired dry/wet audio.
After training the hybrid_wavenet_unet model, you can visualize its performance:
Signal Comparison of Delay Model
Signal Comparison of Overdrive + Reverb Model
prepare.py: Create training datasets from paired dry/wet.wavfiles (44.1 kHz mono recommended)trainHybrid.py: Train models (transformer,hybrid,hybridplus,hybrid_wavenet_unet)testHybrid.py: Run inference on prepared datasets and export.wavoutputs; supports--dataand--data_filenameplot.py: Generate analysis plots and error metrics from saved test resultsmodelTransformer.py: Model definitions (WaveNet, Transformer, U-Net hybrid, learnable IR branch)preparedData/: Default location for serialized datasets (.pickle)models/: Checkpoints and analysis artifacts
- Python 3.10+
- PyTorch, NumPy, SciPy, tqdm, TensorBoard, Matplotlib
Install the dependencies in your environment, for example:
pip install torch numpy scipy tqdm tensorboard matplotlib- DelayOnly
python prepare.py data/dataset_clean_New.wav data/dataset_delay_New.wav --out_dir preparedData --out_name DelayOnly.pickle- Overdrive+Reverb+Delay
python prepare.py data/dataset_clean_New.wav data/dataset_overdrive_reverb_delay_New.wav --out_dir preparedData --out_name Overdrive+Reverb+Delay.picklePreparation notes:
- Can be skipped if not using self-recorded dataset.
- Default sample rate is 44.1 kHz. Stereo inputs are averaged to mono.
- Default segment length is 88200 samples (2.0 s) with 50% overlap (hop 44100).
- Data are normalized and standardized (x only) with training-set statistics.
- Hybrid WaveNet U-Net with IR branch
python trainHybrid.py --model models/Delay/HybridWUNet.ckpt --model_type hybrid_wavenet_unet --data preparedData/Overdrive+Reverb+Delay.pickle --use_ir --ir_length 44100 --ir_wet 0.25Other examples:
- Transformer (short segments)
python trainHybrid.py --model models/pedalHybrid/Transformer.ckpt --model_type transformer --data preparedData/DelayOnly.pickle- Hybrid
python trainHybrid.py --model models/pedalHybrid/Hybrid.ckpt --model_type hybrid --data preparedData/Overdrive+Reverb+Delay.pickle- HybridPlus
python trainHybrid.py --model models/pedalHybrid/HybridPlus.ckpt --model_type hybridplus --data preparedData/Overdrive+Reverb+Delay.pickleOptional: force CPU
--cpu- Using a dataset filename from
preparedData/
python testHybrid.py --model models/Overdrive+Reverb+Delay/Overdrive+Reverb+Delay.ckpt --model_type hybrid_wavenet_unet --data_filename Overdrive+Reverb+Delay.pickle --use_ir- Or pass a full dataset path
python testHybrid.py --model models/pedalHybrid/Transformer.ckpt --model_type transformer --data preparedData/DelayOnly.pickleOutputs (under the model directory):
y_pred_full_<model_type>.wav,x_test_full_<model_type>.wav,y_test_full_<model_type>.wav- If
--use_irand the model exposes a learnable IR:learned_ir_<model_type>.pngand.npy
python plot.py --model models/Overdrive+Reverb+Delay/Overdrive+Reverb+Delay.ckpt --model_type hybrid_wavenet_unetOptional interactive window:
--showThis project reuses and adapts ideas and portions of code inspired by GuitarML's PedalNetRT. See the original repository for context and references: GuitarML/PedalNetRT.