IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ASR实验及记录 -> 正文阅读

[人工智能]ASR实验及记录

ASR实验及记录

转载自我的博客 https://wzw21.cn/2020/12/23/asr/

DeepSpeech2

DeepSpeech2是一个采用PaddlePaddle平台的端到端自动语音识别引擎的开源项目,具体原理参考论文Baidu’s Deep Speech 2 paper。

环境配置

  • 使用官方镜像,运行失败。原因:PaddlePaddle版本不匹配,缺少RNN模块等关键组件;尝试进行修改后发现CUDNN版本也不匹配;
  • 使用带有正确版本CUDA与CUDNN的镜像,手动安装PaddlePaddle,安装成功后clone DeepSpeech2项目,根据setup.sh进行相关依赖的安装与配置。注意镜像中缺少git、swig等基础命令或依赖包的安装,需通过apt-get进行安装。

数据准备及使用方式:

  • 下载BaiduCN1.2k Model语音模型与Mandarin LM Small语言模型;

  • 自行准备manifest文件,其中包括每条音频的存储路径,音频时长与数据标签(文本)。文本中不能含有标点符号、英文字母与阿拉伯数字。格式为:{“audio_filepath”: “”, “duration”: , “text”: “”}

  • 使用如下命令可进行自定义语音音频识别

    PYTHONIOENCODING=utf-8 // 需设定编码方式为utf-8,否则会出现错误;
    
    python infer.py
    
    --num_samples 1 //识别语音条数
    
    --infer_manifest data/mydata/manifest //manifest文件路径
    
    --use_gru TRUE //使用门控循环单元
    
    --use_gpu FALSE 
    
    --mean_std_path models/baidu_ch1.2k/mean_std.npz //样本特征的均值与标准差
    
    --vocab_path models/baidu_ch1.2k/vocab.txt //字典路径
    
    --lang_model_path models/lm/zh_giga.no_cna_cmn.prune01244.klm //语言模型路径
    
    --model_path models/baidu_ch1.2k //语音模型路径
    
    --num_conv_layers=2 //卷积层数量
    
    --num_rnn_layers=3 //循环神经网络配置
    
    --rnn_layer_size=2048 
    
    --share_rnn_weights=False 
    
    --specgram_type='linear' 
    
    --error_rate_type=cer //错误率类型设置为字错误率
    
    --alpha=0.4 
    
    --beta=0.3
    
  • 使用tools/tune.py可使用不同参数进行识别,以找出最优参数。参数包括alpha与beta,分别为语言模型权重与单词插入权重。

  • 使用tools/compute_mean_std.py和tools/build_vocab.py可获得自定义样本的特征均值、标准差(用于归一化)与字典;

  • 相关命令及运行参数保存在command.txt中,方便使用。

实验结果分析

  • 实验数据为100条语音数据,带有ground truth。使用BaiduCN1.2k Model语音模型与Mandarin LM Small语言模型,使用预训练模型的数据特征(即归一化方式)与字典,经测试,最佳运行参数为alpha=0.4, beta =0.3,测试结果的平均cer(字错误率)为55.19%
  • 将语音模型替换为Aishell模型进行实验,错误率升高

迁移学习

在公开的模型上使用自己的数据集进行迁移训练

  • 准备工作

    1)修改词典中的阿拉伯数字为中文;

    2)将正确数据标签中所有阿拉伯数字换为中文,去除所有标点符号与英文字母;

    3)按照要求生成manifest.train文件,包含训练数据路径,时长与标签;

    4)预处理出训练集数据特征的均值与标准差;

    5)若要修改字典(添加或删除),则需要修改神经网络模型的结构,较为复杂;

  • 运行train.py进行训练,命令及参数如下

    PYTHONIOENCODING=utf-8 
    
    python train.py 
    
    --batch_size 16 //批量大小
    
    --num_epoch 10 //训练周期数
    
    --num_conv_layers=2 
    
    --num_rnn_layers=3 
    
    --rnn_layer_size=2048 
    
    --share_rnn_weights=False 
    
    --save_epoch 1 //每训练一个epoch进行一次模型保存
    
    --num_samples 80 
    
    --learning_rate 0.05 //学习率,需调优
    
    --max_duration 130 //最大音频时长
    
    --use_gpu FALSE 
    
    --use_gru TRUE 
    
    --init_from_pretrained_model models/baidu_ch1.2k 
    
    --train_manifest data/mydata/manifest.train //训练集路径
    
    --dev_manifest data/mydata/manifest.validation //验证集路径
    
    --mean_std_path models/baidu_ch1.2k/mean_std.npz //可选择模型预训练时使用的数据的特征(即models/baidu_ch1.2k/mean_std.npz),或是当前进行迁移学习的数据的特征(data/mydata/ mean_std.npz)
    
    --vocab_path models/baidu_ch1.2k/vocab_new.txt 
    
    --output_model_dir models/baidu_ch1.2k_new //新模型保存位置
    
    --num_iter_print 1 //每一个epoch输出一次信息
    
    --test_off TRUE//训练过程中是否进行验证
    

