wenet-基于预训练模型进行增量训练

news2024/11/24 17:02:54
1867-154075-0014

重中之重

run.sh脚本分析

wenet aishell脚本解析_weixin_43870390的博客-CSDN博客

一、准备工作

第一步:准备训练数据,拷贝到远程服务器

将准备好的数据文件0529_0531_dataset,上传到恒源云上的/hy-tmp/wenet/examples/aishell/s0下

0529_0531_merge_label .txt标签文件的内容中,每行为音频ID 空格 音频标签,无表头

本地文件:

 

 

远程文件:

第二步,准备多个text和wav.scp文件,拷贝到远程服务器

1.远程上手动创建几个文件

cd /hy-tmp/wenet/examples/aishell/s0
mkdir -p data/train
mkdir -p data/test
mkdir -p data/dev

2.拷贝text、wav.scp文件到远程服务器

将本地准备好的F:/wenet数据集/0529_0531_merge/chuli下的train、dev、test中的text、wav.scp两个文件分别拷贝到远程/hy-tmp/wenet/examples/aishell/s0/data下对应的train、dev、test文件夹下

 text的内容如下:

音频ID 空格 音频标签

1867-154075-0014 你好请问有什么需要帮助的吗
1970-26100-0022 家里停电了

wav.scp的内容如下:

音频ID 空格 音频路径

1867-154075-0014  /hy-tmp/XXX/XXX.wav
1970-26100-0022 /hy-tmp/XXX/XXX.wav

二、修改run.sh脚本和yaml参数

先下载预训练模型

打开Pretrained Models in WeNet — wenet documentation

点击红框中的模型,先填表格,就可以下载

 cd /hy-tmp/wenet/examples/aishell/s0

mkdir pretrained_model

cd pretrained_model

wget https://wenet-1256283475.cos.ap-shanghai.myqcloud.com/models/wenetspeech/wenetspeech_u2pp_conformer_exp.tar.gz

tar -xzf wenetspeech_u2pp_conformer_exp.tar.gz

解压后模型文件中包含四个文件:final.pt,train.yaml,units.txt,global_cmvn

然后开展以下步骤,修改/hy-tmp/wenet/examples/aishell/s0下的run.sh文件中的参数:

(1)根据GPU数量,修改序号

export CUDA_VISIBLE_DEVICES="0"

(2)修改结束步骤(可选,如果不一步一步敲命令,想直接执行多步必须改)

stop_stage=4

(3)修改训练数据的路径

data=/hy-tmp/wenet/examples/aishell/s0/0529_0531_dataset

其中0529_0531_dataset是前面上传的训练数据文件夹

(4)修改词典路径,为预训练模型的词典

虽然执行stage2会根据训练数据生成词典(几千个而已),但是要改成预训练模型的词典路径,因为预训练模型的语料比较大,生成的词典自然比较大(几万个)

dict=pretrained_model/20220506_u2pp_conformer_exp/units.txt

(5)修改模型配置(用预训练模型的yaml)

先改成预训练模型的yaml文件路径
train_config=pretrained_model/20220506_u2pp_conformer_exp/train.yaml

再打开预训练模型的train.yaml,修改里面的cmvn_file参数为(这边用绝对路径靠谱些,因为没有跟run.sh同级目录

先用预训练模型的cmvn

cmvn_file: /hy-tmp/wenet/examples/aishell/s0/pretrained_model/20220506_u2pp_conformer_exp/global_cmvn

疑问:CMVN是对特征进行倒谱均值归一化,不是应该基于新的训练数据集计算得到的吗?理论上不应该用预训练数据的,都试试吧,看实验效果(测试不用预训练模型的还是报短音频帧数过滤方面的错误)

同时修改train.yaml中的其他参数

#改成16,防止显存不够

batch_size: 16

min_length: 30  # 1帧=10ms,过来掉少于0.3秒的

token_max_length: 200 #最大文字长度

max_epoch: 100 # 先训练100次试试

(6)修改成有计算cmvn

cmvn=true

修改修改$cmvn && cp data/${train_set}/global_cmvn $dir 为

$cmvn && cp /hy-tmp/wenet/examples/aishell/s0/pretrained_model/20220506_u2pp_conformer_exp/global_cmvn $dir

(7) 修改模型生成后的存放地址(每次新训练一个模型前,切记修改)

dir=model_0529_0531/conformer

(8)指定预训练模型,进行增量训练

 checkpoint= pretrained_model/20220506_u2pp_conformer_exp/final.pt

即checkpoint=pretrained_model/20220506_u2pp_conformer_exp

9)修改为多模型平均计算

