Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import numpy as np | |
| import librosa | |
| import soundfile as sf | |
| from pedalboard import Pedalboard, Reverb, Gain | |
| def slow_reverb(audio, speed=0.8, reverb_mix=0.5, decay=3.0, pre_delay=0.0, damping=0.5): | |
| # Load audio | |
| y, sr = librosa.load(audio, sr=None, mono=True) | |
| # Slow down | |
| y_slow = librosa.effects.time_stretch(y, rate=speed) | |
| # Apply reverb using Pedalboard | |
| board = Pedalboard([ | |
| Reverb( | |
| room_size=decay/10, # Convert seconds to 0-1 scale (0.3 for decay=3.0) | |
| wet_level=reverb_mix, | |
| dry_level=1-reverb_mix, | |
| damping=damping | |
| ) | |
| ]) | |
| # Process audio | |
| y_reverb = board(y_slow, sr) | |
| # Save to temp file for Gradio | |
| sf.write("output.wav", y_reverb, sr) | |
| return "output.wav" | |
| iface = gr.Interface( | |
| fn=slow_reverb, | |
| inputs=[ | |
| gr.Audio(type="filepath", label="Input Audio"), | |
| gr.Slider(0.5, 1.0, value=0.8, label="Playback Speed"), | |
| gr.Slider(0, 1, value=0.5, label="Reverb Mix"), | |
| gr.Slider(0.1, 10.0, value=3.0, label="Decay Time (s)"), | |
| gr.Slider(0.0, 0.2, value=0.0, label="Pre-delay (s)"), # Still shown but unused | |
| gr.Slider(0.0, 1.0, value=0.5, label="Damping (high-frequency roll-off)") | |
| ], | |
| outputs=gr.Audio(type="filepath", label="Processed Audio"), | |
| title="Slow + Reverb Audio Processor", | |
| description="Upload an audio file and control slow-down and reverb parameters. Note: Pre-delay is currently not implemented.", | |
| live=False | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() |