使用 WeNet 训练 AISHELL-1 模型,看这篇就够了!!!!!!新手少走一个月弯路。

使用 WeNet 训练 AISHELL-1 模型的详细入门指南

在这篇文章中,我们将通过 WeNet 框架详细介绍如何训练 AISHELL-1 数据集的语音识别模型。我们将逐步解释各个阶段的操作,适合初学者入门。

文章目录

  • 使用 WeNet 训练 AISHELL-1 模型的详细入门指南
    • 1. 环境准备
      • 1.1 安装miniconda
      • 1.2 创建虚拟环境
      • 1.3 安装并配置WeNet
    • 2. 数据准备
      • 2.1 下载 AISHELL-1 数据集
      • 2.2 设定数据路径
    • 3. 运行实验
      • 3.1 运行各个阶段
    • 4. 各阶段详细说明
      • 4.1 阶段 -1: 下载数据
      • 4.2 阶段 0: 准备训练数据
      • 4.3 阶段 1: 提取特征
      • 4.4 阶段 2: 生成标签字典
      • 4.5 阶段 3: 准备 WeNet 数据格式
      • 4.6 阶段 4: 训练神经网络
        • aishell-1最大的坑点,拦路虎
      • 4.7 阶段 5: 使用训练模型进行识别
      • 4.8 阶段 6: 导出训练模型
    • 5. 总结

1. 环境准备

1.1 安装miniconda

  • miniconda官网

1. 获取下载链接
在这里插入图片描述

2. 在服务器使用wget命令,进行下载

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

3. 给下载文件加上可执行权限

未加执行权限,无高亮,不可安装。

在这里插入图片描述

chmod +x Miniconda3-latest-Linux-x86_64.sh

赋予可执行权限,显示高亮

在这里插入图片描述
4. 安装 miniconda

./Miniconda3-latest-Linux-x86_64.sh

1.2 创建虚拟环境

conda create -n wenet python=3.10
conda activate wenet
  • 坑点:出现conda: command not found报错和无法自动激活base环境问题的解决方案

解决方法:执行以下命令。 (详细解决方法)

source ~/.bashrc

1.3 安装并配置WeNet

  • 见GitHub上的wenet详细配置步骤

2. 数据准备

2.1 下载 AISHELL-1 数据集

你可以从 AISHELL 官方网站下载 AISHELL-1 数据集。下载后,解压缩数据集,并确保文件结构如下:

aishell/
├── wav/
│   ├── train/
│   ├── dev/
│   └── test/
└── text/

2.2 设定数据路径

example/aishell/s0/run.sh 文件中,修改数据路径变量 $data 指向你解压后的 AISHELL 数据集的绝对路径,例如:

data=/home/username/asr-data/aishell

3. 运行实验

WeNet 提供了一个完整的实验脚本,包含多个阶段。我们建议逐步运行每个阶段,以便理解整个训练过程。

3.1 运行各个阶段

example/aishell/s0 目录执行以下命令:

cd example/aishell/s0
bash run.sh --stage -1 --stop_stage -1  # 下载数据
bash run.sh --stage 0 --stop_stage 0    # 准备训练数据
bash run.sh --stage 1 --stop_stage 1    # 提取特征
bash run.sh --stage 2 --stop_stage 2    # 生成标签字典
bash run.sh --stage 3 --stop_stage 3    # 准备 WeNet 数据格式
bash run.sh --stage 4 --stop_stage 4    # 训练神经网络
bash run.sh --stage 5 --stop_stage 5    # 使用训练模型进行识别
bash run.sh --stage 6 --stop_stage 6    # 导出训练模型

你也可以一次性运行整个脚本:

bash run.sh --stage -1 --stop_stage 6

4. 各阶段详细说明

源码详解,之后会单独写一篇,敬请期待。

4.1 阶段 -1: 下载数据

此阶段将 AISHELL-1 数据下载到本地路径。下载可能需要几个小时。如果你已经下载过数据,请确保在 run.sh 文件中更改 $data 变量,并从 --stage 0 开始。

如果服务器里面有,可以直接用,也可以用cp命令拷贝到你的文件夹 --> 彻底掌握Linux文件管理:从零开始学会高效复制文件夹的终极指南

4.2 阶段 0: 准备训练数据

在此阶段,local/aishell_data_prep.sh 会将原始 AISHELL-1 数据整理成两个文件:

  • wav.scp:每行记录两个用制表符分隔的列:wav_idwav_path
  • text:每行记录两个用制表符分隔的列:wav_idtext_label

4.3 阶段 1: 提取特征

此阶段将原始 WAV 文件复制到 raw_wav/train/ 目录中,并使用 tools/compute_cmvn_stats.py 提取全局 CMVN(倒谱均值和方差归一化)统计信息,用于对声学特征进行归一化。

4.4 阶段 2: 生成标签字典

