kaldi简介

kaldi

  • 学习thchs30的脚本:https://github.com/kaldi-asr/kaldi/tree/master/egs/thchs30/s5 中文语音识别

  • 学习kaldi的话,先从hmm-gmm入手比较好,

    • steps/train_delta.sh build-tree命令那部分的代码对应htk book第十章tree-based clustering, gmm-est命令那部分的代码对应htk book第八章的Parameter Re-Estimation Formulae;
  • steps/train_fmllr.sh, steps/decode.sh这些脚本都是基于hmm-gmm模型。
  • 神经网络
    • nnet1 hmm-dnn架构,相关的知识可以查阅微软俞栋2009-2013期间发表的论文
    • nnet2 同样是hmm-dnn架构,但是使用的是dan povey团队设计的NSGD算法,支持多线程并行训练,学习nnet2可以追dan povey从2012年之后的论文
    • nnet3 chain model,以及其他的神经网路结构(rn,cnn,lstm)的学习

扩展阅读

语音识别 - 资源整合

数据

见 audio/dataset

书籍

code

课程

学习如何提取特征,怎样实现HMM训练,DNN怎么构建,如何去HVite

论文集

  • Dan Povey的论文,多看Kaldi原文档,多逛Kaldi论坛

博客

FAQ

语音唤醒会用VAD吗?

一般不用。唤醒词、非唤醒词、噪音。 (不靠谱的回答)

语音唤醒是识别任务,还是分类任务?

两者都有,triger不固定的时候,或者triger自定义时,识别更靠谱。

语音唤醒程序运行在DSP芯片上?还是系统内?

通常把语音唤醒算法porting到DSP芯片。包含三个模块:

  1. 特征提取
  2. 声学模型计算,GMM-DNN。
  3. 解码

MFCC(Mel频率倒谱系数)对应的物理含义是什么?
https://www.zhihu.com/question/21302276

FAQ

用深度学习进行语音识别为什么还要算mfcc?

  • 特征提取本身,是一种数据降维手段,可以有效的降低后续模式识别系统的复杂度/运算量。
  • 深度学习确实可以自动提取特征,可以直接用pcm码进行训练,但这样会面临一些问题,如维度太高
  • 维度高,一方面计算量大,一方面模型也更大,容易过拟合

语音识别业界也一致在尝试使用深度学习从原始音频当中提取特征去替代mfcc和mel fbank。

参考:https://www.zhihu.com/question/67487899

声音的传播实质上是声波的传播过程,声波作用到人耳所引起的感觉,称为声音,可见,声波是声音传播的本质。

什么是声波

时域

频域

对于实值函数,函数的傅里叶级数可以写成:

[ {\displaystyle f(x)={\frac {a_{0}}{2}}+\sum {n=1}^{\infty }\left[a{n}\cos(nx)+b_{n}\sin(nx)\right]} ]

时域 频域

为什么要采用频域分析?

因为时域不够鲁棒,

音频文件的保存

采集的音频数据是时域的

音频文件的保存,是按照时域保存的,还是频域?为什么

时域

2. 声波的描述参数

相应于振动,声波也分为周期性声波和非周期性声波,最简单的周期声波是单频的声波,也称为纯音。它是由简谐振动产生的频率固定、并按正弦变化的声波。与单频音相对应的是复合声,复合声(也称为复声)是由一些频率不同的单频音组成,由傅立叶变换可知,可将任何复声分解成一系列单频音。

集中质量-弹簧模型的振动形式为简谐振动,我们都知道其运动方程的正弦表达形式。同样,单频声波也可以用这个函数来表示,即

声音的三个要素是音调、音强和音色。声波或正弦波有三个重要参数:频率 ω0、幅度A n 和相位ψn ,这也就决定了音频信号的特征。

对于声波而言,除了以上参数之外,还有另外两个参数:波长波数

正弦波的组合可以表示信号

波长是指周期声波中相邻的等声压点之间的距离,通常用λ表示。波长等于声速c与声波频率f之比,也等于声速c与周期T之积,即

web.qq Smart QQ

发送消息

https://d1.web2.qq.com/channel/send_qun_msg2f

r:{“group_uin”:477667670,”content”:”[\”h\”,[\”font\”,{\”name\”:\”宋体\”,\”size\”:10,\”style\”:[0,0,0],\”color\”:\”000000\”}]]”,”face”:669,”clientid”:53999199,”msg_id”:61090003,”psessionid”:”8368046764001d636f6e6e7365727665725f77656271714031302e3133332e34312e383400001ad00000066b026e040015808a206d0000000a406172314338344a69526d0000002859185d94e66218548d1ecb1a12513c86126b3afb97a3c2955b1070324790733ddb059ab166de6857”}

r:{“group_uin”:477667670,”content”:”[\”hello\”,[\”font\”,{\”name\”:\”宋体\”,\”size\”:10,\”style\”:[0,0,0],\”color\”:\”000000\”}]]”,”face”:669,”clientid”:53999199,”msg_id”:61090004,”psessionid”:”8368046764001d636f6e6e7365727665725f77656271714031302e3133332e34312e383400001ad00000066b026e040015808a206d0000000a406172314338344a69526d0000002859185d94e66218548d1ecb1a12513c86126b3afb97a3c2955b1070324790733ddb059ab166de6857”}

返回
{“errCode”:0,”msg”:”send ok”}

发送的明文啊,post的明文。

接收消息

https://d1.web2.qq.com/channel/poll2
每隔