数据集Mixing Secrets下载

数据集信息

数据集简单介绍

原文描述

The dataset presented in this paper is sourced from the website: Mixing Secrets for The Small Studio.1 The website hosts around 300 multi-tracks free of charge for academic purposes, making it perfect for use in the MIR community. The tracks are professionally recorded. These multi-tracks are also listed on The Open MultiTrack Testbed [4]. The multi-tracks span several genres, and while a detailed quantitative analysis has not been carried out yet, it is definitely a promising source of data for tasks such as source separation and instrument recognition.

其他

  1. 所有Tracks 涵盖的乐器包括 ‘Bass,’ ‘Drums,’ ‘Vocals,’ ‘Electrical Guitar,’ ‘Acoustic Guitar,’ and ‘Piano.’ , 这些被采用于这篇paper用于separation,但不局限于这些乐器。
  2. several genres 涵盖 Acoustic / Jazz / Country / Orchestral Electronica / Dance /
    Experimental Pop / Singer-Songwriter Alt Rock / Blues / Country Rock
    / Indie / Funk / Reggae Rock / Punk / Metal Hip-Hop / R&B 等流派
  3. 官网有片段试听,以及数据库等一些其他信息

数据集下载

"""
Author: kokole

Download Mixing Secrets dataset for musical instrument recognition

Mixing Secrets
    - Homepage: https://www.cambridge-mt.com/ms/mtk/
    - Paper: https://musicinformatics.gatech.edu/wp-content_nondefault/uploads/2017/10/Gururani_Lerch_2017_Mixing-Secrets.pdf
"""

import requests
from bs4 import BeautifulSoup
import re
import os
from tqdm import tqdm
import zipfile
import tempfile

Hostreferer = {
    'User-Agent': "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
    'Referer': 'https://www.cambridge-mt.com/'
}

Picreferer = {
    'User-Agent': "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
    'Referer': 'https://www.cambridge-mt.com/'
}

# 获取html数据
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30, headers=Hostreferer)
        print(r)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

# 解析html返回各个multi-track的下载url列表
def parse(html):
    url_list = []
    soup = BeautifulSoup(html, 'html.parser')
    span_all = soup.find_all('span', {'class': 'm-mtk-download__links'})
    for span in span_all:
        if re.match('^https://mtkdata.cambridgemusictechnology.co.uk/(.*)_Full.zip$', span.a['href']):
            url_list.append(span.a['href'])

    return url_list


# 下载并解压文件至相关的目录
def save_file(url_list, path):

    for url in tqdm(url_list):
        save_path = os.path.join(path, url.split('/')[-1].split('.')[0])
        if os.path.exists(save_path):
            continue

        f = requests.get(url, allow_redirects=True)
        _tmp_file = tempfile.TemporaryFile()
        _tmp_file.write(f.content)

        zf = zipfile.ZipFile(_tmp_file, mode='r')
        for names in zf.namelist():
            f = zf.extract(names, save_path)

        zf.close()
    
if __name__ == '__main__':
    html = getHTMLText('https://www.cambridge-mt.com/ms/mtk/')
    url_list = parse(html)
    save_file(url_list, '/Users/xxx/research/dataset/Mixing_Secrets/Unzipped')
