Wespeaker框架数据集准备(1)

1. 数据集准备(Data preparation)

进入wespeaker目录文件/home/username/wespeaker/examples/voxceleb/v2

对run.sh文件进行编辑

vim run.sh

可以看到run.sh里面的配置内容

#数据集下载,解压
stage=1
#插入噪音,制作音频文件
stop_stage=2
#数据集放置的源目录,这里要求数据集放在run.sh所在目录下data/download_data文件夹中
data=data
#shard格式
data_type="shard"  # shard/raw

在运行run.sh 时的起始stage 和结束stage,默认两个都设置为-1

  • stage 1&2 是数据集的处理、目录制作,
  • stage 3 模型训练,
  • stage 4 用训练的模型提取embedding,
  • stage 5 计算余弦相似度、EER、minDCF,
  • stage 6 将上一步计算结果归一化,
  • stage 7 导出模型,
  • stage 8 对模型做fine-tune。

shard格式:raw 格式的音频未经过分片、拆分,就是原本下载解压后的文件,训练时只能逐个读取音频,适用于数据集较小时;shard 将会把音频打包成若干个分片,每个分片包含了多个音频,在模型训练读数据时每次能读入一批数据,减少了磁盘IO 次数,但是将音频打包成分卷,占
据更大的存储空间,当数据集较大时利用shard 格式能显著提高训练速度。

1.1 run.sh stage 1处理

if [ ${stage} -le 1 ] && [ ${stop_stage} -ge 1 ]; thenecho "Prepare datasets ..."
#这里传入参数stage=2,stop_stage=4,与run.sh中的stage无关./local/prepare_data.sh --stage 2 --stop_stage 4 --data ${data}
fi

这里如果stage = 1,则会执行./local/prepare_data.sh 并传入参数 stage =2 , stop_stage =4,这里的stage与run.sh中的stage 无关。

在prepare_data.sh文件中

  • stage 1: 下载数据包,合并分包并做md5校验
  • stage 2: 解压数据包,放在指定目录下
  • stage 3: Convert voxceleb2 wav format from m4a to wav using ffmpeg.
  • stage 4: Prepare wav.scp for each dataset

./local/prepare_data.sh文件


data=`realpath ${data}`
download_dir=${data}/download_data
rawdata_dir=${data}/raw_data# stage 1主要是下载文件,包括musan.tar.gz, rirs_noises.zip, vox1_test_wav.zip vox1_dev_wav.zip, and vox2_aac.zip
if [ ${stage} -le 1 ] && [ ${stop_stage} -ge 1 ]; thenecho "Download musan.tar.gz, rirs_noises.zip, vox1_test_wav.zip, vox1_dev_wav.zip, and vox2_aac.zip."echo "This may take a long time. Thus we recommand you to download all archives above in your own way first."./local/download_data.sh --download_dir ${download_dir}
fi

可以看到在prepare_data.sh文件中,输入的stage =1,则执行download_data.sh文件。

./local/download_data.sh中下载vox2_dev_acc分卷为例

if [ ! -f ${download_dir}/vox2_aac.zip ]; thenecho "Downloading vox2_aac.zip ..."for part in a b c d e f g h; do
#下载分卷wget --no-check-certificate https://thor.robots.ox.ac.uk/~vgg/data/voxceleb/vox1a/vox2_dev_aac_parta${part} -P ${download_dir} &donewait
#合并分卷cat ${download_dir}/vox2_dev_aac* >${download_dir}/vox2_aac.zip
#md5校验md5=$(md5sum ${download_dir}/vox2_aac.zip | awk '{print $1}')[ $md5 != "bbc063c46078a602ca71605645c2a402" ] && echo "Wrong md5sum of vox2_aac.zip" && exit 1
fi

注意:这里如果已经自己下载分卷,则在命令行单独对分卷进行合并,以及md5校验,无需下载数据包。

修改过无需下载的./local/download_data.sh版本如下:

