我参加NVIDIA Sky Hackathon(语音识别模型训练)
ASR听觉训练
#0 导入nemo工具库及asr工具类
[1]
import nemo
import nemo.collections.asr as nemo_asr
#1.1 加载自动语音识别模型
[3]
quartznet = nemo_asr.models.EncDecCTCModel.restore_from("stt_zh_quartznet15x5.nemo")#
加载中文预训练模型并实例化
#1.2 传入音频文件 — 进行语音识别
[4]
asr_result = quartznet.transcribe(paths2audio_files=["/root/testdata/guopi6.wav"]) # 调用transcribe函数测试预训练模型识别效果
print(asr_result)
#输出识别结果
#1.3 使用ASR_mertrics工具库对预训练模型识别结果计算准确率
[6]
from ASR_metrics import utils as metrics
s1 = "请检测出果皮"#指定正确答案
s2 = " ".join(asr_result)#识别结果
print("字错率:{}".format(metrics.calculate_cer(s1,s2)))#计算字错率cer
print("准确率:{}".format(1-metrics.calculate_cer(s1,s2)))#计算准确率accuracy
字错率:0.1
准确率:0.9
#2 采集数据制作数据集
#2.1数据采集
我们由比赛方所要求的三类物品果皮、纸箱、瓶子,数据采样分为了15种情况。由三名女生和一名男生共制作了45条。
请检测出:
纸箱 |
||
瓶子 |
||
果皮 |
||
纸箱 |
和瓶子 |
|
纸箱 |
和果皮 |
|
瓶子 |
和纸箱 |
|
瓶子 |
和果皮 |
|
果皮 |
和瓶子 |
|
果皮 |
和纸箱 |
|
纸箱 |
果皮 |
和瓶子 |
纸箱 |
瓶子 |
和果皮 |
果皮 |
瓶子 |
和纸箱 |
果皮 |
纸箱 |
和瓶子 |
瓶子 |
果皮 |
和纸箱 |
瓶子 |
纸箱 |
和果皮 |
#2.2 录制语音文件:
录制语音文件,文件类型需统一转换为wav格式,采样率建议在44100HZ 、单声道。通过录音软件Audacity录制:Ubuntu系统安装=>sudo apt install audacity
windows系统可用此网址下载安装: Audacity下载-Audacity2.3.1简体中文版-华军软件园
#2.3制作数据清单格式要求:
{"audio_filepath":"/root/traindata/guopi.wav","duration":3.1463038548752835,"text":"请检测出果皮“}
[7]
# 导入librosa音频工具包获取音频时长,用于制作语音数据集
import librosa
time = librosa.get_duration(filename="/root/testdata/guopi6.wav")
print(time)
3.6919727891156464
#2.4加载数据清单
[8]
#将制作好的json格式的数据清单加载进来train_manifest = "/root/manifest/train_6th.json" test_manifest = "/root/manifest/test_6th.json"
#2.5加载quartznet配置文件
[9]
# 使用YAML读取quartznet模型配置文件
from ruamel_yaml import YAML
config_path = "/root/config/quartznet_15x5_zh.yaml"
yaml = YAML(typ='safe')
with open(config_path) as f:
params = yaml.load(f)
print(params)
#2.6将数据清单传给配置文件
[10]
params['model']['train_ds']['manifest_filepath']=train_manifest
params['model']['validation_ds']['manifest_filepath']=test_manifest
#3 训练模型
#3.1 使用迁移学习的方法训练模型
[11]
quartznet.setup_training_data(train_data_config=params['model']['train_ds'])# 指向我们将用于微调的数据作为训练集
quartznet.setup_validation_data(val_data_config=params['model']['validation_ds'])# 指向新的验证数据进行微调
import pytorch_lightning as pl
trainer = pl.Trainer(gpus=1,max_epochs=220)#重新设置训练器参数
trainer.fit(quartznet)#调用‘fit’方法开始训练
#3.2模型的保存
[12]
#quartznet.save_to("7th_asr_model.nemo")#将训练好的模型保存为.nemo格式
#3.3将训练好的模型进行重载
[13]
try_model_1 = nemo_asr.models.EncDecCTCModel.restore_from("7th_asr_model_1.nemo")#对模型进行重新加载
asr_result = try_model_1.transcribe(paths2audio_files=["/root/testdata/guopi6.wav"])
print(asr_result)#打印输出结果
3.4对自定义模型识别结果计算准确率
[14]
from ASR_metrics import utils as metrics
s1 = "请检测出果皮"#指定正确答案
s2 = " ".join(asr_result)#识别结果
print("字错率:{}".format(metrics.calculate_cer(s1,s2)))#计算字错率cer
print("准确率:{}".format(1-metrics.calculate_cer(s1,s2)))#计算准确率accuracy
字错率:0.0
准确率:1.0
#4 成功拿到用于图像识别的语音指令
=> 就可以作为输入给计算机视觉模型作为检测果皮识别的指令
我们保存好经过验证的识别模型,为后续将模型移植部署在边缘计算备Jetson Nano中做准备
我参加NVIDIA Sky Hackathon(语音识别模型训练)相关推荐
- [我参加NVIDIA Sky Hackathon](模型训练yolo系列)
由于NVIDIA在CV APPLICATIONS->Object Detection提供了yolov3和yolov4的模型配置及训练部署教程,并且yolov4相对于yolov3性能较好,所以选择 ...
- [我参加NVIDIA Sky Hackathon](模型训练ssd系列)
一.ssd-resnet18 比赛默认提供的目标检测模型是ssd,backbone是resnet18,默认训练80批次,部分训练参数及结果如下图1. max map 0.842885663719817 ...
- 【我参加NVIDIA Sky Hackathon】感悟篇
我们团队来自陕西省咸阳市咸阳师范学院,在本次比赛中我们认识到了与其他人的差距,我们最终获得了第14名的成绩,对于我们来说是第一次参加NVIDIA Sky Hackathon的比赛,这次算是一次积累经验 ...
- 我参加 NVIDIA Sky Hackathon——有关ASR模型相关简述
2022年10月29日 团队报名了第七届NVIDIA SKy Hackathon大赛并于2022年11月28日成功完赛 本次系列比赛为团队第二次参加,在有了一定经验的情况下,本次团队也取得了一定的成绩 ...
- [我参加NVIDIA Sky Hackathon] 训练模型安装
1 获取 NGC 秘钥 1. 创建 NGC 账号:这个帐号与 NVIDIA Developer 账号是独立的,需要单独申请.如果已 经有 NGC 帐号的,请跳过下面申请的流程,直接到第 2 步&qu ...
- 我参加NVIDIA Sky Hackathon(系统环境配置)
以下内容是本组成员在参赛流程以及遇到的问题的解决方案,仅供参考.电脑型号为华硕天选3 i5 一.获取NGC密钥 1. 创建NGC账号 (1).登录 https://ngc.nvidia.com 会直接 ...
- 【我参加NVIDIA Sky Hackathon】ASR篇
项目说明:通过NVIDIA公司提供的Tao来训练模型,做出一个语音识别和图像识别垃圾的模型 在ASR数据集中,为了使得模型训练效果更明显,我们在数据搜集的过程中,邀请了不同年龄段的人来进行语音的录制, ...
- 我参加NVIDIA Sky Hackathon 训练文件的路径设置
各变量的作用 KEY 对应的是 NVIDIA ngc 的那个网站上面生成的那个 key GPU 的索引, 这个一般不需要修改, 因为大家只有一块 GPU 用户实验目录, 这个文件夹用于存放后续过程产生 ...
- 【我参加NVIDIA Sky Hackathon】CV篇
项目说明:以"挑战智能语音垃圾分类任务"为主题.内容涵盖:语音识别.垃圾检测及用户接口的web页面实现等.项目流程包括:(注:图片来源于NVIDIA针对于本次比赛的培训PPT) 在 ...
最新文章
- [20170315]数据类型interval day to second
- python程序开发入门_Python开发入门14天集训营-第一章
- sql常用crud命令
- 嵌入式成长轨迹23 【Linux应用编程强化】【Linux下的C编程 下】【Linux GUI编程】...
- 阿里云Java虚拟机的安装位置
- java中的static关键字总结
- Function HDU - 6546 (数学,贪心)
- python半圆_如何使用Python中的Zelle图形生成一个半圆?
- iQOO Neo5搭载66W超快闪充:30分钟回血!
- OpenLTE 基站相关头文件:用户、定时器、基站接口、消息接口
- html加载js那些事
- 如何获取当前显示的片段?
- 最常用的css垂直居中方法
- linux启动hbase_HBase集群环境配置
- 关闭Windows指定端口
- 计算机应用宣传传统文化,计算机应用工程系创建优秀传统文化特色班级侧记
- java如何调用手机拍照功能_手把手教你如何实现拍照功能
- 以太网交换机可以家用吗_以太网交换机是什么? 以太网交换机的使用方法
- LocalSend - 文件传输工具
- chmod 777命令_实用的linux 命令(上)
热门文章
- rasa算法_【RASA系列】语义理解(上)
- nordic 52832中添加RTT打印
- LeetCode日常刷题1、657、717、67
- Apache Drill Architecture Introduction
- 在线流程图工具推荐 免费 好用 可与语雀联动
- 什么是HTTP? HTTP和HTTPS的区别?
- protobuf网络传输协议的优缺点
- pytest_bdd.exceptions.FeatureError: Step definition outside of a Scenario or a Background.
- .Net4.0 任务(Task)
- 计算机中文输入法教案,中文输入教学设计.doc