难点

  • 环境难以配置,官方镜像存在问题,配置环境花费大量时间;
  • 暂无法成功在docker中使用gpu,导致训练与识别速度非常慢;
  • (15h仅训练了6个epoch)
  • 自定义训练数据的特征均值和标准差与预训练模型使用的数据不同,导致迁移学习效果较差
  • 若需修改字典,则必须深入了解DeepSpeech模型结构与修改方式,深入学习PaddlePaddle框架

Todo

  • 结合预训练时使用的数据的特征,对我们的音频数据进行预处理,再进行迁移训练
  • 修改字典,修改网络模型,使最后的全连接层与自定义字典相匹配
  • 使用更大型的语言模型Mandarin LM Large

参考文档

  • https://github.com/PaddlePaddle/DeepSpeech/blob/develop/README_cn.md

  • https://www.paddlepaddle.org.cn/install/quick

  • https://baijiahao.baidu.com/s?id=1675202226359497084&wfr=spider&for=pc

CVTE开源模型

概述

  • 基于Kaldi
  • 批量将mp3或wav音频进行数据部署,并生成txt识别结果
  • 无phone和ctm时间戳

实验过程

  • 将音频文件放入data/wav/filename中
  • 新建data/filename/test文件夹,并在其中创建text、utt2spk、spk2utt、wav.scp文件,text中保存标签数据,wav.scp中保存音频路径,utt2spk、spk2utt中保存音频与说话人的关系。
  • 每次运行后需删除data/filename/test中的cmvn.scp文件,否则会报错。
  • 创建好data/filename/test中相应文件后,可使用utils/validate_data_dir.sh进行检查(需加上 --no-feats)
  • 运行run.sh开始语音识别,运行前需修改run.sh中的路径(有三处)
  • 在exp/chain/tdnn/decode_filename/scoring_kaldi/中可查看识别结果,对于不同的参数会有不同的结果,可通过best_cer(best_wer)查看最优结果对应参数(记为参数a)参数包括inv-acoustic-scale∈[7,17] ,word-ins-penalty∈{0.0,0.5,1.0}。
  • 猜测:最优识别结果对应的参数(参数a)是最适合对此类语音数据进行识别的参数。在没有text文件的情况下,最优结果大概率存在于使用参数a得到的结果中。
  • 对于不同的数据集,需要进行测试以获取最优参数

实验结果分析

  • 实验数据为28条语音数据,带有ground truth。经测试,最佳参数为inv-acoustic-scale=16, word-ins-penalty=0.0,测试结果的平均cer(字错误率)为50.18%

流程

  • 将音频文件(wav格式)放入/kaldi-master/egs/cvte/s5/data/wav/filename中;
  • 将text文件放入/kaldi-master/egs/cvte/s5/data/test_filename/test中,text格式为“音频ID 文字标签\r\n”(中间为Tab);
  • 将conf与frame_shift放入test文件夹;
  • 将进行整个识别流程封装入asr.sh文件。首先将自动生成wav.scp、utt2spk、spk2utt文件,并删除可能造成冲突的文件,然后开始语音识别;
  • 识别结果将保存于/kaldi-master/egs/cvte/s5/exp/chain/tdnn/decode_filename/scoring_kaldi/中。若text文件中含有真实标签,则可查看最佳参数。打开最佳参数对应的文件夹可查看识别结果。

难点

  • 无官方文档,相关参考资料较少
  • 模型封装完整,无法进行修改,无法使用迁移学习进行模型优化
  • 因未提供相关解码文件,无法获取时间戳信息

参考

  • https://chatopera.blog.csdn.net/article/details/107733688

  • https://blog.csdn.net/samurais/article/details/107889376

  • https://blog.csdn.net/tcx1992/article/details/85717100

  • https://github.com/tcxdgit/ASR_utils

  • https://blog.csdn.net/benbenls/article/details/102691710

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:23:44  更:2021-10-28 12:23:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:47:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码