slowverb / app.py
namelessai's picture
Update app.py
3ce167e verified
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()