Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Streaming Algorithms Not Accessible in essentia.streaming After Installing from Source #1448

Open
HighFlip opened this issue Nov 14, 2024 · 0 comments

Comments

@HighFlip
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant