Adding loader for MIR-1K - #649
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #649 +/- ##
==========================================
+ Coverage 97.09% 97.12% +0.03%
==========================================
Files 69 70 +1
Lines 7720 7801 +81
==========================================
+ Hits 7496 7577 +81
Misses 224 224 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Hey @dsuedholt, thanks for the contribution and sorry for the late review. I am leaving a few questions before accepting the PR, to hear your opinons and potentially opinions from peer maintainers.
Also, should be ignore the non-split portion of the dataset? Is it normally used or not used in related research works? I guess loading them would mean have a bunch of more tracks included in the dataset, but those would mostly be already present in the dataset in the split format right?
Thanks again for your work, I did also take a look at the upload request for the index in Zenodo and looks fine, so I am going to be accepting it :)
| assert isinstance(all_data, dict) | ||
|
|
||
| mtrack_ids = dataset.mm | ||
| mtrack_ids = dataset.mtrack_ids |
| """ | ||
|
|
||
| return annotations.LyricData( | ||
| intervals=np.array([[0.0, 0.0]]), |
There was a problem hiding this comment.
I was wondering if it was worth getting the duration of the track and having an interval like [0.0, 10.0], 10.0 being an example total duration of the track. Maybe the faster way would be to parse it from the annotations. However, I wonder if there's chance that someone needs lyrics+duration and no audio/annotations from where to get the duration also.
There was a problem hiding this comment.
Good point - potentially this could also be a way to include the lyric data annotation with the unsplit files. i.e. assume a track is split into clips of 10 second lengths, then for the unsplit track, include the lyrics annotations for each clip with the intervals [0, 10], [10, 20] etc?
| ) | ||
|
|
||
|
|
||
| # not using @io.coerce_to_string_io here because it has hardcoded utf-8 encoding |
There was a problem hiding this comment.
Interesting, noting this issue. We could have a tailored decorator later.
|
|
||
| Cached Properties: | ||
| f0 (F0Data): the track's f0 annotation | ||
| lyrics (LyricData): the track's lyrics |
There was a problem hiding this comment.
maybe if we end up leaving the lyrics with no interval/duration information, we could also let the user know here?
|
Hi @genisplaja, thanks for the review! Most research that I'm personally aware of (using the dataset for either pitch detection or source separation) does not use the unsplit tracks, because the annotations are given on a clip level. The only additional information that is only available on the unsplit track level are the spoken lyric recordings. But I agree that simply ignoring the unsplit tracks isn't a satisfactory solution, but I wasn't really sure what the best way to include them would be. What do you think of the following approach?
|
|
Hey @dsuedholt, thanks for this PR, it looks great! I have just one comment/suggestion. I noticed that you are using the |
Description
Please include the following information at the top level docstring for the dataset's module mydataset.py:
Dataset loaders checklist:
scripts/, e.g.make_my_dataset_index.py, which generates an index file.mirdata/my_dataset.pytests/datasets/, e.g.test_my_dataset.pydocs/source/mirdata.rstanddocs/source/table.rstblack,flake8andmypy(see Running your tests locally).tests/test_full_dataset.pyon your dataset.Other recordings
The MIR-1K dataset is based on 110 song recordings split into 1000 clips.
The dataset download also includes a folder
UndividedWavfilewhich contains the "un-split" recordings. Additionally, while all other annotation files are on the clip level, the download also includes aLyricsWavfolder containing recordings of the song lyrics being read aloud (as speech, not singing), but these correspond to the 110 "un-split" songs, not the 1000 clips. So I wasn't quite sure how to handle these within the mirdata structures, for now I simply ignored them.