I am looking for good tools for Audio signal processing. e.g Speech & music analysis, automatic language identification, etc.

Does the Scipy library provide functions for audio processing? Does it have a good tool for Audio Signal processing?

Can you please suggest a tool for this?

  • 1
    $\begingroup$ Yes, scipy does provide infrastructure to do this kind of things but you need to be a bit more specific on what you are after to get a more useful answer (especially to answer whether or not there is "a better tool than [scipy]"). $\endgroup$
    – A_A
    Commented Jun 12, 2012 at 11:48
  • 1
    $\begingroup$ realtime or offline? $\endgroup$
    – endolith
    Commented Jun 12, 2012 at 13:31
  • $\begingroup$ offline. I'm looking for Speech/Music classification. $\endgroup$
    – PGupta
    Commented Jun 13, 2012 at 12:42
  • 1
    $\begingroup$ Scipy and Numpy together provide excellent tools for both real-time and offline processing of data. In combination with Cython or Ctypes (I tend to prefer the Cython approach), it's easy to operate on numpy arrays with low level fast operations written in C, if other libraries can't be persuaded to fit. $\endgroup$ Commented Jun 14, 2012 at 9:57
  • 1
    $\begingroup$ the one thing MATLAB lacks is the ability to define the origin of an array to be something other than 1. so like the DC value in the output of an FFT is in bin #1 instead of bin #0 as it should be. there are some other goofy things about MATLAB (or Octave). $\endgroup$ Commented Jun 17, 2014 at 3:25

4 Answers 4


Personally I find Python one of the best choices out there and did myself some work in area of audio identification. You are welcomed to check for instance my software for automatic identification of birds from noisy audio recordings: Ornithokrites. The program is used by Department of Conservation of New Zealand and they are happy about it. Based on this example I would like to point out several advantages of using Python:

  1. Huge, fast developing community providing tons of libraries. SciPy provides plethora of methods for signal processing (granted, not that many and mature as Matlab). Mind though that SciPy, although one of the most important, is only one of hundreds that can help you in your endeavours. I found Aubio best for music analysis. For speech and music recognition for sure you will enjoy great number of audio features Yaafe can extract.
  2. It's free! Once out of academia, you quickly find out that Matlab is rather expensive. And even if you can afford it, then your perspective users will not be happy about this dependency. For instance, mentioned Department of Conservation would not accept proprietary software.
  3. Identification often requires machine learning and Python has great toolkit for it: sklearn. It is state of the art library - and easy to use. Have a look at Kaggle competitions (machine learning) and check how many top programmers are using Python and sklearn.
  4. You can manage "big data". If you want to run analysis against huge networked databases of recordings, then Python has well established set of tools. I don't think Matlab / Octave interface easily with e.g. Hadoop, although please do correct me if I am wrong. R does better this area.
  5. Speaking of interfacing, you can easily interface your program with a web site. This is the way I manage Ornithokrites (bird recognition): the program runs on Amazon Web Services cloud computing service. Great if you want to provide your software to other people who do not necessarily want to go through installation procedure of all required libraries.

My second choice would be R. Although not that feature-rich as Python, it has great number of useful libraries (check e.g. seewave for your applications). Installation of those on both Windows and Linux is piece of cake, which is important if you would like others to use your program. However, to my experience high-performance computing in R is more difficult - an important thing to notice if you need to do A LOT of processing and identification.

Examples of music classification in Python:

Book Building Machine Learning Systems with Python has a chapter on music classification

Other tools (list by no means complete): Python in Music


It seems that Python is a popular language for this with some good toolsets based on the fact that well... I've seen it in use in some music tech grad departments & companies.

In academia, it is very common to see this type of work done in Matlab, since it brings together many powerful toolkits (Signal Processing, Parallel Computing, graphing, Database utilities, Machine Learning, AI) in an easy-to-probe IDE. However it costs money and has some drawbacks (not the best programming language in terms of application design & performance, so it is mainly a prototyping tool but can compile down to C). Octave is the free alternative but I can't vouch for the quality of the signal processing tools or the software itself since I have not used it.

  • $\begingroup$ Great library for this is github.com/worldveil/dejavu. Python, open-source, MIT licensed and does audio recognition and fingerprinting. $\endgroup$ Commented May 4, 2015 at 16:03
  • $\begingroup$ scipy ecosystem have a lot of functionality of MATLAB. $\endgroup$ Commented Jun 12, 2016 at 0:28

You could also check pyAudioAnalysis: it combines open libraries for pattern recognition and several audio feature implementations. Some example applications implemented in pyAudioAnalysis, that you may find interesting:

  • silence removal
  • speaker diariation
  • segment classification (and training) using SVMs, kNN, etc
  • joint segmentation-classification (using HMM)
  • audio thumbnailing
  • audio content visualization

You can use Essentia audio analysis C++ library, that includes python bindings. You'll take all the advantage of python/scipy environment plus lots of audio/music analysis algorithms that come with Essentia.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.