-
Notifications
You must be signed in to change notification settings - Fork 280
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
Doc error in README re predict_and_save() usage #141
Comments
Trying to add model path as positional argument, e.g. from basic_pitch.inference import predict_and_save
from basic_pitch import ICASSP_2022_MODEL_PATH
predict_and_save(
audio_file,
'/content',
True,
True,
True,
True,
ICASSP_2022_MODEL_PATH
) results in this error: Predicting MIDI for /...
/usr/local/lib/python3.10/dist-packages/basic_pitch/inference.py:229: UserWarning: PySoundFile failed. Trying audioread instead.
audio_original, _ = librosa.load(str(audio_path), sr=AUDIO_SAMPLE_RATE, mono=True)
/usr/local/lib/python3.10/dist-packages/librosa/core/audio.py:184: FutureWarning: librosa.core.audio.__audioread_load
Deprecated as of librosa version 0.10.0.
It will be removed in librosa version 1.0.
y, sr_native = __audioread_load(path, offset, duration, dtype)
---------------------------------------------------------------------------
LibsndfileError Traceback (most recent call last)
[/usr/local/lib/python3.10/dist-packages/librosa/core/audio.py](https://localhost:8080/#) in load(path, sr, mono, offset, duration, dtype, res_type)
175 try:
--> 176 y, sr_native = __soundfile_load(path, offset, duration, dtype)
177
13 frames
[/usr/local/lib/python3.10/dist-packages/librosa/core/audio.py](https://localhost:8080/#) in __soundfile_load(path, offset, duration, dtype)
208 # Otherwise, create the soundfile object
--> 209 context = sf.SoundFile(path)
210
[/usr/local/lib/python3.10/dist-packages/soundfile.py](https://localhost:8080/#) in __init__(self, file, mode, samplerate, channels, subtype, endian, format, closefd)
657 format, subtype, endian)
--> 658 self._file = self._open(file, mode_int, closefd)
659 if set(mode).issuperset('r+') and self.seekable():
[/usr/local/lib/python3.10/dist-packages/soundfile.py](https://localhost:8080/#) in _open(self, file, mode_int, closefd)
1215 err = _snd.sf_error(file_ptr)
-> 1216 raise LibsndfileError(err, prefix="Error opening {0!r}: ".format(self.name))
1217 if mode_int == _snd.SFM_WRITE:
LibsndfileError: Error opening '/': Format not recognised.
During handling of the above exception, another exception occurred:
IsADirectoryError Traceback (most recent call last)
[<ipython-input-50-2a564e710ae5>](https://localhost:8080/#) in <cell line: 1>()
----> 1 predict_and_save(
2 audio_file,
3 '/content',
4 True,
5 True,
[/usr/local/lib/python3.10/dist-packages/basic_pitch/inference.py](https://localhost:8080/#) in predict_and_save(audio_path_list, output_directory, save_midi, sonify_midi, save_model_outputs, save_notes, model_or_model_path, onset_threshold, frame_threshold, minimum_note_length, minimum_frequency, maximum_frequency, multiple_pitch_bends, melodia_trick, debug_file, sonification_samplerate, midi_tempo)
585 raise e
586 except Exception as e:
--> 587 raise e
[/usr/local/lib/python3.10/dist-packages/basic_pitch/inference.py](https://localhost:8080/#) in predict_and_save(audio_path_list, output_directory, save_midi, sonify_midi, save_model_outputs, save_notes, model_or_model_path, onset_threshold, frame_threshold, minimum_note_length, minimum_frequency, maximum_frequency, multiple_pitch_bends, melodia_trick, debug_file, sonification_samplerate, midi_tempo)
532 print("")
533 try:
--> 534 model_output, midi_data, note_events = predict(
535 pathlib.Path(audio_path),
536 model_or_model_path,
[/usr/local/lib/python3.10/dist-packages/basic_pitch/inference.py](https://localhost:8080/#) in predict(audio_path, model_or_model_path, onset_threshold, frame_threshold, minimum_note_length, minimum_frequency, maximum_frequency, multiple_pitch_bends, melodia_trick, debug_file, midi_tempo)
449 print(f"Predicting MIDI for {audio_path}...")
450
--> 451 model_output = run_inference(audio_path, model_or_model_path, debug_file)
452 min_note_len = int(np.round(minimum_note_length / 1000 * (AUDIO_SAMPLE_RATE / FFT_HOP)))
453 midi_data, note_events = infer.model_output_to_notes(
[/usr/local/lib/python3.10/dist-packages/basic_pitch/inference.py](https://localhost:8080/#) in run_inference(audio_path, model_or_model_path, debug_file)
290
291 output: Dict[str, Any] = {"note": [], "onset": [], "contour": []}
--> 292 for audio_windowed, _, audio_original_length in get_audio_input(audio_path, overlap_len, hop_size):
293 for k, v in model.predict(audio_windowed).items():
294 output[k].append(v)
[/usr/local/lib/python3.10/dist-packages/basic_pitch/inference.py](https://localhost:8080/#) in get_audio_input(audio_path, overlap_len, hop_size)
227 assert overlap_len % 2 == 0, f"overlap_length must be even, got {overlap_len}"
228
--> 229 audio_original, _ = librosa.load(str(audio_path), sr=AUDIO_SAMPLE_RATE, mono=True)
230
231 original_length = audio_original.shape[0]
[/usr/local/lib/python3.10/dist-packages/librosa/core/audio.py](https://localhost:8080/#) in load(path, sr, mono, offset, duration, dtype, res_type)
182 "PySoundFile failed. Trying audioread instead.", stacklevel=2
183 )
--> 184 y, sr_native = __audioread_load(path, offset, duration, dtype)
185 else:
186 raise exc
<decorator-gen-157> in __audioread_load(path, offset, duration, dtype)
[/usr/local/lib/python3.10/dist-packages/librosa/util/decorators.py](https://localhost:8080/#) in __wrapper(func, *args, **kwargs)
57 stacklevel=3, # Would be 2, but the decorator adds a level
58 )
---> 59 return func(*args, **kwargs)
60
61 return decorator(__wrapper)
[/usr/local/lib/python3.10/dist-packages/librosa/core/audio.py](https://localhost:8080/#) in __audioread_load(path, offset, duration, dtype)
238 else:
239 # If the input was not an audioread object, try to open it
--> 240 reader = audioread.audio_open(path)
241
242 with reader as input_file:
[/usr/local/lib/python3.10/dist-packages/audioread/__init__.py](https://localhost:8080/#) in audio_open(path, backends)
125 for BackendClass in backends:
126 try:
--> 127 return BackendClass(path)
128 except DecodeError:
129 pass
[/usr/local/lib/python3.10/dist-packages/audioread/rawread.py](https://localhost:8080/#) in __init__(self, filename)
57 """
58 def __init__(self, filename):
---> 59 self._fh = open(filename, 'rb')
60
61 try:
IsADirectoryError: [Errno 21] Is a directory: '/' |
Ok, so correct syntax is to supply a list where it says to supply a list. ;-) But still positional requirement of model path remains: predict_and_save(
[audio_file],
'/content',
True,
True,
True,
True,
ICASSP_2022_MODEL_PATH
) README example should read as follows: predict_and_save(
<input-audio-path-list>,
<output-directory>,
<save-midi>,
<sonify-midi>,
<save-model-outputs>,
<save-notes>,
<model-path>
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the bug
Try to use
predict_and_save
as listed on the README and you getTo Reproduce
Steps to reproduce the behavior:
e.g.
Expected behavior
Either the README code should work as is, or README should be modified to include specification of required positional argument: 'model_or_model_path'
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Additional context
Add any other context about the problem here.
The text was updated successfully, but these errors were encountered: