M4xjunior's picture
Update app.py
a9abbb0 verified
raw
history blame
2.78 kB
try:
import spaces # Para ambientes específicos como Hugging Face Spaces
USING_SPACES = True
except ImportError:
USING_SPACES = False
import gradio as gr
import torch
import torchaudio
from functools import partial
from resemble_enhance.enhancer.inference import denoise, enhance
def gpu_decorator(func):
if USING_SPACES:
return spaces.GPU(func)
else:
return func
@gpu_decorator
def _fn(path, solver, nfe, tau, denoising, unlimited):
if path is None:
return "Please upload an audio file.", None
info = torchaudio.info(path)
if not unlimited and (info.num_frames / info.sample_rate > 60):
return "Only audio files shorter than 60 seconds are supported.", None
solver = solver.lower()
nfe = int(nfe)
lambd = 0.9 if denoising else 0.1
dwav, sr = torchaudio.load(path)
dwav = dwav.mean(dim=0)
wav1, new_sr = denoise(dwav, sr) # Remove o argumento device
wav2, new_sr = enhance(dwav, sr, nfe=nfe, solver=solver, lambd=lambd, tau=tau) # Remove o argumento device
wav1 = wav1.cpu().numpy()
wav2 = wav2.cpu().numpy()
return (new_sr, wav1), (new_sr, wav2)
with gr.Blocks() as app:
inputs = [
gr.Audio(type="filepath", label="Input Audio"),
gr.Dropdown(
choices=["Midpoint", "RK4", "Euler"],
value="Midpoint",
label="CFM ODE Solver (Midpoint is recommended)",
),
gr.Slider(
minimum=1,
maximum=128,
value=64,
step=1,
label="CFM Number of Function Evaluations (higher values in general yield better quality but may be slower)",
),
gr.Slider(
minimum=0,
maximum=1,
value=0.5,
step=0.01,
label="CFM Prior Temperature (higher values can improve quality but can reduce stability)",
),
gr.Checkbox(
value=False,
label="Denoise Before Enhancement (tick if your audio contains heavy background noise)",
),
gr.Checkbox(
value=False,
label="Allow Unlimited Audio Length (supports files longer than 60 seconds)",
),
]
outputs = [
gr.Audio(label="Output Denoised Audio"),
gr.Audio(label="Output Enhanced Audio"),
]
# Interface Gradio
interface = gr.Interface(
fn=_fn,
title="Audio Enhancement",
description="AI-driven audio enhancement powered by Resemble AI.",
inputs=inputs,
outputs=outputs,
)
app = interface.queue()
def main():
global app
print("Starting app...")
app.launch(share=True)
if __name__ == "__main__":
if not USING_SPACES:
main()
else:
app.launch()