Spaces:
Runtime error
Runtime error
import scipy.signal | |
import librosa | |
from df.enhance import enhance, init_df, load_audio, save_audio | |
import torch | |
from torchaudio.functional import resample | |
# Load default model | |
model, df_state, _ = init_df() | |
def smooth_and_reduce_noise(audio_signal, sampling_rate): | |
# Apply a low-pass filter for smoothing | |
cutoff_frequency = 1700 # Adjust as needed | |
nyquist = 0.5 * sampling_rate | |
normal_cutoff = cutoff_frequency / nyquist | |
b, a = scipy.signal.butter(4, normal_cutoff, btype='low', analog=False) | |
smoothed_signal = scipy.signal.filtfilt(b, a, audio_signal) | |
# Reduce noise using librosa's denoiser | |
denoised_signal = librosa.effects.preemphasis(smoothed_signal, coef=0.95) | |
return denoised_signal | |
def model_remove_noise(model, df_state, np_audio): | |
#Read audio | |
audio = torch.tensor([np_audio]) | |
audio = resample(audio, 16000, df_state.sr()) | |
#Inference | |
enhanced = enhance(model, df_state, audio).cpu().numpy() | |
#Save | |
dtype=torch.int16 | |
out_audio = torch.as_tensor(enhanced) | |
if out_audio.ndim == 1: | |
out_audio.unsqueeze_(0) | |
if dtype == torch.int16 and out_audio.dtype != torch.int16: | |
out_audio = (out_audio * (1 << 15)).to(torch.int16) | |
if dtype == torch.float32 and out_audio.dtype != torch.float32: | |
out_audio = out_audio.to(torch.float32) / (1 << 15) | |
out_audio = resample(audio, df_state.sr(), 16000) | |
return out_audio.cpu().numpy() |