download_dir=data/download_data#. tools/parse_options.sh || exit 1[ ! -d ${download_dir} ] && mkdir -p ${download_dir}#if [ ! -f ${download_dir}/musan.tar.gz ]; thenecho "Downloading musan.tar.gz ..."
#  wget --no-check-certificate https://openslr.elda.org/resources/17/musan.tar.gz -P ${download_dir}md5=$(md5sum ${download_dir}/musan.tar.gz | awk '{print $1}')[ $md5 != "0c472d4fc0c5141eca47ad1ffeb2a7df" ] && echo "Wrong md5sum of musan.tar.gz" && exit 1
#fi#if [ ! -f ${download_dir}/rirs_noises.zip ]; thenecho "Downloading rirs_noises.zip ..."
#  wget --no-check-certificate https://us.openslr.org/resources/28/rirs_noises.zip -P ${download_dir}md5=$(md5sum ${download_dir}/rirs_noises.zip | awk '{print $1}')[ $md5 != "e6f48e257286e05de56413b4779d8ffb" ] && echo "Wrong md5sum of rirs_noises.zip" && exit 1
#fi#if [ ! -f ${download_dir}/vox1_test_wav.zip ]; thenecho "Downloading vox1_test_wav.zip ..."
#  wget --no-check-certificate https://thor.robots.ox.ac.uk/~vgg/data/voxceleb/vox1a/vox1_test_wav.zip -P ${download_dir}md5=$(md5sum ${download_dir}/vox1_test_wav.zip | awk '{print $1}')[ $md5 != "185fdc63c3c739954633d50379a3d102" ] && echo "Wrong md5sum of vox1_test_wav.zip" && exit 1
#fi#if [ ! -f ${download_dir}/vox1_dev_wav.zip ]; thenecho "Downloading vox1_dev_wav.zip ..."
#  for part in a b c d; do
#    wget --no-check-certificate https://thor.robots.ox.ac.uk/~vgg/data/voxceleb/vox1a/vox1_dev_wav_parta${part} -P ${download_dir} &
#  done
#  waitcat ${download_dir}/vox1_dev* >${download_dir}/vox1_dev_wav.zipmd5=$(md5sum ${download_dir}/vox1_dev_wav.zip | awk '{print $1}')[ $md5 != "ae63e55b951748cc486645f532ba230b" ] && echo "Wrong md5sum of vox1_dev_wav.zip" && exit 1
#fi#if [ ! -f ${download_dir}/vox2_aac.zip ]; thenecho "Downloading vox2_aac.zip ..."
#  for part in a b c d e f g h; do
#    wget --no-check-certificate https://thor.robots.ox.ac.uk/~vgg/data/voxceleb/vox1a/vox2_dev_aac_parta${part} -P ${download_dir} &
#  done
#  waitcat ${download_dir}/vox2_dev_aac* >${download_dir}/vox2_aac.zipmd5=$(md5sum ${download_dir}/vox2_aac.zip | awk '{print $1}')[ $md5 != "bbc063c46078a602ca71605645c2a402" ] && echo "Wrong md5sum of vox2_aac.zip" && exit 1
#fiecho "Download success !!!"

注:在手动Cat分卷合并过程中,需要注意空格,如cat vox2_dev_aac* > vox2_aac.zip,“>”号前后需要有空格保留。

1.2 run.sh运行

在运行前需要安装ffmpeg和lmdb安装包。

ffmpeg安装

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztar zxvf yasm-1.3.0.tar.gzcd yasm-1.3.0./configuremake && make installwget http://www.ffmpeg.org/releases/ffmpeg-3.4.4.tar.gztar -zxvf ffmpeg-3.4.4.tar.gzcd ./ffmpeg-3.4.4./configure --enable-ffplay --enable-ffservermake && make install

安装完成,使用以下命令查看

ffmpeg --version

设置run.sh 起始stage 和结束stage分别为1和2;

# run.shstage=1
stop_stage=2
bash run.sh

程序自动运行以下步骤:

(1) prepare_data.sh—stage 2 解压数据集

对上述的VoxCeleb1 和2、RIRS_NOISES 和MUSAN 噪声集分别做解压,prepare_data.sh
的stage 2 在download_data/所在目录data/下新建一个rawdata_dir/文件夹,然后解压到该目
录。

(2) prepare_data.sh—stage 3 Convert voxceleb2 wav format from m4a to wav using ffmpeg