此阶段生成一个字典,其中映射标签符号(对于 AISHELL-1 使用字符)和整数索引。例如:

<blank> 0
<unk> 1
一 2
丁 3
...
<sos/eos> 4232

4.5 阶段 3: 准备 WeNet 数据格式

此阶段生成 WeNet 所需的格式文件 data.list。每行以 JSON 格式包含以下字段:

  • key:话语的键
  • wav:话语的音频文件路径
  • txt:标准化的转录文本

4.6 阶段 4: 训练神经网络

在此阶段,模型将开始训练。你可以使用多 GPU 模式,设置 CUDA_VISIBLE_DEVICES 来指定使用的 GPU 卡。配置文件(如 conf/train_conformer.yaml)可以设置神经网络结构、优化参数等。
在这里插入图片描述

你可以使用 TensorBoard 监控训练过程:(但是我没成功过,当然也这个监控不是必须的

tensorboard --logdir tensorboard/$your_exp_name/ --port 12598 --bind_all
aishell-1最大的坑点,拦路虎

错误提示:
在这里插入图片描述

解决方案:

  • 在wenet虚拟环境下执行以下命令
conda install tensorflow

错误原因目前还不知道,知道了之后再加上。

4.7 阶段 5: 使用训练模型进行识别

此阶段展示如何使用训练好的模型对一组 WAV 文件进行识别,并提供模型平均功能。你可以选择不同的解码方法,如 CTC 贪婪搜索、CTC 前缀束搜索和注意力解码。
在这里插入图片描述

4.8 阶段 6: 导出训练模型

通过运行 bash run.sh --stage 6 --stop_stage 6 ,可以导出训练模型,以便在其他编程语言(如 C++)中进行推理。
在这里插入图片描述

5. 总结

通过以上步骤,你可以使用 WeNet 框架成功训练 AISHELL-1 数据集的语音识别模型。本文详细介绍了每个阶段的具体操作和功能,帮助初学者更好地理解整个训练流程。

如果在训练过程中遇到任何问题,请随时参考 WeNet 的文档或搜索相关社区讨论。希望这篇文章能帮助你顺利进行语音识别模型的训练!

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

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

相关文章

SFP, SFP+,QSFP光模块封装类型学习

前言&#xff1a; 本文是自己对SFP, SFP,QSFP光模块封装类型的学习记录&#xff0c;所有的资料都搜集字引用链接里的博客内容&#xff0c;本文更多的是自己的学习笔记记录所以可能会有一些理解错误&#xff0c;请更多的参考引用链接里的信息来源。 引用&#xff1a; 认识SFP/SF…

学习c语言第十八天(指针笔试题)

一维数组 字符数组 char*p"abcdef" p里面放的是a元素的地址 二维数组 指针笔试题 第一题 2 5 第二题 第三题 第四题 第五题 第六题 10 5 第七题 at 第八题 POINT ER ST EW

HTTP协议详解(一)

协议 为了使数据在网络上从源头到达目的&#xff0c;网络通信的参与方必须遵循相同的规则&#xff0c;这套规则称为协议&#xff0c;它最终体现为在网络上传输的数据包的格式。 一、HTTP 协议介绍 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff1a; 全…

AlmaLinux9安装中文语言包_zabbix没有中文语言包

更新你的系统包&#xff0c;如果系统最新可以忽略&#xff1a; sudo dnf update安装中文简体语言包 sudo yum install langpacks-zh_CN安装繁体中文包 sudo dnf install kde-l10n-Chinese-traditional安装完成后重启系统&#xff0c;以确保语言设置生效 设置系统为简体中文&…

【JavaSE-线程安全问题-死锁详解】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 &#x1f308;…

HarmonyOs~应用程序框架进阶之 UIAbility组件间的交互

我们要知道一个概念 一个应用可以有多个模块 每个模块又可以有多个UIAbility 每个UIAbility又可以有多个页面 如何创建同模块的UIAbility 首先我们创建好项目之后 就是有一个UIAbility组件存在的 那么如果我想要在同模块创建一个UIAbility怎么创建 想要创建的模块-->&g…

IP地址https证书的优势与申请途径

一、IP地址SSL证书的优势 无需域名&#xff1a;对于一些内部系统或者专用设备而言&#xff0c;它们可能不具有域名&#xff0c;但仍需保障通信安全。IP地址SSL证书正好满足这一需求。简化管理&#xff1a;对于拥有大量设备的企业来说&#xff0c;维护每个设备的域名可能是一个…

快手文生图模型-Kolors快速上手

Kolors是什么 可图(Kolors)&#xff1a;用于真实感文本到图像合成的扩散模型的有效训练 可图&#xff0c;是快手开源的一个文生图模型&#xff0c;架构上使用了chatglm&#xff0c;比普通的sd模型在中文理解上要强大很多&#xff0c;以往sd模型的提示词理解能力往往只有两种 …

U盘格式化后数据能恢复吗?恢复方法盘点!

在数字化时代&#xff0c;U盘已成为我们日常生活和工作中不可或缺的数据存储设备。然而&#xff0c;在使用过程中&#xff0c;我们有时可能会因为各种原因对U盘进行格式化&#xff0c;从而不慎删除了重要数据。那么&#xff0c;U盘格式化后数据能恢复吗&#xff1f; 首先&…

判断IP是否高匿?教你小妙招!

如何判断一个IP是否是高匿的呢&#xff1f;小编为大家整理了一下&#xff0c;赶快来看一看吧&#xff01; 1. 了解高匿IP的定义 高匿IP&#xff0c;也叫匿名代理IP&#xff0c;是指在使用代理IP时&#xff0c;不向目标服务器透露用户的真实IP地址&#xff0c;甚至不会透露正在…

手摸手教你撕碎西门子S7通讯协议12--使用第3方通讯库读写数据

1、概述 前面通过坚强的努力&#xff0c;实现了多种数据类型的读写&#xff0c;发现还是灰常棒的&#xff0c;但也显示了它的不灵活性&#xff0c;伙伴们肯定有很多疑问&#xff0c;比如如何做到一个简单的命令实现读写&#xff0c;而不是自己拼接那些非常复杂的报文&#xff…

在 Elasticsearch 中实现采集自动扩展

作者&#xff1a;来自 Elastic Pooya Salehi, Henning Andersen, Francisco Fernndez Castao 正确调整 Elasticsearch 集群的大小并不容易。集群的最佳大小取决于集群正在经历的工作负载&#xff0c;而工作负载可能会随着时间的推移而变化。自动扩展会自动调整集群大小以适应工…

【建议收藏】大数据Hadoop实战入门手册,配套B站视频教程1小时速通

大数据Hadoop入门实战专栏 大数据技术概述大数据简介Hadoop简介 大数据集群环境搭建环境搭建概述虚拟机准备集群搭建Java开发环境准备 分布式文件系统HDFS学习前期概述HDFS Shell命令HDFS可视化界面HDFS Java API编程环境初始化API基本使用创建目录更改目录权限上传文件查看目录…

新版HAP应用市场即将推出,诚邀意向开发者提前入驻,抢占先机

新版HAP应用市场简介 今年Q4&#xff0c;明道云HAP将会发布全新的应用市场。任何企业和个人&#xff0c;无论是明道云客户、伙伴&#xff0c;甚至是自由职业者&#xff0c;都可以入驻成为应用市场的开发者&#xff0c;上传独创的应用、插件、API&#xff0c;自由定价售卖并获得…

数说故事 | 社媒聆听“顶流”红山动物园UGC声量

7月&#xff0c;CASETiFY和南京红山森林动物园联名啦&#xff0c;一个号称“手机壳中的爱马仕”&#xff0c;一个是“动物园顶流”&#xff0c;两大IP梦幻联动&#xff0c;推出了“明星动物”系列手机壳&#xff0c;CASETiFY还解锁“饲养员”身份&#xff0c;认养了酷酷的美洲豹…

深度学习Day-27:生成对抗网络(GAN)入门

&#x1f368; 本文为&#xff1a;[&#x1f517;365天深度学习训练营] 中的学习记录博客 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制] 要求&#xff1a; 了解什么是生成对抗网络生成对抗网络结构是怎么样的学习本文代码&#xff0c;并跑通代码调用训练好…

抖音开放平台API接口如何开发||抖音相关接口数据采集数据分析 【附实例】

抖音开放平台提供了多种接口&#xff0c;包括授权登录、用户信息、视频管理、评论互动、消息通知、数据分析等。 以下是开发抖音接口的一些步骤&#xff1a; 1. 注册开发者账号&#xff1a;在抖音开放平台上注册开发者账号&#xff0c;获取开发者身份认证。 2. 创建应用&…

Oracle VM VirtualBox 异常退出,如何解决??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

【Linux】进程间通信 —— 管道与 System V 版本通信方式

目录 为什么有进程间通信&#xff1f;进程间通信的目的是什么&#xff1f; 管道 匿名管道 父子进程共享管道 命名管道 共享内存 概念 原理 共享内存和内存映射&#xff08;文件映射&#xff09;的区别 使用 消息队列 概念 使用 信号量 概念 使用 IPCS 命令 S…

Docker Compose方式部署Ruoyi-前后端分离版本

目录 一. 环境准备 二. 制作一个jdk8u202环境的镜像 三. 制作nginx镜像 四. 对项目文件做修改 五. 项目打包 1. 前端打包 2. 后端打包 六. 编写docker-compose.yml 一. 环境准备 主机名IP系统软件版本配置信息localhost192.168.226.25Rocky_linux9.4 git version 2.…