average_checkpoint=true

(10)同时修改如下:

local/aishell_data_prep.sh ${data}/wav \
    ${data}/transcript

三、修改 s0/local/aishell_data_prep.sh的参数

根据实际情况修改文件名

aishell_text=$2/0529_0531_merge_label .txt

六、执行stage1

./run.sh --stage 1 --stop-stage 1

  • 把transcript取掉空格,重新生成text,原来的变成text.org
  • 使用wav.scp计算cmvn,存放到train目录下面

七、不执行stage 2(这步是生成词典,但是我们用的是预训练模型的词典,所以不用生成)

八、执行stage3

./run.sh --stage 3 --stop-stage 3

data/train  data/test  data/dev都生成了data.list 

把wav.scp 和 text准备成data.list

九、开始训练

./run.sh --stage 4 --stop-stage 4

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法10:递归树、Trie树、B+树

目录 【递归树】 【Trie 树】 【B树】 【每日一练:最长公共前缀】 【递归树】 递归的思想是将大问题分解为小问题,然后再将小问题分解为更小的问题,直到问题的数据规模被分解得足够小,不用继续递归分解为止。如果把这个一层…

Effective第三版 中英 | 第2章 创建和销毁对象 | 用私有构造器或者枚举类型强化 Singleton 属性

文章目录 Effective第三版前言第二章 创建和销毁对象用私有构造器或者枚举类型强化 Singleton 属性 Effective第三版 前言 大家好,这里是 Rocky 编程日记 ,喜欢后端架构及中间件源码,目前正在阅读 effective-java 书籍。同时也把自己学习该书…

如何在本地配置Github的项目--Python

如何在本地配置Github的项目 0. 引言1. 初步预览2. 配置环境2.1 环境已经给出2.2 环境未曾给出 3. 数据配置4. 依次调试5. 配置完成总结 0. 引言 Github上存在大量的代码。当下载下来后可能会存在疑惑:如何在本地配置对应的项目呢? 为了帮助新手解决这一…

【Android开发基础】购物车代码整理

文章目录 一、数据库设计二、Home界面三、购物车模块四、添加五、源代码 这个月总算忙完了,总算能够抽出时间来,认真写一下博客了。整理一下购物车的代码 一、数据库设计 基于SqLite简单设计一个数据存储逻辑 实体(接收数据) im…

【数据加密】古典密码Playfair

文章目录 一、引言1、主要任务2、分支3、密码体制分类4、攻击密码系统 二、普莱费厄体制1、构造字母表,设为密钥矩阵2、设立加密方法3、加密解密4、字典集合5、结果 一、引言 1、主要任务 解决信息的保密性和可认证问题,保证信息在生成、传递、处理、保…

Swin-Transformer详解

Swin-Transformer详解 0. 前言1. Swin-Transformer结构简介2. Swin-Transformer结构详解2.1 Patch Partition2.2 Patch Merging2.3 Swin Transformer Block2.3.1 W-MSA2.3.2 SW-MSA 3. 模型配置总结 0. 前言 Swin-Transformer是2021年微软研究院发表在ICCV上的一篇文章&#x…

数据的存储(浮点型)

