-
Notifications
You must be signed in to change notification settings - Fork 182
Home
this is a comprehensive, curated list of python software and packages realted to scientific research in audio.
- signal processing
- music information retrieval
- speech processing
- ...
The python ecosystem is huge
There is already this list, but it not up to date and includes too much packages of special interest, mostly not relevant for scientific applications. Awesome-Python is large curated list of python packages. However the audio section is very small. Please contribute.
Spyder is an Open Source Python IDE that comes with feautures like variable explorer and a builtin iPython/jupyter kernel view. Sometimes a bit buggy, but if you really rely on the MATLAB workflow this is the way to go.
Best way to generate reports that include code and and results/figures
- 👍 Easy to share. Can be hosted on github.com or jupyter nbviewer
- 👍 Looks great and you can play audio right from the noteboook.
- ✊ Working is cells works for short code segments, but can become messy, when there are many functions
- 👎 Very limited builtin text editor
- 👎 Native format is binary, so it not working nicely together with git
Atom is a relatively new open source text editor which has a great plugin system.
- Python-Autocomplete autocompletion powered by Jedi. Also Go-to-definition.
- Flake8
- ⭐️Hydrogen Jupyter notebook like environment inside Atom. Allows you to run cells similar to Matlab.
- pyCharm Commercial Python IDE by JetBrains. Has free community edition available.
- PyDev Eclipse based IDE
pip install soundfiledef process_audio(signal, factor=1.0):
return signal * multiplier
# read wavfile into numpy array of shape (nb_channels, nb_samples)
audio, fs = sf.read("input.wav")
# Process audio
processed_audio = process_audio(audio, factor=0.5)
# write out processed audio to file
sf.write("out.wav", processed_audio, fs)- audiolazy - Expressive Digital Signal Processing (DSP) package for Python.
- audioread - Cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding.
- beets - A music library manager and MusicBrainz tagger.
- dejavu - Audio fingerprinting and recognition.
- pydub - Manipulate audio with a simple and easy high level interface.
- TimeSide - Open web audio processing framework.
- tinytag - A library for reading music meta data of MP3, OGG, FLAC and Wave files.
- Youtube-Downloader Download youtube videos (and the audio)
- Python Data Science Handbook Excellent Book, look for the Tutorial notebooks
- MIR Notebooks
- [http://www.scipy-lectures.org/index.html](Deep Introduction to Numpy and Scipy)
- pySox
- pyAV
- Audioread general purpose audio decoder
- (Py)Soundfile
- (Py)Soundcard
- python-sounddevice = another portaudio wrapper
Do not use scipy.io.wavfile, because it doesn't scale the data to [0, 1] also it doesn't support 24bit PCM wavfiles.
- https://github.com/spatialaudio/selected-topics-in-audio-signal-processing-exercises
- https://github.com/unpingco/Python-for-Signal-Processing
-
FFT (use scipy.fftpack.fft instead of np.fft)
-
pyFFTW3
-
talkbox - A Python library for speech/signal processing.
-
Resampy Efficient, high quality sample rate conversion.
- [Sound Field Synthesis Toolbox](Sound Field Synthesis Toolbox for Python)
- BrianHears, Auditory Models
- PyRubberband A python wrapper for rubberband to do pitch-shifting and time-stretching.
- PYO C++ lib with python bindings for realtime audio (like supercollider)
-
essentia C++ feature extractor + general purpose audio/MIR related DSP algorithms like pitch tracking, beat detection.
-
Madmom MIR packages with strong focus on beat detection, onset detection and chord recognition.
-
mir_eval common heuristic accuracy scores for various MIR tasks.
-
pyAudioAnalysis Feature Extraction + Classification
-
pyYAAFE Python bindings for YAAFE
-
aubio feature extractor, written in C, python interface
-
audiolazy Realtime Audio Processing lib, general purpose
- Scikit-Learn
- Keras
- Lasagne
- Tensorflow
- Scipy Optimize
- BayesPy - Bayesian Python
- lmfit-py Non-Linear Least-Square Minimization and Curve-Fitting for Python
- pyFASST
- dsdtools
- commonfate
- beta_ntf
- NUSSL
- Simfa, NMF flavors
- NTFLib
- matplotlib
- seaborn
- bokeh
- Pandas
- Statsmodels
- Scipy.stats
- Music21
- MIDO Realtime MIDI
- Pretty-MIDI Utility functions for handling MIDI data in a nice/intuitive way
- Mingus
- mingus - An advanced music theory and notation package with MIDI file and playback support.
- Numba
- rpy2 call R from python
- Matlab_Wrapper runs code in matlab and returns results to python
- CFFI
- pybind11
- PyCUDA (FFT)