![PyPI version](https://badge.fury.io/py/audian.svg)
audian - AUDIoANalyzer
Python- and pyqtgraph-based GUI
for viewing and analyzing recordings of animal vocalizations.
![audian](docs/audian-v1.7.png)
Documentation |
API Reference
Features
- Interactive viewer for single and multi-channel audio signals.
- Can handle many file formats and long recordings - holds only part of the recordings in memory.
- Displays raw traces, filtered traces, envelopes, and spectrogram.
- Change spectrogram resolution, overlap, color bar range and color map interactively.
- Change low- and high-pass filter cutoff frequencies interactively.
- Optional envelope with lowpass-filter cutoff frequency that can be changed interactively.
- Hide and show channels as well as plot panels.
- Extensive and intuitive key shortcuts for most functions.
- Plugins for additional computed traces, plot panels, and analysis.
audian data.wav
I currently explore various possibilities for interactive analysis of
audio signals. In the end, audian should be easily extensible via
plugins that provide processing and analysis algorithms, and audian
handles all GUI aspects.
Incomplete list of TODOs:
Structure
Eventually we want audian to be neatly separated into a data model,
widgets that display the data, and controllers.
Model
At the core of audian are time-series data that are loaded from a
file. In addition it supports varous derived time-series data, like
for example filtered data, computed envelopes, spectrograms,
etc. Audian can handle very large data sets, but holds only a small
part in memory (buffer).
-
class BufferedData
: Base class for computed data (buffereddata.py
).
-
class BufferedFilter
: Filter source data on the fly (bufferedfilter.py
).
-
class BufferedEnvelope
: Compute envelope on the fly (bufferedenvelope.py
).
-
class BufferedSpectrogram
: Spectrogram of source data on the fly (bufferedspectrogram.py
).
-
class Data
: Handles all the raw and derived data traces like filtered data, spectrogram data, etc (data.py
).
-
markerdata.py
: All marker related stuff. TODO: Split it into widgets and marker data.
View
All the data audian is dealing with are displayed in plots.
A few classes specializing some pyqtgraph features:
timeaxisitem.py
: Label time-axis of TimePlot.yaxisitem.py
: Label y-axis of TimePlot.selectviewbox.py
: Handles zooming and selection on all RangePlot.
Managing plots:
plotranges.py
: Manage ranges of plot axes.panels.py
: Manage plot panels.
Basic plots for time-series data:
rangeplot.py
: Plot displaying any data with specified range type.timeplot.py
: Plot displaying data as a function of time.spectrogramplot.py
: Plot displaying spectrograms.
Basic plot items:
traceitem.py
: PlotDataItem for TimePlot.specitem.py
: ImageItem for SpectrogramPlot.fulltraceplot.py
: GraphicsLayoutWidget showing the full raw data traces.
Controller
audiangui.py
: Main GUI, handles DataBrowser widgets and key shortcuts.databrowser.py
: Each data file is displayed in a DataBrowser widget.
Plugins
plugins.py
: Discover and manage plugins.analyzer.py
: Base class for analyzer plugins.statisticsanalyzer.py
: Compute basic descriptive statistics.
Run audian from Spyder IPython console:
Call the audian script via a shell escape:
! audian
Installation
Simply run (as superuser):
pip install audian
This should also install:
From the (spyder) IPython console, you can install it via
%pip install audian
Options
Output of audian --help
:
usage: audian [-h] [--version] [-v] [-c CHANNELS] [-f FREQ] [-l FREQ] [-i KWARGS] [-u [UNWRAP]] [-U [UNWRAP]]
[files ...]
Browse and analyze recordings of animal vocalizations..
positional arguments:
files name of files with the time series data
options:
-h, --help show this help message and exit
--version show program's version number and exit
-v Print debug information
-c CHANNELS Comma separated list of channels to be displayed (first channel is 0).
-f FREQ Cutoff frequency of highpass filter in Hz
-l FREQ Cutoff frequency of lowpass filter in Hz
-i KWARGS key-word arguments for the data loader function
-u [UNWRAP] unwrap clipped data with threshold relative to maximum input range and divide by two using unwrap()
from audioio package
-U [UNWRAP] unwrap clipped data with threshold relative to maximum input range and clip using unwrap() from audioio
package
version 2.0 by Jan Benda (2015-2024)
Other scientific software for working on timeseries data
- BioSPPy: The toolbox
bundles together various signal processing and pattern recognition
methods geared towards the analysis of biosignals.