ASRT语音识别系统部署及模型训练笔记

news2024/11/27 2:49:27

ASRT语音识别系统部署及模型训练笔记

前言

ASRT是一个中文语音识别系统,由AI柠檬博主开源在GitHub上。

GitHub地址:nl8590687/ASRT_SpeechRecognition

国内Gitee镜像地址:AI柠檬/ASRT_SpeechRecognition

文档地址:ASRT语音识别工具文档

本文主要是记录一下我在参考文章:教你如何使用ASRT训练中文语音识别模型 并完成部署和训练过程中的操作步骤。文章作者比较惜字如金,文中很多细节之处没有细讲,我在windows上进行部署的时候踩了比较多的坑,特此记录下。

1. 硬件条件:

总所周知,跑神经网络,要用到英伟达的显卡。

本人硬件参数:

以下是官方配置建议,我的显卡肯定不达标,但我想着最多训练久一点[捂脸]。

Graphical user interface, text, application, email Description automatically generated

2. 下载源代码

按照如图所示步骤即可直接下载最新源代码压缩包。

下载完成后,需要进行解压。之后,如果GitHub仓库上如果代码有更新,重复上述步骤即可。

我的解压路径:

cd C:\Users\Administrator\Documents\ftp\qianyuhui\src\ASRT_SpeechRecognition

3. 运行环境搭建

3.1 操作系统安装CUDA、cuDNN

训练模型请安装好Nvidia GPU驱动和CUDA、cuDNN。

3.1.1 安装步骤

安装过程略过。参考文章:Windows 安装 CUDA/cuDNN

3.1.2 查看CUDA版本:

nvcc -V

3.1.3 查看cuDNN版本:

进入 cuda 的安装路径, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include,找到 cudnn_version.h 选中,以记事本方式打开。

这里,我的是8.8.1

3.2 安装Anaconda

3.2.1 安装步骤

安装步骤略过,参考文章:anaconda的安装和使用

3.2.2 查看conda版本信息:

Anaconda PowerShell控制台中输入以下命令:

conda info

我的conda版本是23.1.0

4. 项目部署

4.1 conda创建python虚拟环境

首先请确保Anaconda 创建python3.10的虚拟环境。

4.1.1 操作步骤

我给asrt单独创建了一个名为:asrt_env的虚拟环境:

Anaconda PowerShell控制台中输入以下命令:

conda create -n asrt_env python=3.10 

4.1.2 查看虚拟环境基本信息

Anaconda PowerShell控制台中输入以下命令:

conda env list conda activate asrt_env conda info

4.2 为ASRT项目安装依赖包

4.2.1 安装依赖包:

Anaconda PowerShell控制台中,我们激活asrt_env虚拟环境,并cd到ASRT项目下,通过

requirements.txt为其安装依赖包:

conda env list
conda activate asrt_env
cd :\\Users\\Administrator\\Documents\\ftp\\qianyuhui\\src\\ASRT_SpeechRecognition
pip install -r requirements.txt

这是一个漫长的安装过程,甚至经常因为网速慢导致下载失败。

4.2.2 踩坑记录:

我在安装tensorflow-gpu时失败了好几次,因为我conda使用的是清华源,下载tensorflow-gpu及其缓慢:

后来网上找到了提速的办法:

关掉原本的控制台,重新通过asrt_env进入ASRT项目目录,

单独先使用中科大的镜像将tensorflow-gpu安装好:

conda env list conda activate asrt_env pip --default-timeout=1000000 install -U -i https://pypi.mirrors.ustc.edu.cn/simple/ --upgrade tensorflow-gpu==2.8.4

然后重新安装requirements.txt内的包:

conda env list 
conda activate asrt_env 
cd C:\\Users\\Administrator\\Documents\\ftp\\qianyuhui\\src\\ASRT_SpeechRecognition
pip install -r requirements.txt

4.3 下载数据集

4.3.1 下载数据集目录

  • 语音文件:wav格式的文件,diff文件头 采样频率16 kHz, 采样位数16 bits, 256 samples, 2 bytes 长度 (是不是raw格式都可以,只要能够正确读取内容即可);
  • **标签文件:txt格式,**语音数据文件的文本标签。

在ASRT根目录下运行以下命令以下载推荐的默认数据集(包括语音和标签文件)的目录:

conda env list
conda activate asrt_env 
cd C:\\Users\\Administrator\\Documents\\ftp\\qianyuhui\\src\\ASRT_SpeechRecognition 
python download_default_datalist.py

根据提示即可完成下载,在对应的数据列表目录中即可看到下载的数据列表。

