Music-and-Culture-Technology-Lab / omnizart

Omniscient Mozart, being able to transcribe everything in the music, including vocal, drum, chord, beat, instruments, and more.
https://music-and-culture-technology-lab.github.io/omnizart-doc/
MIT License
1.61k stars 98 forks source link

Known issues when installing omnizart on Windows #6

Open BreezeWhite opened 3 years ago

BreezeWhite commented 3 years ago

Here lists the known issues when pip install omnziart on Windows.

Madmom

You need to install VS C++ build tools first to install and compile madmom. After download the build tool from the official site, run the installer and select C++ Build Tools, and on the side bar, select MSVC v142 - VS 2019 C++ x64/x86 and Windows 10 SDK. Run the installation, reboot, and try install with pip install madmom again.

Vamp Package

The module omnizart chord relies on vampy to run the feature extraction, and which was originally compiled for 32-bit python2.7 on Windows. See the discussion here. There is currently no workaround to avoid using the older version python, and the only solution would be to use the provided docker image, which could also be another pain for Windows user using the docker...

swindle720 commented 3 years ago

Tested on windows 10 via docker and specifically getting errors for chord. Below is the results.

# omnizart chord transcribe song.wav

2021-08-24 07:18:54 Extracting feature
2021-08-24 07:18:57 Loading model
2021-08-24 07:18:57 Using built-in model /usr/local/lib/python3.6/dist-packages/omnizart/checkpoints/chord/chord_v1 for transcription.
2021-08-24 07:18:57 Preparing feature for model prediction
2021-08-24 07:18:57 Predicting...
Traceback (most recent call last):
  File "/usr/local/bin/omnizart", line 5, in <module>
    entry()
  File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/omnizart/cli/chord/transcribe.py", line 16, in transcribe
    chord.app.transcribe(input_audio, model_path=model_path, output=output)
  File "/usr/local/lib/python3.6/dist-packages/omnizart/chord/app.py", line 79, in transcribe
    chord, _, _, _ = model.predict(segments_pad)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py", line 130, in _method_wrapper    return method(self, *args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py", line 1599, in predict
    tmp_batch_outputs = predict_function(iterator)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py", line 780, in __call__
    result = self._call(*args, **kwds)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py", line 807, in _call
    return self._stateless_fn(*args, **kwds)  # pylint: disable=not-callable
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 2829, in __call__
    return graph_function._filtered_call(args, kwargs)  # pylint: disable=protected-access
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 1848, in _filtered_call
    cancellation_manager=cancellation_manager)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 1924, in _call_flat
    ctx, args, cancellation_manager=cancellation_manager))
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 550, in call
    ctx=ctx)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py", line 60, in quick_execute
    inputs, attrs, num_outputs)
tensorflow.python.framework.errors_impl.InvalidArgumentError:  ScanOp: Expected scan axis in the range [-1, 1), but got 1
         [[node chord_model/decoder/Cumsum (defined at /lib/python3.6/dist-packages/omnizart/models/chord_model.py:201) ]] [Op:__inference_predict_function_18198]

Errors may have originated from an input operation.
Input Source operations connected to node chord_model/decoder/Cumsum:
 chord_model/encoder/BinaryRound (defined at /lib/python3.6/dist-packages/omnizart/models/chord_model.py:226)

Function call stack:
predict_function

Same issue with MP3. Tomorrow ill have alook at the code and see whats happening,

Zulex commented 2 years ago

Anyone managed to get this to work under Windows?

MohammedMehdiTBER commented 2 years ago

I suffered a lot to install omnizart. It is harder than Spleeter and Demucs. So do I need to install python2.7 32-bit than vampy using it for chord trans to work?

Vuizur commented 1 year ago

It is possible to run vampy on Windows with modern Python versions. You use the chroma-chordino plugin for the chord detection, I managed to get it running with the 64-bit-version of the plugin and Python 3.11. I used these dependencies: https://github.com/Vuizur/chord-recognizer/blob/main/pyproject.toml (unfortunately I had to fork vampy to get it to work, and my PRs haven't gotten merged yet. And ignore syncedlyrics + yt-dlp) and this code: https://github.com/Vuizur/chord-recognizer/blob/4d90190afb5b2a2ea290ca8714ad2e5dcb8dfbac/chord_recognizer/lyricsfetch.py#L35.

yoyololicon commented 1 year ago

Hi @Vuizur , thanks for looking into this! I cannot see the files you gave. Are they in private repositories?

Vuizur commented 1 year ago

Oups, I forgot to make it public. It should work now.

Kuribohrn commented 12 months ago

It seems that the current pyYAML version it depends on has some problems. Updating pyYAML to 6.0.1 seems to resolve the issue.

MacTheZazou commented 11 months ago

I can't install omnizart because of Madmom, I was able to install madmom from the source but Pip still try to install the v16.1 and it failed.. Arch & Windows