(3) prepare_data.sh—stage 4 制作音频数据集索引

为每个数据集准备wav.scp,其在data/目录下新建musan、rirs、voxceleb_train、eval 四个
文件夹,然后在各个文件夹内生成wav.scp。其中voxCeleb 数据集还有两个额外目录utt2spk、
spk2utt,分别是音频对应说话人的目录索引,以及说话人对应音频的索引。
在eval/中生成enroll.map,并在trails 文件夹生成两种测试方法的测试集。

(4) make_shard_list.py—转换为shard 分卷格式

调用tools/make_shard_list.py 生成shard 分片,同时生成shard 对应的list
– num_utts_per_shard 每个shard 分卷有多少条音频
– num_threads 运行线程数
– prefix shards 分片文件前缀为”shards”
– shuffle 生成分片前对进行数据洗切,打乱顺序

转换完成后可以查看训练集的shard 目录,其内容如下:

其中每个tar 都是一个类似压缩包的包含了多个音频的文件,vim 之后可以看到它是一个包
含原始文件的音频目录:

(5)make_raw_list.py—转换为raw 格式

make_raw 不对原本的wav.scp 做变化,其raw 类型数据依然是逐条读取,不存在分卷,在
训练时只需调用它的输出索引raw.list

(6)将噪声数据转换为LMDB 格式

LMDB(Lightning Memory-Mapped Database)是一种高性能、低延迟、内存映射键值数据库。
它被广泛应用于存储大规模数据集,特别适用于需要高效读取和写入的场景。
调用tools/make_lmdb.py,输入两个噪声集的wav.scp 目录,输出LMDB 格式的数据库文
件。通过将噪声数据集封装成LMDB 格式提高存取速度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/141351.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【密码学补充知识】

🔑密码学🔒概述 📕 1.基本概念 明文 : 要交换的信息 密文 : 明文经过一组规则变换成看似没有意义的随机消息。 加密 : 明文经过一组规则变换成密文的过程 解密 : 密文恢复出明文的过程 加…

2023-Chrome插件推荐

Chrome插件推荐 一键管理扩展 链接 https://chromewebstore.google.com/detail/lboblnfejcmcaplhnbkkfcienhlhpnni 介绍 一键开启、禁用Chrome插件。 Checker Plus for Gmail™ 链接 https://jasonsavard.com/zh-CN/Checker-Plus-for-Gmail https://chromewebstore.goo…