下载成功后,在/datalist/目录下的文件为AI柠檬博主整理好的数据集目录(包括语音和标签文件),对应的数据集仍需另外下载。

以thchs30为例,主要有6个文件,3个.txt,3个.lst

Graphical user interface, application, email Description automatically generated

.txt文件是语音文件的文本标签列表:

Text Description automatically generated

.lst文件是语音文件的存储路径列表:

Graphical user interface, application, Word Description automatically generated

4.3.2下载数据集

(1) 下载

目录下好了,然后就是去下载几十个G的语音数据集了。

点击链接数据格式与可用的数据集

即可跳转到一些语音数据集的下载链接页面,一共8个压缩包,把他们全部下下来:

Graphical user interface, application Description automatically generated

经过漫长的下载过程,下下来之后是这样的。我在ASRT根目录下创建了/data/speech_data/文件夹,把压缩包都放到了这里。

Graphical user interface, application Description automatically generated

(2) 解压
a. 整体批量解压

下载完成之后,我们使用WinRAR解压进行批量解压(一定要按照我的说的步骤操作!):

Graphical user interface, text, application, email Description automatically generated

解压也是一个漫长的过程,解压后如图:

整体解压完成后,会看到数据集data_thchs30、primewords_md_2018_set1、ST-CMDS-20170001_1-OS已经全部解压完毕;aidatatang_200zh、data_aishell目录下依然有.tar.gz文件需要继续解压;dev、test、train都属于MagicData数据集,需要创建一个名为magicdata的文件夹,然后把dev、test、train都移进去。

b. 继续解压aidatatang_200zh

aidatatang_200zh 的数据集需要额外继续解压。

分别进入

speech_data/aidatatang_200zh/corpus/dev/

speech_data/aidatatang_200zh/corpus/ test/

speech_data/aidatatang_200zh/corpus/ train/

继续用WinRAR解压:

Graphical user interface, application Description automatically generated

c. 继续解压data_aishell

data_aishell的数据集需要额外继续解压。

进入speech_data/data_aishell/wav继续用WinRAR解压:

Graphical user interface, application, table Description automatically generated

d. magicdata数据集的单独处理操作

dev、test、train都属于MagicData数据集,需要创建一个名为magicdata的文件夹,然后把dev、test、train都移进去:

Graphical user interface, text, application, email Description automatically generated

注意:

  • 在Windows系统上使用WinRAR不要选择“解压到XXX(压缩包名)”,一定要选择“解压到当前文件夹”。
  • 关于数据集文件的路径树,可以直接参考datalist目录下的*.lst和*.txt文件中的内容进行排放。datalist和 data。
  • 下载后的文件解压,目录对应如下:
/data/speech_data/data_thchs30/train/*.wav 
/data/speech_data/data_thchs30/dev/*.wav 
/data/speech_data/data_thchs30/test/*.wav 
/data/speech_data/ST-CMDS-20170001_1-OS/*.wav
  • magicdata的三个压缩包:dev、test、train的解压路径如下所示:

Graphical user interface, text, application, email Description automatically generated

4.4 修改配置文件

4.4.1 构建目录与数据集文件的关联

ASRT项目的配置文件主要是位于根目录下的asrt_config.json,用代码编辑器打开。

asrt_config.json用于配置相关语音数据集目录、语音文件和标签文件(data_list、data_path、label_list),可按需修改。如图,需要修改data_path的路径。

Text Description automatically generated

(1) 相对路径的写法:

因为我把数据集文件都放在更目录下的data目录下(与datalist同级),因此这里我参考data_list和lable_list的写法,采用相对路径的写法定位到speech_data:

Graphical user interface, text, application Description automatically generated

(2) 绝对路径的写法:

Json中的绝对路径需要用【\\】表示:

Graphical user interface, application, Word Description automatically generated

4.4.2 模型训练参数调整:

训练参数主要在 train_speech_model.py文件中修改。

Graphical user interface, text, application Description automatically generated

具体参数详见文章:教你如何使用ASRT训练中文语音识别模型

我这边主要是改了batch_size, 默认是16我改成了8,降低GPU的工作压力。

4.5 训练模型

接下来就是运行项目,开始训练项目:

Anaconda PowerShell控制台中输入以下命令:

conda env list 
conda activate asrt_env 
cd C:\\Users\\Administrator\\Documents\\ftp\\qianyuhui\\src\\ASRT_SpeechRecognition 
python train_speech_model.py

Text Description automatically generated

训练过程中会在/save_models/ 目录下对应的模型名称里保存了很多模型参数文件。

Graphical user interface Description automatically generated

Graphical user interface, text, application, email Description automatically generated

PS: AI柠檬博主曾经训练了几个版本,放在Github上,如果你并不需要训练自己的定制语音库,我们可以直接前往下载。

4.6 评估模型准确率

接下来的我们主要介绍【评估模型准确率】和【语音识别测试】。由于我的显卡条件并不好,训练需要花费较长时间(打算升级下我的显卡[捂脸])。这里我直接使用AI柠檬博主已经训练好的最新版本(1.3.0)模型参数文件,进行演示。(注意:经过我的实操,1.3.0的模型参数文件,不适用python3.10,适用于3.9,其他版本如6、7、8未测试)

模型评估主要是 evaluate_speech_model.py文件。

Text Description automatically generated

第48行代码:load_model()方法中,需要指定模型参数文件(.h)路径。

第45行代码:test_model() 这里,需要传入的参数为要测试准确率的数据集类型,可选的有训练集(train)、验证集(dev)和测试集(test),图中的【dev】意为:让模型在开发/验证集(dev集)上评估模型的准确率;

第49行代码:data_count参数设定要测试的数据量,例如:100,即随机处连续抽取100个数据进行错误率的计算,如果填“-1”则使用全部测试数据集的数据量,默认为-1;

conda env list 
conda activate asrt_env 
cd C:\\Users\\Administrator\\Documents\\ftp\\qianyuhui\\src\\ASRT_SpeechRecognition python evaluate_speech_model.py

Text Description automatically generated

4.7 语音识别测试

语音识别使用predict_speech_file.py文件:

Text, application Description automatically generated

第47行代码:load_model()方法中,需要指定模型参数文件(.h)路径。

第48行代码:recognize_speech_from_file()函数里面,填写我们需要识别的录音文件的文件名路径。

完毕后,运行代码,查看识别结果。

conda env list 
conda activate asrt_env 
cd C:\\Users\\Administrator\\Documents\\ftp\\qianyuhui\\src\\ASRT_SpeechRecognition python predict_speech_file.py

Text Description automatically generated

5. 常见问题去哪找:

FAQ常见问题答疑

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

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

相关文章

ping telnet curl的使用方法和应用场景

文章目录一、区别二、使用方法pingtelnetcurl三、应用场景一、区别 ping命令基于ICMP协议,通过发送发送ICMP数据包,并查看对方是否有返回数据来检测网络是否连通,仅包含控制信息,不包含端口号; telnet是对服务器的远程登录&#…

全网火爆,Python接口自动化测试,从0到1分层封装框架撸码(带接口)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 随着行业内卷越来越…

3D开发工具HOOPS最新解析合集,助力实现web端高性能模型渲染

一、3D技术为创新提供强大助力 不管您想搭建桌面、WEB或者移动端APP应用,技术领先全球的HOOPS Platform组件都可以为您提供弹性的3D集成架构,同时,一批可信任的工业领域3D技术专家也将为您提供技术支持服务。 如果您的客户期望有一种在多个…

Docker 配置远程访问

Docker客户端通常通过Unix套接字在本地与守护程序通信 /var/run/docker.sock,或通过网络通过TCP套接字。 以下是启动时提供给Docker守护程序的选项的典型示例: # ps -ef |grep dockerd root 23438 1 0 00:41 ? 00:00:03 /usr/bin/dock…

Spring入门案例--IOC入门案例

IOC入门案例思路分析 (1)Spring是使用容器来管理bean对象的,那么管什么? 主要管理项目中所使用到的类对象,比如(Service和Dao) (2)如何将被管理的对象告知IOC容器? 使用配置文件 (3)被管理的对象交给IOC容器,要想从容器中获取对象&…

TCP协议详解

1.TCP的准备条件在古代的时候,古人们经常写书信进行交流,写书信的前提是你要知道这份信是要寄给谁在网络中,我们通过ip端口号找对目标对象,但是现在网站一般会对ip端口注册一个域名,所以我们一般就是对域名进行查找&am…

minikube安装与运行(阿里云环境运行)

说下为啥选择云环境,最开始在本地电脑上安装的minikube,但是由于国内的网络访问不了谷歌的镜像仓库,安装ingress-nginx或者其他插件时着实的恶心。要不翻墙,要不自己搭建个镜像仓库。最终决定用阿里云境外的节点,按小时…

Windows操作系统C盘快速扩容工具推荐

Windows 系统C 盘扩容教程 1️⃣前言 大家在使用电脑过程中,随着时间的推移,经常会发现C盘空间爆红的情况,主 要原因是电脑软件在使用过程中产生的缓存文件或者日志文件大部分都会存储在C盘,这样时间一久,C盘的存储空…

不联网新华字典

介绍 首页字典 更多 包含内容 内容对应Json数据文件百家姓baijiaxing.json曹操诗集caocao.json弟子规dizigui.json成语idiom.json论语lunyu.json纳兰性德诗集nalanshiji.json千家诗qianjiashi.json千字文qianziwen.json三字经-传统版sanzijing_ct.json三字经-新版sanzijing_x…

「STM32入门」TIM定时中断

定时器的简介 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断,在中断内可以执行中断事件不仅具备基本的定时中断功能,而且还包含内外时钟源选择,主从触发模式,输入捕获,输出捕获&#xff…

MySQL调优笔记——慢SQL优化记录

上周,项目出现线上问题,在这家公司做的是一个SAAS平台,总用户量大约10万人; 经过排查,发现是SQL问题,导致数据库响应慢,进而拖垮了整体服务; 通常,查询耗时较长的SQL涉…

我在windows10下,使用CMake gui 编译krita源码,CMake gui报错:LibMyPaint_DIR-NOTFOUND

系列文章目录 文章目录系列文章目录前言一、原因二、解决1.引入库前言 我在windows10下,使用CMake gui 编译krita源码 where is the source code:E:/krita-dev/krita where to build the binaries:E:/krita-dev/krita_camke current generator:MinGW Makefiles 分别…

ios证书申请流程

mac电脑-钥匙串-请求证书-得到CertificateSigningRequest 2.创建Identifiers (1) (2) (3) (4) 如要接推送等 勾:Push Notifications 如要生成universal links 勾:Associated Domains 3.创建Certificates 注意:需…

银行数字化转型导师坚鹏:《银行保险监管统计管理办法》

《银行保险监管统计管理办法》 ——“监”听则明 护航银行高质量发展课程背景: 很多金融机构存在以下问题: 不清楚《银行保险监管统计管理办法》出台背景? 不知道如何理解《银行保险监管统计管理办法》相关规定? 不清楚如何落…

UI设计师都在用这5个网站,赶紧马住~

本期推荐5个UI设计师常用的素材、学习网站,设计师们赶紧收藏~ 1、菜鸟图库 https://www.sucai999.com/searchlist/UIsheji----all-0-0.html?vNTYxMjky 菜鸟图库提供了超多免费设计素材,在这里你可以找到平面、UI、电商等设计类素材,还有大…

4.2和4.3、MAC地址、IP地址、端口

计算机网络等相关知识可以去小林coding进行巩固(点击前往) 4.2和4.3、MAC地址、IP地址、端口1.MAC地址的简介2.IP地址①IP地址简介②IP地址编址方式③A类IP地址④B类IP地址⑤C类IP地址⑥D类IP地址⑧子网掩码3.端口①简介②端口类型1.MAC地址的简介 网卡…

面试如何脱引而出?Redis字符串底层原理你掌握了吗

今天我们讲解字符串的底层原理,属于进阶内容,能回答出来可以秒杀80%的面试者。‍大家都知道Redis有5种基本数据类型,但是你知道每种数据类型对应的底层编码或者数据结构是什么样的吗?这在面试中是一个有区分度的问题,如…

北京E4432B信号发生器

E4432B 安捷伦|Agilent E4432B ESG-D系列 3G高频数字信号源250KHz-3GHz 品  牌: Agilent简单介绍频率范围:E4430B 250K-1GHzE4431B 250K-2GHzE4432B 250K-3GHzE4433B 250K-4GHz 18320918653供单信道和多信道CDMA用的测量卡用于I和Q的20 MHz射频带宽…

搞懂 API :API 测试中常见的问题及处理办法

API测试是Web服务质量保证的重要环节之一。它可以有效地检查API是否符合预期,但在操作中也经常遇到各种问题。本文将介绍API测试中常见的问题以及如何解决它们。 接口错误码不清楚或无法处理 接口开发人员往往会为其API定义错误码来表示特定的错误类型,…

在新电脑上重启自己的django+vue项目遇到的数据库和Nodejs问题

数据库问题 今天在新电脑上重启自己备份的项目文件,迁移数据库的时候一直出现这个问题,运行代码也是这个问题。很奇怪,明明是不出错的代码做的备份怎么会出问题? 找了一下午,终于晚上把问题解决了。 问题 1、首先是这个问题 2、再往上追溯,发现是这里的问题 3、在原…