Example #1
0
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