Errors out with a “ValueError: array is too big”
Closed this issue · 1 comments
When running pymusiclooper Area01.wav
with this audio file, the program quickly errors out with a ValueError: array is too big
. (This happens not only with the file above, but with any file I try!) Here's the traceback:
> pymusiclooper -i Area01-mid-s0-b58-e0-c4-1.wav
Traceback (most recent call last):
File "c:\program files (x86)\python37-32\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\program files (x86)\python37-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\Myself\AppData\Roaming\Python\Python37\Scripts\pymusiclooper.exe\__main__.py", line 7, in <module>
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\pymusiclooper\__main__.py", line 241, in cli_main
loop_pair_list = loop_pairs(args.path, args.min_duration_multiplier)
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\pymusiclooper\__main__.py", line 23, in loop_pairs
track = MusicLooper(file_path, min_duration_multiplier)
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\pymusiclooper\core.py", line 27, in __init__
if trim
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\librosa\util\decorators.py", line 88, in inner_f
return f(*args, **kwargs)
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\librosa\effects.py", line 504, in trim
aggregate=aggregate,
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\librosa\effects.py", line 440, in _signal_to_frame_nonsilent
mse = feature.rms(y=y, frame_length=frame_length, hop_length=hop_length)
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\librosa\util\decorators.py", line 88, in inner_f
return f(*args, **kwargs)
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\librosa\feature\spectral.py", line 952, in rms
x = util.frame(y, frame_length=frame_length, hop_length=hop_length)
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\librosa\util\decorators.py", line 88, in inner_f
return f(*args, **kwargs)
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\librosa\util\utils.py", line 197, in frame
x, strides=out_strides, shape=out_shape, subok=subok, writeable=writeable
File "C:\Users\Myself\AppData\Roaming\Python\Python37\site-packages\numpy\lib\stride_tricks.py", line 104, in as_strided
array = np.asarray(DummyArray(interface, base=x))
ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.
Desktop (please complete the following information):
Here are my specs!
- Operating system: Windows 10 (Windows 10 Pro, version 22H2, build 19045.2251).
- Python version: 3.7.3
- RAM: 8 GiB.
- FFmpeg: Installed.
Here's hoping it's fixable!
Thanks for the detailed bug report @obskyr .
After investigating, this seems like a limitation with 32-bit versions of python when allocating large arrays (since the program loads the entire track into memory for analysis). Using a 64-bit installation of python 3.7+ yields the correct result, as tested on my machine, with a correctly identified loop point with the provided test track.
Optimizations are planned with the upcoming 3.0 version release for lower memory consumption and faster runtime, along with a GUI, however, there is no ETA for this release yet. For the moment, using a 64-bit python installation should fix this issue.