<think>好的,用户询问的是如何创建或使用混合音频数据集,尤其是在机器学习和深度学习的背景下。首先,我需要明确用户的需求。他们可能正在开展音频处理相关的项目,比如语音分离、音效合成或声纹识别,需要混合音频数据来训练模型。因此,我需要分步骤解释如何创建这样的数据集,以及处理和使用的方法。 第一步,用户需要理解混合音频数据集的应用场景。常见的如语音增强、多说话人分离、环境音合成等。这些应用需要不同类型的混合音频,比如干净的语音叠加噪声,或者多个说话人同时讲话的录音。这部分需要详细说明,帮助用户明确他们的具体需求。 接下来是数据收集。这里需要提到不同的数据来源,比如公开的语音库(如LibriSpeech、TIMIT)、噪声数据集(UrbanSound8K)、音乐数据集(GTZAN)以及环境音库(AudioSet)。同时,手动采集也是一种方式,比如录制特定环境下的声音。需要提醒用户注意数据质量和版权问题,确保合法使用。 然后是数据预处理。音频格式的统一很重要,常见的格式是WAV,因为它通常是无损的。采样率需要统一,比如16kHz,避免模型输入不一致。音量归一化可以通过分贝标准化处理,确保不同音频的音量一致。降噪处理可以使用工具如Audacity或LibROSA库中的算法。这部分需要给出具体的例子或代码片段,方便用户操作。 创建混合数据的方法包括线性叠加,比如干净的语音加上噪声,或者多个语音的混合。这里可能需要调整信噪比(SNR),比如设置不同的dB值来生成不同混合程度的样本。此外,时间对齐也很重要,确保叠加的音频在时间上对齐,避免相位问题。另外,数据增强技巧如变速、变调、添加混响等可以增加数据多样性,提升模型泛化能力。需要提供代码示例,展示如何用Python实现这些步骤,比如使用LibROSA进行加载、调整SNR、混合音频等。 数据处理与标注部分,用户需要将混合后的音频保存,并记录混合的参数,如源文件路径、混合比例、SNR值等。标注文件可以是CSV或JSON格式,方便后续训练时读取。同时,划分训练集、验证集和测试集是必要的,避免数据泄露。 在使用混合数据集进行模型训练时,需要根据任务选择合适的模型架构。比如语音分离可以用U-Net、Conv-TasNet,语音识别可用RNN或Transformer。特征提取方面,梅尔频谱、MFCC等是常用的特征。需要提到损失函数的设计,如SI-SNR、MSE等,以及数据加载的批处理技巧,如动态混合(on-the-fly mixing)来节省存储空间。 最后,推荐相关工具和资源,如LibROSA、PyTorch或TensorFlow的音频处理库,以及公开的数据集链接。同时,给出参考文献,帮助用户进一步查阅。 现在需要检查是否有遗漏的步骤,比如数据版权问题、数据平衡性(如不同类别的样本数量)、处理过程中的内存管理(大数据集可能需分批处理)。另外,用户可能需要评估混合数据的效果,比如通过听觉检查或使用预训练模型测试。这些补充点可以增强回答的全面性。 总结来说,回答需要结构清晰,分步骤讲解创建和使用混合音频数据集的过程,提供代码示例和实用工具,确保用户能够按图索骥,顺利完成项目。</think>### 如何创建或使用混合音频数据集(机器学习/深度学习) #### 1. **明确应用场景** 混合音频数据集通常用于以下任务: - **语音增强**:将干净语音与噪声混合,训练模型去除噪声[^1]。 - **多说话人分离**:混合多个说话人的语音,训练模型分离独立声源。 - **环境音合成**:叠加背景音乐、环境声与目标音频,生成复杂声场。 #### 2. **数据收集** - **单一声源数据**: - 语音库:LibriSpeech、TIMIT、Common Voice。 - 噪声库:UrbanSound8K、ESC-50。 - 音乐库:GTZAN、NSynth。 - 环境音:AudioSet、Freesound。 - **手动采集**:使用录音设备录制特定场景音频(如会议室对话、街道噪音)[^1]。 #### 3. **数据预处理** - **格式统一**:将音频转换为WAV格式(16位PCM,单声道)。 - **采样率对齐**:统一为16kHz(常用语音处理采样率)。 - **音量归一化**:使用分贝标准化(如-20 dB RMS)。 - **降噪处理**:通过工具(Audacity)或算法(谱减法)去除底噪。 #### 4. **创建混合数据** - **线性叠加法**: ```python import librosa import numpy as np # 加载语音和噪声 speech, sr = librosa.load("speech.wav", sr=16000) noise, _ = librosa.load("noise.wav", sr=16000) # 调整噪声长度(循环填充或截断) if len(noise) < len(speech): noise = np.tile(noise, len(speech)//len(noise) + 1) noise = noise[:len(speech)] # 设置信噪比(SNR)并混合 snr_db = 5 # 目标信噪比 speech_power = np.mean(speech ** 2) noise_power = np.mean(noise ** 2) scale_factor = np.sqrt(speech_power / (10 ** (snr_db / 10) * noise_power)) mixed = speech + scale_factor * noise ``` - **数据增强技巧**: - 变速/变调:`librosa.effects.time_stretch()` 和 `pitch_shift()` - 添加混响:使用`pyroomacoustics`模拟房间声学。 #### 5. **数据处理与标注** - **保存混合音频**:按任务命名(如`mix_speech_noise_5dB.wav`)。 - **标注文件**:记录混合参数(源文件路径、SNR、混合比例等): ```csv filename, speech_path, noise_path, snr_db, duration mix_001.wav, speech/001.wav, noise/traffic.wav, 5, 10.0 ``` - **数据集划分**:按比例分配训练集(70%)、验证集(20%)、测试集(10%)。 #### 6. **使用混合数据训练模型** - **模型选择**: - 语音分离:U-Net、Conv-TasNet[^2]。 - 语音识别:RNN-T、Transformer。 - **特征提取**: - 梅尔频谱:`librosa.feature.melspectrogram()` - MFCC:`librosa.feature.mfcc()` - **训练技巧**: - 动态混合(On-the-fly Mixing):实时生成混合样本,节省存储空间。 - 损失函数:SI-SNR(语音分离)、交叉熵(分类任务)。 #### 7. **工具与资源推荐** - **代码库**: - LibROSA(音频处理) - PyTorch Audio / TensorFlow Signal(深度学习集成) - **公开数据集**: - WHAM!(含噪声混合语音):https://wham.whisper.ai/ - MUSDB18(音乐分离):https://sigsep.github.io/datasets/musdb.html ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值