Description
I initially installed essentia-tensorflow via pip with Python 11, and the installation went fine, but I encountered an issue that I believe stemmed from ffmpeg and couldn’t load audio files properly, giving me a codec error for MP3 and WAV files.
Then, I decided to install Essentia from source. I followed the instructions and had to use compat-ffmpeg4 based on what I saw in a fork, since it seemed necessary for Fedora. This worked, but I had to set some export flags during the compilation, and also manually install TensorFlow and link it dynamically though I believe this is not relevant to the issue.
After running the following commands:
python3 waf configure --with-python --with-tensorflow
python3 waf
I saw that the streaming algorithms, including RingBufferOutput and RingBufferInput, were listed among the compiled files. But after running python3 waf install
, everything seemed to install properly, except the streaming algorithms were not accessible within the python essentia.streaming
module.
I did notice that the library included a lot of algorithms, most of them seemed to be the same as in essentia.standard. I also confirmed that the compiled streaming algorithms are indeed present in the build directory.
I also ran the following check:
nm -D /home/chibolo/.pyenv/versions/3.12.7/envs/essentia/lib/libessentia.so | grep RingBufferInput
Showing that it is linked:
000000000024d570 W _ZN8essentia9streaming15RingBufferInput10shouldStopEb
0000000000874b08 D _ZN8essentia9streaming15RingBufferInput11descriptionE
000000000024d3b0 W _ZN8essentia9streaming15RingBufferInput17declareParametersEv
000000000024c270 T _ZN8essentia9streaming15RingBufferInput3addEPfi
0000000000874b18 D _ZN8essentia9streaming15RingBufferInput4nameE
000000000024b840 T _ZN8essentia9streaming15RingBufferInput5resetEv
000000000024c070 T _ZN8essentia9streaming15RingBufferInput7processEv
0000000000874b10 D _ZN8essentia9streaming15RingBufferInput8categoryE
000000000024c360 T _ZN8essentia9streaming15RingBufferInput9configureEv
000000000024c480 T _ZN8essentia9streaming15RingBufferInputC1Ev
000000000024c480 T _ZN8essentia9streaming15RingBufferInputC2Ev
000000000024c050 T _ZN8essentia9streaming15RingBufferInputD0Ev
000000000024bc80 T _ZN8essentia9streaming15RingBufferInputD1Ev
000000000024bc80 T _ZN8essentia9streaming15RingBufferInputD2Ev
00000000008575a8 V _ZTIN8essentia9streaming15RingBufferInputE
00000000006d98c0 V _ZTSN8essentia9streaming15RingBufferInputE
00000000008576f0 V _ZTVN8essentia9streaming15RingBufferInputE
Everything seems to be compiled and linked properly, but for some reason, the streaming algorithms are not showing up in the Python bindings.
Any help would be appreciated!
OS: Fedora release 39 (Thirty Nine) x86_64
Python version: 3.12.7
Essentia version: 2.1-beta6-dev
FFmpeg version: compat-ffmpeg4
Tensorflow version: 2.18.0
Venv: Pyenv