Yet Another Audio Feature Extractor
- Branch master : |travis_master|
- Branch dev : |travis_dev|
- Anaconda : |anaconda_build|
.. |travis_master| image:: https://travis-ci.org/Yaafe/Yaafe.svg?branch=master
.. |anaconda_build| image:: https://anaconda.org/yaafe/yaafe/badges/installer/conda.svg
.. |conda| image:: https://anaconda.org/yaafe/yaafe/badges/installer/conda.svg
Yaafe can be easily install with
conda <http://conda.pydata.org>_. To install this package with conda run::
conda install -c conda-forge yaafe
.. |docker| image:: https://badge.imagelayers.io/yaafe/yaafe:latest.svg
Yaafe can also be install through
Get the official Yaafe image from
Yaafe repository on Docker Hub <https://hub.docker.com/r/yaafe/yaafe/>_::
docker pull yaafe/yaafe
docker tag yaafe yaafe/yaafe
or build it from the sources directory::
docker build --tag=yaafe .
Following both of the method above, you then have a docker image tagged as yaafe.
yaafe command is the entrypoint for that docker image so you can run 'yaafe' from the command line through
docker run yaafe. For example::
docker run -it yaafe --help docker run -it yaafe --volume=$(pwd):/wd --workdir=/wd -c resources/featureplan -r 16000 --resample resources/yaafe_check.wav
On Linux, it can be usefull to create an
alias for it::
alias yaafe='docker run -it --rm=true --volume=$(pwd):/wd --workdir=/wd yaafe'
You could then simply run::
et voilà !
If you need to set the docker user as the current user on the host, you could try to run docker with the
-u $(id -u):$(id -g) option ::
docker run -it --rm=true --volume=$(pwd):/wd --workdir=/wd -u $(id -u):$(id -g) yaafe -c resources/featureplan -o h5 -r 16000 --resample resources/yaafe_check.wav
Last but not least, the entry-point for the yaafe docker image is smart :
- every command that start with a dash
-will be pass as options to the
yaafecommand inside the docker container
every command that does not start with a dash will be treated as a regular command. For example::
docker run -it yaafe /bin/bash
will give you access to a bash terminal inside the docker. And ::
docker run -it yaafe yaafe-engine --help
will launch the
`yaafe-engine batch processing tool.
Yaafe source code should compile on linux and MacOsX platform, and uses CMake as compilation tool.
Yaafe requires third-party libraries to enable specific features. Some of these libraries may already be available on your system.
argtable <http://argtable.sourceforge.net/>_ library is required.
eigen <http://eigen.tuxfamily.org/>_ library is also required. You could either installed it through your regular packages manager (e.g.
libeigen3-dev <https://packages.debian.org/search?keywords=libeigen3-dev>__ on Debian) and then pass the
-DWITH_EIGEN_LIBRARY=ON option flag to
Or you can use the source code provided through the git submodule included in the Yaafe git repository and which you can get with the
git submodule update --init command. If you used
git clone --recursive to clone Yaafe, you don't need this.
Depending on optional features you want to use, other librairies may be used:
libsndfile <http://www.mega-nerd.com/libsndfile/>_: enable reading WAV files format (highly recommanded)
libmpg123 <http://www.mpg123.de/api/>_: enable reading MP3 audio files
HDF5 <http://www.hdfgroup.org/HDF5/>_ >= 1.8: enable H5 output format
liblapack <http://www.netlib.org/lapack/>_: enable some audio features (LSF)
FFTW3 <http://www.fftw.org/>_: use FFTW instead of Eigen for FFT computations (pay attention to licensing issues when linking with the GPL FFTW3 library).
To use the yaafe script you need Python >= 2.5, and the numpy package.
Once previous libraries are installed (some may have been locally installed in <lib-path>),
you can compile with the following steps: ::
ccmake -DCMAKE_PREFIX_PATH=<lib-path> -DCMAKE_INSTALL_PREFIX=<install-path> ..
If you use an external eigen library (and not the one provided by git submodule), don't forget to add the flag: ::
ccmake -DCMAKE_PREFIX_PATH=<lib-path> -DCMAKE_INSTALL_PREFIX=<install-path> -DWITH_EIGEN_LIBRARY=ON ..
Several options can control Yaafe compilation. More details can be found at:
To easily use Yaafe, you should set the following environment vars::
On MacOSX replace
The output of
make install should give you the INSTALL_DIR path (defaults to
/usr/local). The python files are installed in
/usr/local/lib/python2.7/site-packages, which is not by default in the python path on MacOSX.
The consequence is the error
ERROR: cannot load yaafe packages: No module named yaafelib.
There are 3 ways to solve this problem :
The simplest way is to add the line
from optparse import OptionParser, but it won't let you use the yaafelib unless you add this line (and import sys) before each import of yaafelib.
You can use
export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATHor add it to your ~/.bash_profile, but this will affect other versions of python.
- You can move the files to a site-package folder that is in your PYTHONPATH:
- if you use Python 2:
mv /usr/local/lib/python2.7/site-packages/yaafefeatures.py /usr/local/lib/python2.7/site-packages/yaafelib `python -c 'import sys, re ; print next(i for i in sys.path if re.match(".*site-packages$", i))'
- if you use Python 3:
mv /usr/local/lib/python2.7/site-packages/yaafefeatures.py /usr/local/lib/python2.7/site-packages/yaafelib `python3 -c 'import sys, re ; print(next(i for i in sys.path if re.match(".*site-packages$", i)))'
- if you use Python 2:
If you use Matlab, you can set your MATLABPATH var::
To build documentation, you need Sphinx.
Before building documentation, you should set your environment correctly so that sphinx builds documentation
with automatic features documentation.
To build documentation, just run
make doc_python in the
build directory. Documentation is built in
YAAFE is released under the version 3 of the GNU Lesser General Public License. Read COPYING and COPYING.LESSER for
more details. The user should also read DISCLAIMER before linking with optional libraries which have different license policy.
To get help with YAAFE, use the mailing-list firstname.lastname@example.org (registration
at https://lists.sourceforge.net/lists/listinfo/yaafe-users ).
Yaafe was first developed at
Telecom Paristech / AAO Team <http://www.tsi.telecom-paristech.fr/aao/en/>. It uses several great open-source projects like
If you want to cite Yaafe in a publication, please see