pyquist.plot¶
Matplotlib helpers for visualizing Audio — waveform,
magnitude spectrum, and spectrogram.
Plot helpers for Audio (waveform, magnitude spectrum, spectrogram).
These work the same in a notebook and a regular script. Pass
output_file=<path> to save the figure to disk in addition to (or instead
of) displaying it interactively.
- pyquist.plot.plot(audio, *, offset=None, duration=None, figsize=(10, 3), ax=None, output_file=None)[source]¶
Plots the waveform of an Audio.
Channels are overlaid on a single axis. The x-axis is time in seconds if
audio.sample_rateis set, otherwise sample index. The y-axis is symmetric about zero.- Parameters:
audio (
Audio) – The audio to plot.offset (
Optional[float]) – Start time in seconds. Defaults to0.0(beginning of audio). Requiresaudio.sample_rateto be set.duration (
Optional[float]) – Length to plot in seconds. Defaults to the rest of the audio. Requiresaudio.sample_rateto be set.figsize (
Tuple[float,float]) – Figure size passed toplt.subplots(ignored ifaxis given).ax (
Optional[Axes]) – An existing axis to draw into. IfNone, a new figure is created.output_file (
Optional[str]) – If given, the figure is saved to this path viaFigure.savefig. Extension determines format (.png,.pdf,.svg, …).
- Return type:
Axes- Returns:
The matplotlib
Axesthe waveform was drawn on.
- pyquist.plot.plot_freq(audio, *, offset=None, duration=None, n_fft=None, log_frequency=True, log_amplitude=True, dynamic_range_db=80.0, figsize=(10, 3), ax=None, output_file=None)[source]¶
Plots the magnitude spectrum of an Audio via a single FFT.
Multi-channel audio is first mixed to mono. By default
n_fftis the smallest power of two>= num_samples(zero-padding shorter signals), capped atNFFT_MAX. When the cap kicks in, a warning is issued and the FFT is taken over only the firstNFFT_MAXsamples.- Parameters:
audio (
Audio) – The audio to analyze. Must have asample_rate.offset (
Optional[float]) – Start time in seconds. Defaults to0.0(beginning of audio).duration (
Optional[float]) – Length to analyze in seconds. Defaults to the rest of the audio.n_fft (
Optional[int]) – FFT size.None(default) picks the smallest power of two>= num_samples(capped atNFFT_MAX). When set explicitly, shorter signals are zero-padded and longer signals are truncated to the firstn_fftsamples (no warning).log_frequency (
bool) – If True (default), the x-axis uses a log scale.log_amplitude (
bool) – If True (default), magnitudes are converted to dB.dynamic_range_db (
float) – Magnitudes below-dynamic_range_dbdB are floored for numerical stability. Only used whenlog_amplitude=True.figsize (
Tuple[float,float]) – Figure size (ignored ifaxis given).ax (
Optional[Axes]) – An existing axis to draw into. IfNone, a new figure is created.output_file (
Optional[str]) – If given, the figure is saved to this path.
- Return type:
Axes- Returns:
The matplotlib
Axesthe spectrum was drawn on.
- pyquist.plot.plot_spec(audio, *, offset=None, duration=None, n_fft=2048, hop_length=512, log_frequency=True, log_amplitude=True, dynamic_range_db=80.0, figsize=(10, 4), ax=None, output_file=None)[source]¶
Plots a magnitude spectrogram of an Audio.
Multi-channel audio is first mixed to mono. A Hann-windowed STFT with
n_fftwindow size andhop_lengthframe advance is computed; magnitudes are optionally converted to dB and plotted on a log-frequency axis (both defaults).- Parameters:
audio (
Audio) – The audio to analyze. Must have asample_rate.offset (
Optional[float]) – Start time in seconds. Defaults to0.0(beginning of audio).duration (
Optional[float]) – Length to analyze in seconds. Defaults to the rest of the audio.n_fft (
int) – STFT window size in samples. Defaults to 2048 (~46 ms at 44.1 kHz).hop_length (
int) – Frame advance in samples. Defaults to 512 (75% overlap).log_frequency (
bool) – If True (default), the y-axis uses a log scale.log_amplitude (
bool) – If True (default), magnitudes are converted to dB (viapyquist.helper.amplitude_to_db()).dynamic_range_db (
float) – Magnitudes below-dynamic_range_dbdB are floored for numerical stability. Only used whenlog_amplitude=True.figsize (
Tuple[float,float]) – Figure size (ignored ifaxis given).ax (
Optional[Axes]) – An existing axis to draw into. IfNone, a new figure is created.output_file (
Optional[str]) – If given, the figure is saved to this path.
- Return type:
Axes- Returns:
The matplotlib
Axesthe spectrogram was drawn on.