| import matplotlib.pyplot as plt |
| import numpy as np |
|
|
|
|
| def plot_spectrogram(signal, title): |
| fig, ax = plt.subplots(figsize=(20, 4)) |
| cax = ax.matshow( |
| signal, |
| origin="lower", |
| aspect="auto", |
| cmap=plt.cm.afmhot, |
| vmin=-1 * np.max(np.abs(signal)), |
| vmax=np.max(np.abs(signal)), |
| ) |
| fig.colorbar(cax) |
| ax.set_title(title) |
| plt.tight_layout() |
| plt.show() |
|
|
|
|
| def plot_statistics_and_filter( |
| mean_freq_noise, std_freq_noise, noise_thresh, smoothing_filter |
| ): |
| """Plots basic statistics of noise reduction |
| |
| Arguments: |
| mean_freq_noise {[type]} -- [description] |
| std_freq_noise {[type]} -- [description] |
| noise_thresh {[type]} -- [description] |
| smoothing_filter {[type]} -- [description] |
| """ |
| fig, ax = plt.subplots(ncols=2, figsize=(20, 4)) |
| (plt_mean,) = ax[0].plot(mean_freq_noise, label="Mean power of noise") |
| (plt_std,) = ax[0].plot(std_freq_noise, label="Std. power of noise") |
| (plt_std,) = ax[0].plot(noise_thresh, label="Noise threshold (by frequency)") |
| ax[0].set_title("Threshold for mask") |
| ax[0].legend() |
| cax = ax[1].matshow(smoothing_filter, origin="lower") |
| fig.colorbar(cax) |
| ax[1].set_title("Filter for smoothing Mask") |
| plt.show() |
|
|
|
|
| def plot_reduction_steps( |
| noise_stft_db, |
| mean_freq_noise, |
| std_freq_noise, |
| noise_thresh, |
| smoothing_filter, |
| sig_stft_db, |
| sig_mask, |
| recovered_spec, |
| ): |
|
|
| plot_spectrogram(noise_stft_db, title="Noise") |
| plot_statistics_and_filter( |
| mean_freq_noise, std_freq_noise, noise_thresh, smoothing_filter |
| ) |
| plot_spectrogram(sig_stft_db, title="Signal") |
| plot_spectrogram(sig_mask, title="Mask applied") |
| plot_spectrogram(recovered_spec, title="Recovered spectrogram") |
|
|