Spaces:
Sleeping
Sleeping
import gradio as gr | |
from gen import FILTER_LOWER_BOUND, FILTER_UPPER_BOUND, analyze_audio | |
with gr.Blocks() as app: | |
gr.Markdown( | |
""" | |
# Audio Feature Visualization | |
Upload an audio file to visualize its features and optionally apply filters. Each visualization helps in understanding different aspects of the audio signal. | |
""" | |
) | |
with gr.Row(): | |
audio = gr.Audio( | |
sources=["upload", "microphone"], | |
type="filepath", | |
label="Audio File", | |
) | |
with gr.Row(): | |
highpass = gr.Slider( | |
FILTER_LOWER_BOUND - 1, | |
FILTER_UPPER_BOUND, | |
step=1, | |
label="High-pass filter cutoff frequency (Hz).", | |
info="Frequency above which signals are allowed to pass through.", | |
value=FILTER_LOWER_BOUND - 1, | |
) | |
lowpass = gr.Slider( | |
FILTER_LOWER_BOUND - 1, | |
FILTER_UPPER_BOUND, | |
step=1, | |
label="Low-pass filter cutoff frequency (Hz).", | |
info="Frequency below which signals are allowed to pass through.", | |
value=FILTER_LOWER_BOUND - 1, | |
) | |
with gr.Row(): | |
bandpass_low = gr.Slider( | |
FILTER_LOWER_BOUND - 1, | |
FILTER_UPPER_BOUND, | |
step=1, | |
label="Band-pass filter low cutoff frequency (Hz).", | |
info="Lower frequency bound for band-pass filter.", | |
value=FILTER_LOWER_BOUND - 1, | |
) | |
bandpass_high = gr.Slider( | |
FILTER_LOWER_BOUND - 1, | |
FILTER_UPPER_BOUND, | |
step=1, | |
label="Band-pass filter high cutoff frequency (Hz).", | |
info="Higher frequency bound for band-pass filter.", | |
value=FILTER_LOWER_BOUND - 1, | |
) | |
btn = gr.Button("Visualize Features", variant="primary") | |
with gr.Row(): | |
waveform = gr.Image( | |
label="Waveform: Visual representation of the audio signal over time." | |
) | |
with gr.Row(): | |
spectrogram = gr.Image( | |
label="Spectrogram: Graphical representation of the spectrum of frequencies in a sound signal as they vary with time." | |
) | |
mfcc = gr.Image( | |
label="MFCC: Mel-frequency cepstral coefficients, representing the short-term power spectrum of a sound." | |
) | |
with gr.Row(): | |
rms_energy = gr.Image( | |
label="RMS Energy: Root Mean Square energy of the audio signal." | |
) | |
zero_crossing_rate = gr.Image( | |
label="Zero Crossing Rate: Rate at which the signal changes from positive to negative or back." | |
) | |
with gr.Row(): | |
spectral_centroid = gr.Image( | |
label="Spectral Centroid: Indicates where the center of mass of the spectrum is located." | |
) | |
spectral_bandwidth = gr.Image( | |
label="Spectral Bandwidth: The width of a range of frequencies." | |
) | |
with gr.Row(): | |
spectral_rolloff = gr.Image( | |
label="Spectral Rolloff: Frequency below which a specified percentage of the total spectral energy lies." | |
) | |
spectral_contrast = gr.Image( | |
label="Spectral Contrast: Difference in amplitude between peaks and valleys in a sound spectrum." | |
) | |
with gr.Row(): | |
tempo = gr.Image(label="Tempo: Estimated tempo of the audio signal.") | |
tempogram = gr.Image( | |
label="Tempogram: Localized autocorrelation of the onset strength envelope." | |
) | |
btn.click( | |
fn=analyze_audio, | |
inputs=[audio, highpass, lowpass, bandpass_low, bandpass_high], | |
outputs=[ | |
waveform, | |
spectrogram, | |
mfcc, | |
zero_crossing_rate, | |
spectral_centroid, | |
spectral_bandwidth, | |
rms_energy, | |
spectral_contrast, | |
spectral_rolloff, | |
tempo, | |
tempogram, | |
], | |
) | |