Spaces:
Sleeping
Sleeping
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 | |
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() |