def wiener_filtering(clean_signal, filename, audio_sr): """ Performs Wiener Filtering on a file located at filepath :param clean_signal: 1D numpy array containing the signal of a clean audio file :param filename: string of the audio file name """ if len(clean_signal) > MAX_SIGNAL_LENGTH: clean_signal = clean_signal[:MAX_SIGNAL_LENGTH] write_name = filename.split(".")[0] if '+' not in filename: noisy_signal = generate_noise(clean_signal, sr=audio_sr) new_path = "audio/test_audio_noisy/" + write_name + "_noisy.wav" wavwrite(new_path, noisy_signal, audio_sr) else: noisy_signal = clean_signal.copy() stft_noisy, DD_gains, noise_est = DD(noisy_signal) TSNR_sig, TSNR_gains = TSNR(stft_noisy, DD_gains, noise_est) signal_est = HRNR(stft_noisy, TSNR_sig, TSNR_gains, noise_est) signal_est = highpass(signal_est, audio_sr) new_path = "audio/test_audio_results/" + write_name + "_reduced.wav" wavwrite(new_path, signal_est, audio_sr) if '+' not in filename: print("Noisy Segmented SNR: " + snr(noisy_signal, clean_signal)) print("Denoisned Segmented SNR: " + snr(signal_est, noisy_signal))
def noise_filter(signal, sample_rate): stft_noisy, DD_gains, noise_est = DD(signal) TSNR_sig, TSNR_gains = TSNR(stft_noisy, DD_gains, noise_est) new_signal = HRNR(stft_noisy, TSNR_sig, TSNR_gains, noise_est) new_signal = highpass(new_signal, sample_rate) return new_signal