基于springboot+vue的重庆旅游网(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

小程序中如何导出会员卡的档案信息

对于医院、美容院等特殊商家,可能需要在给会员添加一些档案。例如今天客户是什么情况,做了什么服务,解决了什么问题。添加这些档案后,系统会保存这些信息,供下次来的时候使用,或者为商家日后做营销提供依据…

Leetcode 95. 不同的二叉搜索树 II

文章目录 题目代码&#xff08;9.21 首刷看解析&#xff09; 题目 Leetcode 95. 不同的二叉搜索树 II 代码&#xff08;9.21 首刷看解析&#xff09; class Solution { public:vector<TreeNode*> generateTrees(int n) {return build(1,n);}vector<TreeNode*> bu…

蓝桥杯每日一题2023.9.25

4406. 积木画 - AcWing题库 题目描述 分析 在完成此问题前可以先引入一个新的问题 291. 蒙德里安的梦想 - AcWing题库 我们发现16的二进制是 10000 15的二进制是1111 故刚好我们可以从0枚举到1 << n(相当于二的n次方的二进制表示&#xff09; 注&#xff1a;奇数个0…

vuejs - - - - - 递归组件的实现

递归组件的实现 1. 需求描述&#xff1a;2. 效果图&#xff1a;3. 代码3.1 封装组件代码3.2 父组件使用 1. 需求描述&#xff1a; 点击添加行&#xff0c;增加一级目录结构当类型为object or array时&#xff0c;点击右侧➕&#xff0c;增加子集点击右侧&#x1f6ae;&#x…

Linux查看哪些进程占用的系统 buffer/cache 较高 (hcache,lsof)命令

1、什么是buffer/cache &#xff1f; buffer/cache 其实是作为服务器系统的文件数据缓存使用的&#xff0c;尤其是针对进程对文件存在 read/write 操作的时候&#xff0c;所以当你的服务进程在对文件进行读写的时候&#xff0c;Linux内核为了提高服务的读写速度&#xff0c;则将…

Jenkins Job的Migrate之旅

场景 使用Jenkins 做为应用的定时任务处理&#xff0c; 在上面建立的800个左右的Job, 这个环境运行了很多年&#xff0c; 当初安装的最新版本是Jenkins 1.642.3&#xff0c; 现在因为OS需要升级等原因&#xff0c; 驻在上面的Jenkins 服务器也需要一并升级&#xff0c;在新的服…

SpringBoot集成Prometheus实现监控

SpringBoot配置Prometheus pom.xml 引入监控以及prometheus依赖 <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency><dependency><groupId>org.springfram…

中国城市政商关系健康总指数、方面指数及一级指标得分2018

中国城市政商关系健康总指数、方面指数及一级指标得分2018 1、指标&#xff1a;省份代码、省份、城市代码、城市名称、政商关系健康指数、亲近指数、清白指数、政府关心、政府服务、企业税负、政府廉洁度、政府透明度 2、范围&#xff1a;290个地级市 3、数据说明&#xff1…

Django应用及分布式路由

Django应用及分布式路由 应用 应用在Django项目中一个完全独立的业务模块&#xff0c;可以包含自己的路由&#xff0c;视图&#xff0c;模板&#xff0c;模型 应用配置 在这里面添加你自定义的应用 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.cont…

MT1184矩形相交 题解【超详细】

目录 题目 样例 题目解析 代码 图解 矩形相交 题目 输入2个矩形的左上角和右下角两个点的坐标值(x&#xff0c;y)&#xff0c;判断2个矩形是否相交&#xff0c;输出YES或者NO。矩形的边应与x&#xff0c;y轴相平行。假定输入坐标能顺利构成矩形&#xff0c;不考虑无效矩形…

命令执行(rce)

1.命令与代码执行原理 命令执行原理 参数给变量未经过滤&#xff0c;直接使用了不安全的函数处理了变量 127.0.0.1&&ipconfig 有漏洞 常用的函数 assert,system,exec,shell_exec, eval,(反单引号&#xff09; 代码执行原理 参数给变量未经过滤&#xff…

基于微信小程序的健身房私教预约平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

阿里云服务器使用教程(从购买到配置再到搭建自己的网站)

阿里云服务器使用教程包括云服务器购买、云服务器配置选择、云服务器开通端口号、搭建网站所需Web环境、安装网站程序、域名解析到云服务器公网IP地址&#xff0c;最后网站上线全流程&#xff0c;阿小云分享阿里云服务器详细使用教程&#xff1a; 目录 阿里云服务器使用教程 …

PostgreSQL如何支持PL/Python过程语言

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;10.4 文档用途 本文档主要介绍PostgreSQL如何支持PL/Python过程语言&#xff0c;如何创建plpython扩展。 详细信息 一、PostgreSQL支持python语言…

215 数组中的第K个最大元素

满足时间复杂度o(n)的方法&#xff1a; 快排的思想 class Solution{ public:int findKthLargest(vector<int>& nums,int k){return quickSelect(nums,k);} private:int quickSelect(vector<int>& nums,int k){//随机选择基数int privotnums[rand()%nums…

Quartz 体系结构

Quartz的体系结构 Quartz的重要组件 Scheduler 用于与调度程序交互的主程序接口。 Scheduler调度程序-任务执行计划表&#xff0c;只有安排进执行计划的任务Job&#xff08;通过scheduler.scheduleJob方法安排进执行计划&#xff09;&#xff0c;当它预先定义的执行时间到了的时…

华为云云耀云服务器L实例评测|如何保障华为云云耀云服务器L实例的安全和性能

引言 云耀云服务器L实例是华为云提供的高性能计算实例&#xff0c;为用户提供稳定可靠的云计算环境。为了保障实例的安全和性能&#xff0c;用户可以通过设置防火墙和安全组策略来限制网络访问和防止恶意攻击。华为云提供了灵活的管理工具&#xff0c;用户可以通过控制台、API…