sigsep / sigsep-mus-db Goto Github PK
View Code? Open in Web Editor NEWPython parser and tools for MUSDB18 Music Separation Dataset
Home Page: https://sigsep.github.io/sigsep-mus-db/
License: MIT License
Python parser and tools for MUSDB18 Music Separation Dataset
Home Page: https://sigsep.github.io/sigsep-mus-db/
License: MIT License
https://github.com/sigsep/sigsep-mus-db/blob/master/docs/index.rst states "If you use this package, please reference the following paper" but does not follow that with a link or paper title. I'm assuming it should be linking to: https://arxiv.org/abs/1804.06267
If this is the case, I've opened #36 to resolve
Hi,
I have trained a Neural Network using musdb
. Now I want to do transfer learning on some more data that I have collected separately.
Is it possible to use musdb
API on my own dataset if I keep all my tracks in a similar fashion as musdb database?
Please help.
Thanks
got error musdb has no attribute run.
Preparing #76 it seems that we should also give a better progress indicator. Seems that everyone is using https://github.com/Textualize/rich these days.
After I installed the 0.1.8 Version of the Stempeg package, I used the Conda directive to install the 4.3.1 Ffmpeg package and the 0.5.0 version of the FFProbe package. However, When I used import Stempeg in Pycharm, I got the following error:
File "/home3/chenYD/code/Wave-U-Net-Pytorch-master/1.py", line 1, in
import stempeg
File "/home3/chenYD/anaconda3/lib/python3.7/site-packages/stempeg/init.py", line 34, in
raise RuntimeError('ffmpeg or ffprobe could not be found! '
RuntimeError: ffmpeg or ffprobe could not be found! Please install them before using stempeg. See: https://github.com/faroit/stempeg
It would be great to have a continued_run=True
flag for musdb.run
, which allows to continue a previously stopped separation run (e.g., due to out-of-memory on the GPU :) )
It should check whether the WAVs have already been created and - if they already exist - the song should be skipped.
After decoding, I ran into what feels like a bug (if not, sorry!):
mus = musdb.DB()
tracks = mus.load_mus_tracks()
print(tracks[0].stems.shape)
(5, 7552000, 2)
mus = musdb.DB(is_wav=True)
tracks = mus.load_mus_tracks('train')
print(tracks[0].stems.shape)
(7552000, 2)
Also, when is_wav=True
, load_mus_tracks
returns an empty list if subsets=''
.
I just search the source code of musdb, musdb does has the attribute. However, I got the error message like the title after I import musdb. Should I need to install musdb again?
MUSDB18 and MUSDB18HQ are now on open-access on zenodo. We could add the full download options here.
It seems that I'm getting an issue causing tests to fail where I can't download MUSDB's 7s sample dataset. Should I be hosting the MUSDB dataset somewhere else? Is this sort of use of the 7s samples not viable? Here's the failure:
Hello,
This issue is not directly related to sigsep-mus-db repo, but I was thinking maybe @faroit or @aliutkus may give additional information on this.
After getting MUSDB18 dataset from a colleague, and plotting stft for some samples of the tracks, I get for example this:
Or after converting to wav with musdbconvert:
On these examples, the bandwidth seem to be 17 kHz and not 16 kHz as indicated on https://sigsep.github.io/datasets/musdb.html . Is it that the MUSDB18 dataset I got not the original one, or is there an other explanation?
I was also wondering why would we keep MUSDB18 sampled at 44.1 kHz and not simply at 32 kHz (if the bandwidth is 16 kHz).
Thank you!
Félix
Just in case someone's having problem with ffmpeg with these kinds of error messages:
>>> tracks[0].targets['vocals'].audio
dyld: Library not loaded: @rpath/libx264.138.dylib
Referenced from: /Users/keunwooc/miniconda3/bin/ffprobe
Reason: image not found
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/keunwooc/miniconda3/lib/python3.6/site-packages/musdb/audio_classes.py", line 113, in audio
audio = source.audio
File "/Users/keunwooc/miniconda3/lib/python3.6/site-packages/musdb/audio_classes.py", line 47, in audio
filename=self.path, stem_id=self.stem_id
File "/Users/keunwooc/miniconda3/lib/python3.6/site-packages/stempeg/read.py", line 91, in read_stems
FFinfo = FFMPEGInfo(filename)
File "/Users/keunwooc/miniconda3/lib/python3.6/site-packages/stempeg/read.py", line 19, in __init__
self.json_info = read_info(self.filename)
File "/Users/keunwooc/miniconda3/lib/python3.6/site-packages/stempeg/read.py", line 55, in read_info
out = sp.check_output(cmd)
File "/Users/keunwooc/miniconda3/lib/python3.6/subprocess.py", line 336, in check_output
**kwargs).stdout
File "/Users/keunwooc/miniconda3/lib/python3.6/subprocess.py", line 418, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['ffprobe', '../../Data/musdb18/train/A Classic Education - NightOwl.stem.mp4', '-v', 'error', '-print_format', 'json', '-show_format', '-show_streams']' died with <Signals.SIGABRT: 6>.
flatironinstitute/CaImAn#317 (comment) help me by, I think, installing libx264.138.dylib
with command below.
$ conda install -c conda-forge x264=20131218
It's not really an issue but probably best to be written here.
I've been using the is_wav option to decode the database into wave files myself for faster training later. I noticed that when adding the instrument tracks for a song, they do not exactly add up to the corresponding mixture signal - a small, noisy, constant residual sound remains as the difference signal. I remember that in DSD100 the mixture was exactly the sum of its sources in the given wave files.
Is this intended or an actual bug? Is this maybe the result of compressing and decompressing the tracks individually in a lossy fashion? If it is intended, it would be good to make that clear on the websites describing the dataset, so researchers are not confused when they deploy an algorithm that uses this assumption of additivity but then does not work as well as one hoped.
It would be nice to be able to set different sample rates
I have installed musdb using pip, but when i run this code:
def main():
import musdb
mus = musdb.DB(download=True)
for track in mus:
print(track.name)
if __name__ == "__main__":
main()
I get AttributeError: module 'musdb' has no attribute 'DB' I`ve tried reinstalling musdb using pip but it didn't help.
Hi,
Is musdb18 dataset a labelled dataset?
Is it possible to use the dataset for supervised source separation?
due to a change of variable names in stempeg
sigsep-mus-db/musdb/audio_classes.py
Line 56 in 869b51f
sample_rate
sigsep-mus-db/musdb/audio_classes.py
Line 61 in 869b51f
I wanted to generate source estimates and evaluate their quality using museval. In my main function, I do the following:
mus = musdb.DB(root_dir="/mnt/daten/Datasets/MUSDB18")
if mus.test(predict):
print "Function is valid"
mus.run(predict, estimates_dir="/mnt/windaten/Source_Estimates")
In my function predict(track) I generate my estimates and then call the museval evaluation:
estimates = {
'vocals' : voice_pred_audio,
'accompaniment' : acc_pred_audio
}
# Evaluate using museval
scores = museval.eval_mus_track(
track, estimates, output_dir="/mnt/daten/Datasets/MUSDB18/eval"
)
....
return estimates
While this works without the museval call for just generating the source estimate files, it breaks with it in the mus.test function since the eval_mus_track call expects a track with some more source attributes or elements, which it doesn't have, so it gives me
AttributeError: 'NoneType' object has no attribute 'items'
It works if I remove the mus.test(predict) call, so it's not a major problem, but I feel like there should be some handling of the test track as a special case within eval_mus_track to prevent this from crashing?
In the readme, we state that:
musdb.DB(subsets='train', split='valid')
return the 14 validation tracks
However, when users do not specify subsets:
musdb.DB(split='valid')
the default is used (['train', 'test']
) and 64 tracks are returned: 50+14.
While the output is technically correct, I think for this case we should:
This issue might be critical since some users might already have been using musdb that way, so that validation tracks include test tracks.
@aliutkus @TE-StefanUhlich do you have some opinion how to address this?
I just downloaded MUSDB18 and unzipped the mp4 files, and set the environment variable MUSDB_PATH to that directory. When using the Python API, mus.load_mus_tracks('Dev')
results in an empty list, but mus.load_mus_tracks('train')
works fine. Same problem applies to mus.run
.
Similarly, 'Test'
has to be lowercase, it seems.
python test.py
Traceback (most recent call last):
File "/home3/will/BandSplitRNN-Pytorch-main/src/tt/test.py", line 158, in
mus = musdb.DB(root='/home3/will/musdb18',subsets='train')
File "/home3/will/anaconda3/envs/MUSDB2/lib/python3.9/site-packages/musdb/init.py", line 118, in init
self.tracks = self.load_mus_tracks(subsets=subsets, split=split)
File "/home3/will/anaconda3/envs/MUSDB2/lib/python3.9/site-packages/musdb/init.py", line 265, in load_mus_tracks
track = MultiTrack(
File "/home3/will/anaconda3/envs/MUSDB2/lib/python3.9/site-packages/musdb/audio_classes.py", line 133, in init
super(MultiTrack, self).init(path=path, *args, **kwargs)
File "/home3/will/anaconda3/envs/MUSDB2/lib/python3.9/site-packages/musdb/audio_classes.py", line 52, in init
self.info = stempeg.Info(self.path)
File "/home3/will/anaconda3/envs/MUSDB2/lib/python3.9/site-packages/stempeg/read.py", line 328, in init
self.info = ffmpeg.probe(filename)
File "/home3/will/anaconda3/envs/MUSDB2/lib/python3.9/site-packages/ffmpeg/_probe.py", line 23, in probe
raise Error('ffprobe', out, err)
ffmpeg._run.Error: ffprobe error (see stderr output for detail)
Hi, I have already installed ffmpeg and musdb, but it seems to have error while setting up musdb.
Hi, I'd like to use MUSDB18 for a class project, but I haven't heard back from Zenodo since I requested access about a week ago. Could you please advise? Thank you!
Hi!
I would like to modify the audio files in MUSDB and then save them again in the .mp4 format.
How can I do this? I noticed that this feature is not currently implemented (see save_estimates function in musdb).
So far, I tried with stempeg.write_stems function (https://github.com/faroit/stempeg) but I don't understand how to include the metadata.
Thank you very much
This would make it easier to load specific tracks for demos:
Something like this:
mus.load_mus_tracks(track_list=['A Classic Education - NightOwl'])
Run following code:
import musdb
mus_train = musdb.DB(musdb_path, subsets='train')
L = len(mus_train)
The value of L used to be 100 but 600 now.
But i do not find new dataset in MUSDB.
I also tried install past version 0.3.0, but L is 600 too. So I can not use musdb module now. Please fix it ASAP, thanks :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.