essentia icon indicating copy to clipboard operation
essentia copied to clipboard

A prebuild streaming_extractor_music with Gaia high level features support

Open halaei opened this issue 5 years ago • 3 comments

Thanks for the amazing work. But it is extremely hard to make things working.

I just want streaming_extractor_music static binary that supports high-level Gaia models in https://essentia.upf.edu/svm_models/, preferably the lastest versions. My attempts to build in my system have already failed. I couldn't find a docker image that has gaia2. And I couldn't make my image from https://github.com/MTG/essentia-docker/blob/master/nightly/Dockerfile.ubuntu18.04-nightly.

I will thank you a lot if you give us a docker image / prebuild binary with gaia2 and models and a simple profile.yml file like this:

highlevel:
  compute: 1
  svm_models: ['models/danceability.history', 'models/genre_electronic.history', 'models/ismir04_rhythm.history', 'models/mood_electronic.history', 'models/mood_relaxed.history', 'models/timbre.history', 'models/gender.history', 'models/genre_rosamerica.history', 'models/mood_acoustic.history', 'models/mood_happy.history', 'models/mood_sad.history',   'models/tonal_atonal.history', 'models/genre_dortmund.history', 'models/genre_tzanetakis.history', 'models/mood_aggressive.history', 'models/mood_party.history', 'models/moods_mirex.history','models/voice_instrumental.history']

halaei avatar Apr 07 '20 11:04 halaei

My dockerfile so far:

FROM ubuntu:18.04

ENV LANG C.UTF-8

RUN apt-get update \
    && apt-get -y upgrade \
    && apt-get install -y python3-numpy python3-six \
       libfftw3-3 libyaml-0-2 libtag1v5 libsamplerate0 python3-yaml \
       libavcodec57 libavformat57 libavutil55 libavresample3 git \
    && rm -rf /var/lib/apt/lists/*

RUN mkdir /essentia && cd /essentia && git clone https://github.com/MTG/essentia.git

RUN cd /essentia && git clone https://github.com/MTG/gaia.git

RUN apt-get update \
    && apt-get install -y build-essential python3-dev libeigen3-dev \
    libfftw3-dev libavcodec-dev libavformat-dev libavresample-dev \
    libsamplerate0-dev libtag1-dev libyaml-dev \
    libqt4-dev swig pkg-config \
    libavutil-dev libchromaprint-dev

RUN cd /essentia/gaia && python3 waf configure && python3 waf && python3 waf install \
    && cd /essentia/essentia && python3 waf configure --with-vamp --with-gaia --with-static-examples \
        --with-example=streaming_extractor_music,streaming_extractor_freesound,streaming_extractor_music_svm \
    && python3 waf && python3 waf install && ldconfig \
    &&  apt-get remove -y build-essential libyaml-dev libfftw3-dev libavcodec-dev \
        libavformat-dev libavutil-dev libavresample-dev python-dev libsamplerate0-dev \
        libtag1-dev python-numpy-dev libeigen3-dev \
        libqt4-dev libchromaprint-dev \
    && apt-get autoremove -y \
    && apt-get clean -y \
    && rm -rf /var/lib/apt/lists/* \
    && cd / && rm -rf /essentia/essentia && rm -rf /essentia/gaia


ENV PYTHONPATH /usr/local/lib/python3/dist-packages

WORKDIR /essentia

Build errors:

/usr/bin/ld: cannot find -ltag
/usr/bin/ld: cannot find -lQtCore
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libavformat.a(avisynth.o): In function `avisynth_read_header':
(.text.unlikely+0x19c): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: cannot find -lchromaprint
collect2: error: ld returned 1 exit status

/usr/bin/ld: cannot find -ltag
/usr/bin/ld: cannot find -lQtCore
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libavformat.a(avisynth.o): In function `avisynth_read_header':
(.text.unlikely+0x19c): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: cannot find -lchromaprint
collect2: error: ld returned 1 exit status

Waf: Leaving directory `/essentia/essentia/build'
Build failed
 -> task in 'essentia_streaming_extractor_freesound' failed with exit status 1 (run with -v to display more information)
 -> task in 'essentia_streaming_extractor_music' failed with exit status 1 (run with -v to display more information)
The command '/bin/sh -c cd /essentia/gaia && python3 waf configure && python3 waf && python3 waf install     && cd /essentia/essentia && python3 waf configure --with-vamp --with-gaia --with-static-examples         --with-example=streaming_extractor_music,streaming_extractor_freesound,streaming_extractor_music_svm     && python3 waf && python3 waf install && ldconfig     &&  apt-get remove -y build-essential libyaml-dev libfftw3-dev libavcodec-dev         libavformat-dev libavutil-dev libavresample-dev python-dev libsamplerate0-dev         libtag1-dev python-numpy-dev libeigen3-dev         libqt4-dev libchromaprint-dev     && apt-get autoremove -y     && apt-get clean -y     && rm -rf /var/lib/apt/lists/*     && cd / && rm -rf /essentia/essentia && rm -rf /essentia/gaia' returned a non-zero code: 1

halaei avatar Apr 07 '20 11:04 halaei

Take a look at the Dockerfile used in Acousticbrainz: https://github.com/metabrainz/acousticbrainz-server/blob/master/Dockerfile This compiles streaming_extractor_music_svm with gaia support

alastair avatar Apr 07 '20 15:04 alastair

I've successfully built Essentia 2.1-beta5 with current gaia master by modifying one of the original Dockerfiles from Essentia: https://gist.github.com/daniele-athome/3f7c3c241e7483e7b6454a9229031ca5

daniele-athome avatar Jul 24 '22 15:07 daniele-athome