sigsep musdb18数据集的python解析器
musdb的Python项目详细描述
musdb
一个python包,用于解析和处理musdb18数据集,这是用于音乐源分离的最大开放访问数据集。该工具最初是为音乐分离任务开发的,作为信号分离评估活动(SISEC)的一部分。
获取数据
数据集托管在Zenodo上,要求用户请求访问,因为这些曲目只能用于学术目的。我们手动检查这些请求。请不要重复填写此表格,通常需要不到一天的时间才能进入。 您可以使用pip安装musdb
musdb18编码在stems中,这是一种使用有损压缩的多声道音频格式。在内部, 或者,您可以手动安装ffmpeg,如下所示: 如果要使用WAV文件(例如,用于更快的音频解码), 如果您不想使用python,我们还提供基于docker的脚本将数据集解码为wav文件。 使用解码的musdb时,初始化数据集时请使用 这个包应该与现有的python numpy、tensorflow或pytorch代码很好地集成。在项目中使用musdb的大多数步骤可能都使用相同的第一步: 在主python函数中导入 要使用完整的数据集,请设置一个数据集 其中 迭代 我们为机器学习方法提供训练和测试的子集: 如果要访问单个曲目,可以通过其索引访问 可以使用对象编辑验证轨迹列表。 编写有效的数据集生成器在不同的深度学习框架中各不相同。一个非常简单的n_ive生成器
可以使用musdb的 要使用流行的bsseval指标评估a 对于Oracle方法,请查看我们的打开Unmix Oracle分离方法。
这将向您展示如何计算Oracle性能,并给出分隔质量的上限。 我们为Pythorch、TensorFlow和NNABLE提供了一种最先进的基于深度学习的分离方法,网址为open.unmix.app 这不是虫子。因为我们采用了stems格式,所以我们使用了aac压缩。在这里,混合物的残余噪声不同于源的残余噪声之和。这种差异不会显著影响分离性能。musdb
附带7秒的完整数据集摘录(自动下载),用于快速评估或原型制作。但是,完整的数据集需要通过zenodo下载并单独存储(解压缩)。< Buff行情>安装和设置
软件包安装
pip install musdb
使用茎(默认)
musdb
包依赖于ffmpeg来解码多流文件。为了方便起见,我们开发了一个名为stempeg的python包,它可以方便地解析和解码stem文件。
当您安装musdb(这取决于stempeg)时,因此也需要安装ffmpeg库。安装可能因操作系统和python发行版而异:brew安装ffmpeg
sudo apt get install ffmpeg
使用wav文件(可选)
musdb
还支持分析和处理预解码的pcm/wav文件。musdb
具有将stems数据集转换为wav版本的功能。这个脚本可通过命令行使用musdbconvert path/to/musdb-stems-root path/to/new/musdb-wav-root
is wav
参数。用法
设置musdb
musdb
包,并在7秒内迭代musdb
曲目:importmusdbmus=musdb.DB(download=True)mus[0].audio
root
directorymus=musdb.DB(root="/path/to/musdb)
root
是musdb18数据集根文件夹的路径。根参数也可以使用系统环境变量重写。只需在bash环境中export musdb_path=/path/to/musdb
。在这种情况下,不需要将参数传递到db()
在musdb18轨迹上迭代
musdb
从而访问音频数据非常简单。假设,我们有一个监督训练方法,它以混合音为输入,以人声为输出,我们可以简单地使用:fortrackinmus:train(track.audio,track.targets['vocals'].audio)
曲目属性
跟踪
对象,使以pythonic方式轻松处理音频和元数据:track.name
,曲目名称,由track.artist
和track.title
组成
track.path
,混合物的绝对路径,可以方便地处理外部应用程序。track.audio
,立体声混合为一个numpy形状数组(nb_samples,2)track.rate
,混合物的采样率。track.sources
,用于此曲目的源字典。track.stems
,所有五个形状立体源的核张量。词干总是按以下顺序排列:['mixed','drums','bass','other','vocals']
,track.targets
,为此曲目提供的目标字典。
注意,对于musdb,源和目标只在存在伴奏
时不同,这是所有源的总和,除了声音。musdb支持以下目标:['混音','鼓','低音','其他','人声','伴奏','线性混音']
。注意,有些目标(如伴奏)在飞行中是动态混合的。分别处理训练和测试子集
mus_train=musdb.DB(subsets="train")mus_test=musdb.DB(subsets="test")
使用列车/验证拆分
mus
曲目列表,例如mus[2:
。为了促进可重复的研究,我们提供了一个固定的验证数据集。mus_train=musdb.DB(subsets="train",split='train')mus_valid=musdb.DB(subsets="train",split='valid')
用musdb训练深层神经网络
track.chunk_start
和track.chunk_duration
属性轻松实现,这些属性有效地寻找开始示例(以秒为单位提供)并执行请不要先将完整的音频加载到内存中。whileTrue:track=random.choice(mus.tracks)track.chunk_duration=5.0track.chunk_start=random.uniform(0,track.duration-self.seq_duration)x=track.audio.Ty=track.targets['vocals'].audio.Tyieldx,y
评估
musdb
曲目,您可以使用我们的mus eval包。在pip install musdb
对单个track
的求值之后,可以通过importmuseval# provide an estimateestimates={'vocals':np.random.random(track.audio.shape),'accompaniment':np.random.random(track.audio.shape)}# evaluates using BSSEval v4, and writes results to `./eval`print(museval.eval_mus_track(track,estimates,output_dir="./eval")
基线
神谕
打开UNMIX
常见问题
混合物并不完全是其来源的总和,这是有意的吗?
pip install musdb
0
引文