音频DF检测之RawGAT-ST代码部分(一)——数据集处理

首先是数据集处理部分,对['speaker_id', 'file_name', 'path', 'sys_id', 'key']通过torch.save保存为npy文件。
cm_protocol可以是ASV2019路径下ASVspoof2019_LA_cm_protocols文件夹的ASVspoof2019.LA.cm.train.trn.txt文件。

最核心的部分在class ASVDataset(Dataset)的def __init__

#cm_protocol可以是ASVspoof2019_LA_cm_protocols文件夹的ASVspoof2019.LA.cm.train.trn.txt文件
#返回ASVFile(speaker_id,file_name,path,sys_id,key)
files_meta = parse_protocols_file(cm_protocol)
#返回音频采样点data_x, 标签data_y, 第几个篡改方法sys_id
data = list(map(read_file, files_meta))
data_x, data_y, data_sysid = map(list, zip(*data))
#保存
torch.save((self.data_x, self.data_y, self.data_sysid, self.files_meta), self.cache_fname)

此外,加入了torch.vision.transform()以后,torch.save前加入一行:

if self.transform:
	self.data_x = Parallel(n_jobs=4, prefer='threads')(delayed(self.transform)(x) for x in self.data_x)

其中,transform使用:

transforms = transforms.Compose([
    lambda x: pad(x),
    lambda x: Tensor(x)
])

pad过程,填充至64600样本点。
max_len为64600,超过max_len就截段x[:max_len],低于max_len就num_repeats循环复制直到填充至64600样本点np.tile(x, (1, num_repeats))[:, :max_len][0]

def pad(x, max_len=64600):
    x_len = x.shape[0]
    if x_len >= max_len:
        return x[:max_len]
    # need to pad
    num_repeats = int(max_len / x_len)+1 #向上取整
    padded_x = np.tile(x, (1, num_repeats))[:, :max_len][0]
    return padded_x

解析parse_protocols_file:

def parse_protocols_file(self, protocols_fname):
	#读取protocols的每一行,输入到_parse_line中处理,返回files_meta
    lines = open(protocols_fname).readlines()
    files_meta = map(self._parse_line, lines)
    return list(files_meta)
#ASVFile为tuple结构
ASVFile = collections.namedtuple('ASVFile',
    ['speaker_id', 'file_name', 'path', 'sys_id', 'key'])
# 读取protocols,返回ASVFile的tuple=['speaker_id', 'file_name', 'path', 'sys_id', 'key']
def _parse_line(self, line):
   tokens = line.strip().split(' ')
   if self.is_eval:
       return ASVFile(speaker_id=tokens[0],
           file_name=tokens[1],
           path=os.path.join(self.files_dir, tokens[1] + '.flac'),
           sys_id=self.sysid_dict[tokens[3]],
           key=int(tokens[4] == 'bonafide'))
   return ASVFile(speaker_id=tokens[0],
       file_name=tokens[1],
       path=os.path.join(self.files_dir, tokens[1] + '.flac'),
       sys_id=self.sysid_dict[tokens[3]],
       key=int(tokens[4] == 'bonafide'))

sys_id也根据train/dev和eval的不同而不同,因为train和dev只有A01到A06,eval部分在训练集不可见,有A07到A19。部分代码如下:

if is_eval :
	#eval部分
    self.sysid_dict = {
    '-': 0,  # bonafide speech
    'A07': 1, 
    'A08': 2, 
    'A09': 3, 
    'A10': 4, 
    'A11': 5, 
    'A12': 6,
    'A13': 7, 
    'A14': 8, 
    'A15': 9, 
    'A16': 10, 
    'A17': 11, 
    'A18': 12,
    'A19': 13,
}
else:
	#train/dev部分
    self.sysid_dict = {
    '-': 0,  # bonafide speech
    'A01': 1, 
    'A02': 2, 
    'A03': 3, 
    'A04': 4, 
    'A05': 5, 
    'A06': 6,
}

解析后,通过read_file返回data_x,data_y,sys_id。

#meta中有['speaker_id', 'file_name', 'path', 'sys_id', 'key']
def read_file(self, meta):
    data_x, sample_rate = sf.read(meta.path)#读取flac路径,将音频采样点保存到data_x中
    data_y = meta.key# 是否是真实样本,0假,1真。
    return data_x, float(data_y), meta.sys_id
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,以下是这些数据集的简介和下载地址: 1. ChnSentiCorp数据集:这是一个汉语情感分析数据集,包含了超过20,000条中文评论和对应的情感标签(正向、负向、中性)。下载地址:http://www.nlpir.org/wordpress/chnsenticorp-download/ 2. EPRSTMT数据集:这是一个用于事件性质识别的数据集,包含了新闻文章、社交媒体帖子和其他类型的文本数据。该数据集涵盖了多种事件类型,如自然灾害、政治事件、健康事件等。下载地址:https://www.epw.in/engage/article/eprstmt-dataset 3. LCSTS数据集:这是一个中文短文本摘要数据集,包含了超过20,000篇新闻文章及其对应的摘要。该数据集被用于训练和评估中文自动摘要模型。下载地址:http://icrc.hitsz.edu.cn/Article/show/139.html 4. TTNews数据集:这是一个中文新闻分类数据集,包含了超过10万篇新闻文章及其对应的类别标签。该数据集被用于训练和评估中文新闻分类模型。下载地址:https://github.com/thunlp/TensorFlow-NRE/blob/master/data/TTNews.zip 5. CMRC2018数据集:这是一个中文机器阅读理解数据集,包含了超过10,000个问题和对应的答案。该数据集涵盖了多种主题,如历史、文化、科技等。下载地址:https://github.com/ymcui/cmrc2018 6. DRCD数据集:这是一个中文机器阅读理解数据集,包含了超过10,000个问题和对应的答案。该数据集涵盖了新闻、小说、百科等多种文本类型。下载地址:https://github.com/DRCKnowledgeTeam/DRCD 7. C3数据集:这是一个中文多项选择阅读理解数据集,包含了超过2,000个问题和对应的答案。该数据集涵盖了多种主题,如历史、文化、科技等。下载地址:https://www.cluebenchmarks.com/introduce.html 8. WebQA数据集:这是一个中文问答数据集,包含了超过10,000个问题和对应的答案。该数据集涵盖了多种主题,如历史、文化、科技等。下载地址:https://github.com/SUDA-LA/WebQA 9. CKBQA数据集:这是一个中文知识库问答数据集,包含了超过1,000个问题和对应的答案。该数据集涵盖了多种主题,如历史、文化、科技等。下载地址:https://github.com/CIS-DMZ/CKBQA-Dataset
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nooobme

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值