目录 浮点型存储的规则 1.前面我们已经学过了整形在数据中的存储是以原码,反码,补码的形式在内存中存储的,那么浮点数是以什么样的形式存储的呢? 接下来我们通过一段代码来观察——> int main() {int n 9;float* p (float*…

String AOP的使用

面向切面编程,面向特定方法编程,以方法为对象,在不修改原方法的基础上,对方法进行操作扩展等,底层是通过动态代理实现的 使用开发步骤: 1、创建一个类,加上Aspect声明为一个AOP切面类&#xff…

2023 重新开始

感觉搞 IT 的日子最近都有点不太好过。 早上接到公司电话说今天是一个大日子。 为什么是大日子,相信所有人都是懂的。这次公司将会经历一次非常大的裁员,很不幸也在列表中。不过感觉这个好像也没有什么关系。 因为早就在意料之中的事情,经历…

c语言之结构体(初阶)

目录 1:结构体类型的声明 2:结构体初始化 3:结构体成员访问 4:结构体传参 1:结构体类型的声明 1:为啥要有结构体,因为当我们描述一个复杂对象的时候,可能平时我们的一个类型不能…

常见的五种排序

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C 🔥座右铭:“不要等到什么都没有了,才下…

批量提取某音视频文案(二)

牙叔教程 简单易懂 之前写过一篇 批量提取某音视频文案 , 在之前的教程中, 我用的是微软的语音转文字功能, 今天我们换个方法, 使用 逗哥配音 的 文案提取 功能 准备工作 下载视频和音频 我在github找到的是这个仓库 https://github.com/Johnserf-Seed/TikTokDownload 注意一…

VLANIF虚接口案例实践

1)拓扑 2)需求: -所有PC能够ping通自己的网关 -实现vlan间互通,实现所有的PC互通 3)配置步骤: 第一步:给pc配置IP地址 第二步:交换机创建vlan,做access和trunk -所有的交换机都配…

传统图形学对nerf的对比与应用落地

作者今年参加了China3DV的盛会,大会的发表、线下讨论、学者、工业界等等的交流着实对于Nerf有了更深的思考,以下是作者的抛砖引玉,如有不当之处敬请指出~ 传统图形学与nerf的简介: 传统图形学:显示表达几何表达方式&…

【CloudCompare教程】010:点云的裁剪功能(分段、裁剪、筛选)

本文讲解CloudCompare点云的裁剪功能(分段、裁剪、筛选)。 文章目录 一、点云的分段二、点云的裁剪三、点云的筛选一、点云的分段 加载案例点云数据,如下图所示: 选中图层点云,点击工具栏中的【分割】工具。 点击【激活线状选择】工具: 在需要裁剪的点云上绘制现状裁剪范…

使用免费的SSL证书将nginx配置的普通网站修改为HTTPS网站

一、需求说明 已经在Centos8系统中使用nginx搭建了网站;但是该网站没有实现HTTPS协议不安全;现需要将网站升级为HTTPS站点。 Linux环境对Nginx开源版源码下载、编译、安装、开机自启https://blog.csdn.net/xiaochenXIHUA/article/details/130265983?spm=1001.2014.3001.5501

chatgpt赋能python:Python交易接口简介

Python交易接口简介 Python作为一种高级编程语言,被广泛用于各种不同的领域,其中包括金融市场交易。Python交易接口提供了一种优雅而简单的方式,使得交易者能够方便地执行自己的交易策略。 什么是Python交易接口? Python交易接…

Effective第三版 中英 | 第2章 创建和销毁对象 | 考虑静态工厂方法而不是构造函数

文章目录 Effective第三版第2章 创建和销毁对象前言考虑静态工厂方法而不是构造函数 Effective第三版 第2章 创建和销毁对象 前言 大家好,这里是 Rocky 编程日记 ,喜欢后端架构及中间件源码,目前正在阅读 effective-java 书籍。同时也把自己…

基于SSM的人才招聘网站

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

模拟实现库函数:strcpy

目录 通过cplusplus网站了解函数功能: 断言assert的使用: 关于const: 本篇你最应该了解的内容: 通过cplusplus网站了解函数功能: 要模拟实现库函数,首先我们需要了解这个函数的参数,函数的…