Spaces:
Running on Zero
Running on Zero
| import argparse | |
| from functools import partial | |
| import gradio as gr | |
| import torch | |
| import soundfile as sf # استفاده از soundfile برای بارگذاری ایمن فایل صوتی | |
| import spaces # اضافه شدن کتابخانه spaces برای هماهنگی با Zero-GPU | |
| from resemble_enhance.enhancer.inference import denoise, enhance | |
| # اضافه کردن دکوراتور برای تخصیص داینامیک GPU در Zero-GPU | |
| def _fn(path, solver, nfe, tau, denoising): | |
| if path is None: | |
| gr.Warning("Please upload an audio file.") | |
| return None, None | |
| # بررسی و فعالسازی کارت گرافیک در لحظه اجرای تابع | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| solver = solver.lower() | |
| nfe = int(nfe) | |
| lambd = 0.9 if denoising else 0.1 | |
| # بارگذاری فایل صوتی با soundfile به جای torchaudio برای حل مشکل نسخه جدید | |
| data, sr = sf.read(path, dtype='float32') | |
| dwav = torch.from_numpy(data) | |
| # اگر فایل استریو (دو کاناله) بود، آن را به مونو تبدیل میکنیم | |
| if dwav.ndim > 1: | |
| dwav = dwav.mean(dim=-1) | |
| # اجرای توابع بهبود صوتی روی دستگاه مشخص شده | |
| wav1, new_sr = denoise(dwav, sr, device) | |
| wav2, new_sr = enhance(dwav, sr, device, nfe=nfe, solver=solver, lambd=lambd, tau=tau) | |
| wav1 = wav1.cpu().numpy() | |
| wav2 = wav2.cpu().numpy() | |
| return (new_sr, wav1), (new_sr, wav2) | |
| def main(): | |
| inputs: list = [ | |
| 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)", | |
| ), | |
| ] | |
| outputs: list = [ | |
| gr.Audio(label="Output Denoised Audio"), | |
| gr.Audio(label="Output Enhanced Audio"), | |
| ] | |
| interface = gr.Interface( | |
| fn=_fn, | |
| title="Resemble Enhance", | |
| description="AI-driven audio enhancement for your audio files, powered by Resemble AI.", | |
| inputs=inputs, | |
| outputs=outputs, | |
| ) | |
| interface.launch() | |
| if __name__ == "__main__": | |
| main() |