Python Audio Analysis Library: Feature Extraction, Classification, Segmentation and Applications
Python HTML CSS Other
Switch branches/tags
Nothing to show

A Python library for audio feature extraction, classification, segmentation and applications

This doc contains general info. Click [here] ( for the complete wiki


  • Check out paura a python script for realtime recording and analysis of audio data
  • January 2017: mp3 files are also supported for single file feature extraction, classification and segmentation (using pydub library)
  • September 2016: New segment classifiers (from sklearn): random forests, extra trees and gradient boosting
  • August 2016: Update: mlpy no longer used. SVMs, PCA, etc performed through scikit-learn
  • August 2016: Update: Dependencies have been simplified
  • January 2016: [PLOS-One Paper regarding pyAudioAnalysis] ( (please cite!)


pyAudioAnalysis is a Python library covering a wide range of audio analysis tasks. Through pyAudioAnalysis you can:

  • Extract audio features and representations (e.g. mfccs, spectrogram, chromagram)
  • Classify unknown sounds
  • Train, parameter tune and evaluate classifiers of audio segments
  • Detect audio events and exclude silence periods from long recordings
  • Perform supervised segmentation (joint segmentation - classification)
  • Perform unsupervised segmentation (e.g. speaker diarization)
  • Extract audio thumbnails
  • Train and use audio regression models (example application: emotion recognition)
  • Apply dimensionality reduction to visualize audio data and content similarities


  • Install dependencies:
pip install numpy matplotlib scipy sklearn hmmlearn simplejson eyed3 pydub
  • Clone the source of this library:
git clone

An audio classification example

More examples and detailed tutorials can be found [at the wiki] (

pyAudioAnalysis provides easy-to-call wrappers to execute audio analysis tasks. Eg, this code first trains an audio segment classifier, given a set of WAV files stored in folders (each folder representing a different class) and then the trained classifier is used to classify an unknown audio WAV file

from pyAudioAnalysis import audioTrainTest as aT
aT.featureAndTrain(["classifierData/music","classifierData/speech"], 1.0, 1.0, aT.shortTermWindow, aT.shortTermStep, "svm", "svmSMtemp", False)
aT.fileClassification("data/doremi.wav", "svmSMtemp","svm")
(0.0, array([ 0.90156761,  0.09843239]), ['music', 'speech'])

In addition, command-line support is provided for all functionalities. E.g. the following command extracts the spectrogram of an audio signal stored in a WAV file: python fileSpectrogram -i data/doremi.wav

Further reading

Apart from the current README file and [the wiki] (, a more general and theoretic description of the adopted methods (along with several experiments on particular use-cases) is presented [in this publication] ( Please use the following citation when citing pyAudioAnalysis in your research work:

  title={pyAudioAnalysis: An Open-Source Python Library for Audio Signal Analysis},
  author={Giannakopoulos, Theodoros},
  journal={PloS one},
  publisher={Public Library of Science}

Finally, for Matlab-related audio analysis material check this book.


[Theodoros Giannakopoulos] (, Postdoc researcher at NCSR Demokritos, Athens, Greece