[转]Kaldi语音识别
Kaldi语音识别1.声学建模单元的选择1.1对声学建模单元加入位置信息2.输入特征3.区分性技术4.多音字如何处理?5.Noise Robust ASR6.Deep Learning[DNN/CNN替换GMM]7.在手机等资源受限设备
author:Feiteng
Email:lifeiteng0422@gmail.com
date:2014/08/10Kaldi训练脚本针对不同的语料库,需要重写数据准备部分,脚本一般放在conf、local文件夹里;
conf放置一些配置文件,如提取mfcc、filterbank等特征参数的配置,解码时的一些参数配置
local一般用来放置处理语料库的数据准备部分脚本>中文识别,应该准备:发音词典、音频文件对应的文本内容和(文件标注)一个基本可用的语言模型(解码时使用)
注:一般情况下,在模型训练阶段LM对ASR的参数训练没有影响,即不影响GMM、HMM、DNN/CNN的参数值;使用区分度模型训练会有影响[生成Lattice候选]1.声学建模单元的选择
全音节[是否带声调]、声韵母[是否带声调]、音素?>带声调的声韵母作为建模单元是比较常见的中文识别选择,也有一些文章指出,使用更细化的phones 集可以有更多的性能提升:
中文连续语音识别系统音素建模单元集的构建——包叶波等
基于发音特征的汉语普通话语音声学建模——颜永红等
基于发音特征的汉语声调建模方法及其在汉语语音识别中的应用——刘文举等1.1对声学建模单元加入位置信息
For instance, we'd have:
AA AA_B AA_E AA_I AA_Sfor (B)egin, (E)nd, (I)nternal and(S)ingletonand inthe case of silence
SIL SIL SIL_B SIL_E SIL_I SIL_S
仍然要注意,中英文的差别,中文声学建模单元可能不含有全部的_B _E _I _S2.输入特征
MFCC、fbank、PLP
使用对角协方差矩阵的GMM由于忽略了不同特征维度的相关性,MFCC更适合用来做特征
DNN/CNN可以对更好的利用这些相关性,把MFCC的DCT省略,使用fbank特征可以更多地降低WER
tips: Deep Learning更多是实验性质,解释多半是迎合实验现象
甚至直接从语音波形图上直接提取特征
IBM-Tara N. Sainath-2014-IMPROVEMENTS TO FILTERBANK AND DELTA LEARNING
Tara N. Sainath发表了一系列的CNN on Speech的文章,我觉得质量是CNN on Speech的文章中最好的
中文是带声调的语言,声调不同,差别很多,因此可以在特征上加入声调信息2014-A DNN-BASED ACOUSTIC MODELING OF TONAL LANGUAGE AND ITS APPLICATION TO MANDARIN PRONUNCIATION TRAINING2014-AUTOMATIC PHONETIC SEGMENTATION IN MANDARIN CHINESE BOUNDARY MODELS, GLOTTAL FEATURES AND TONE
Noise Robust feature?
LiDeng2013-An Overview of Noise-Robust Automatic Speech Recognition3.区分性技术
区别特征提取:LDA、MLLR、SAT、fbMMI
区分度模型训练:MMI、MPE、MCE、smbr
经验:并不是所有区分性技术都有正面效果4.多音字如何处理?
假设我们的文本标注如下:
spk001 我们 的 作品 为 第一名
发音词典如下:
的 d e0
的 d e4
的 d i2
为 w ei2
为 w ei4
的和为都是多音字,那么在模型训练阶段如何根据标注spk001联合phones的HMM模型呢?
有两种解决策略:
①唯一化处理:更改文本标注和发音词典,将多音字唯一化标注
如:
的1 d e0
的2 d e4
为1 w ei2
为2 w ei4
spk001 我们 的1 作品 为1 第一名
这样做的话,我们在解码阶段需要去除发音词典中的标识1、2,从而不会在解码结果中引入多余的1、2②自动处理:Kaldi可以将多种选择(多音)编入spk001的fst,在Align阶段根据音频特征选择phone的标号
这种处理可能不够精确,ML本来就不能100%准确,这点让人悲伤;
不过可能语料库的发音人并不能对所有的多音字都发正确的音,
如果使用①需要校对每一个含有多音字的音频发音,人工大大的;
英语单词也存在多音字,不过相比中文少得多,可参考:冯志伟-汉语拼音音节的歧义指数5.Noise Robust ASR
从特征提取、模型层面把噪声考虑进去 可参考:
综述文章:LiDeng2013-An Overview of Noise-Robust Automatic Speech Recognition6.Deep Learning[DNN/CNN替换GMM]
这一步“需要”先训练一个HMM+GMM,然后获得wav文件的alignment,即每一帧对应的phone->state
这样我们就为DNN准备好了train.data train.label
注:我们可以使用为GMM提取的特征,也可以重新从wav提取特征,需要注意的是窗口大小、帧移要与alignment匹配;
通常提取fbank特征作为DNN的输入,而且组合当前帧左右相邻的n帧成 2n+1帧特征作为输入
Dropout、ReLU
关于Dropout我在TIMIT做了不下20组实验,才看到WER的下降,更绝大多数文章的描述并不相同;
ReLU做了几组实验,没看到更低的WER,有待继续。
CNN
根据实验CNN相比DNN会有5%-10%的WER下降,卷积层不同的实现[FFT vs 矩阵乘积]性能会有差异,这一层计算量略大
Tara N. Sainath发表了一系列的CNN on Speech的文章,我觉得质量是CNN on Speech的文章中最好的
直接HMM+DNN混合训练
参考:2014-google-GMM-FREE DNN TRAINING
其他
SVD低秩逼近W矩阵7.在手机等资源受限设备
参考 雷欣 的两篇文章,针对数值存储、模型等做优化,在资源暂用与识别率下降方面做权衡1.2013-Accurate andCompact Large Vocabulary Speech Recognition on Mobile Devices2.FINE CONTEXT, LOW-RANK, SOFTPLUS DEEP NEURAL NETWORKS FOR MOBILE SPEECH RECOGNITION
[转]Kaldi语音识别相关推荐
- kaldi语音识别实战pdf_语音识别相关工具和资料分享
作者:帅帅家的人工智障 原创文章,转载请申请原作者同意 常见的语音相关工具很多,这里介绍几种常见的工具.主要有Kaldi.PyTorch-Kaldi.SpeechBrain.pykaldi.ESPne ...
- kaldi 语音识别
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 所以kaldi.cntk.tensorflow等支持深度学习的工具目前比较流行,k ...
- Kaldi 语音识别基础教程
Kaldi 介绍 Kaldi 是由 C++ 编写的语音识别工具,其目的在于为语音识别研究者提供一个研究和使用的平台. Kaldi 环境搭建 本文主要通过使用 Docker 和 Nvidia-docke ...
- kaldi教程_赠书 | 全球稀缺的Kaldi学习资料,《Kaldi语音识别实战》给补上了
刚刚过去的十年是语音技术发展的黄金十年.Kaldi的出现,被业内公认为极大地降低了语音识别技术学习与使用的门槛,成为广受欢迎的工具. Kaldi 项目发布不久,就吸引了国内外的大量用户,形成了一个活跃 ...
- Kaldi语音识别技术
一.参考资料 如何用Kaldi做语音识别? Kaldi官网 kaldi仓库 二.相关介绍 Kaldi是当前最流行的开源语音识别工具(Toolkit),旨在提供灵活且可扩展的组件,包括多种语音信号处理, ...
- Kaldi语音识别技术(三) ----- 完成L.fst的生成
Kaldi语音识别技术(三) ----- 完成L.fst的生成 文章目录 Kaldi语音识别技术(三) ----- 完成L.fst的生成 基础知识 一.运行环境准备 二.文件准备 lexicon.tx ...
- kaldi语音识别实战网盘_小米开源语音模型 KaldiONNX 转换工具,助力移动端部署!...
作者 | 小米开源团队 责编 | 胡巍巍 近日,小米对外开源了Kaldi模型到ONNX模型的转换工具Kaldi-ONNX,有望进一步促进Kaldi生态与深度学习生态间的互通. 同时,配合移动端深度学习 ...
- 基于《Kaldi语音识别》技术及开源语音语料库分享
前言: 数据堂自AI开源计划发起,面向高校和科研机构首次开源的[1505小时中文普通话语音数据集],该数据集句标注准确率达到了98%,得到了很多开发者的认可. 不仅如此,数据堂基于此开源数据集还精选出 ...
- Kaldi语音识别技术(五) ----- 特征提取
Kaldi语音识别技术(五) ----- 特征提取 文章目录 Kaldi语音识别技术(五) ----- 特征提取 一.识别流程 二.MFCC特征提取概述 三.文件格式 文件格式说明 提取部分数据 修复 ...
最新文章
- JavaScript小记
- Java 获得方法调用者名称
- 地理(GIS)教学神器:气象地球生成器
- volatile实现原理
- c语言程序改错输入5结果为15,《C语言程序设计教学课件》程序改错(自我总结).doc...
- 登录个税显示局端服务器显示,天津金税三期个人所得税扣缴系统
- 人工智能自动修复图片,模糊图片秒变高清
- 使用c++filt工具demangle C++符号
- 汇编语言编写程序从1加到100要求使用循环结构。
- java用户登录进入系统_Java CRM系统用户登录功能实现代码实例
- 计算机保研面试中,都有哪些令人窒息的问题?
- Kalibr标定时卡在Extracting calibration target corners的问题
- aria2 linux 手动安装,Linux安装aria2(示例代码)
- Plotly Express 详细使用指南,20组案例从入门到进阶(附源代码)
- 【微信小程序——云音乐播放器】
- 数据结构之二叉树的实现
- qq登录 适用于 laravel
- oracle导出1455,oracle 11g导出数据时报ORA 1455错误的处理方法
- Codex Network经济模型篇 (PoA、PoV、CPoA)
- 2-3 golang项目中benchmark的写法