audio-vis / ui.py
github-actions[bot]
Sync to HuggingFace Spaces
3f16dbd
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,
],
)