Kaldi特征提取之-FBank
来源:互联网 发布:刚开淘宝怎么刷信誉 编辑:程序博客网 时间:2024/06/05 18:51
Kaldi特征提取之-FBank
背景
- 人耳对声音频谱的响应是非线性的,经验表明:如果我们能够设计一种前端处理算法,以类似于人耳的方式对音频进行处理,可以提高语音识别的性能。FilterBank分析就是这样的一种算法。FBank特征提取要在预处理之后进行,这时语音已经分帧,我们需要逐帧提取FBank特征。
提取FBank特征
傅里叶变换
我们分帧之后得到的任然是时域信号,为了提取FBank特征,首先需要将时域信号转换为频域信号。傅里叶变换可以将信号从时域转到频域。傅里叶变换可以分为连续傅里叶变换和离散傅里叶变换,因为我们用的是数字音频(而非模拟音频),所以我们用到的是离散傅里叶变换。数学公式如下:公式比较难以理解,可以想象一下傅里叶级数,一个函数可以用其他基本函数组合逼近。从公式可以看出,傅里叶变化的计算复杂度较高,因此我们通常使用的是快速傅里叶变换(fft)。X(k)=∑j=1Nx(j)w(j−1)(k−1)N - 关于傅里叶变换:
- 实数输入,复数输出
- 傅里叶变换的结果X(k) 与 X(N-k)为共轭复数,可以利用这个性质节省存储
- 快速傅里叶通常有基2、基4、分裂基(Kaldi中支持分裂基)
- 关于信号采样率和信号频率:
- 信号频率 : 组合产生复杂信号的简单信号的频率,通常简单信号平率范围很广
- 采样频率 : 模拟到数字的转换过程中,需要对模拟信号进行采样,每秒内的采样点数量就是采样频率
- 关于Nyquist定理:
- Nyquist定理: 如果想要从数字信号无损转到模拟信号,我们需要以最高信号频率的2倍的采样频率进行采样。通常人的声音的平率大概在3kHz~4kHz ,因此语音识别通常使用8k或者16k的wav提取特征。16kHz采样率的音频,傅里叶变换之后的频率范围为0-8KHz。
- 关于傅里叶变换:
计算能量谱
- 傅里叶变换完成后,我们的到的是频域信号,每个频带范围的能量大小不一,不同音素的能量谱不一样。有两种计算方法:
- a. magnitude = sqrt(real*real + image*image);
- b. power = real * real + image*image
注意:htk同时支持这两种方式,kaldi只支持第二种。
- 傅里叶变换完成后,我们的到的是频域信号,每个频带范围的能量大小不一,不同音素的能量谱不一样。有两种计算方法:
Mel滤波
- Mel滤波的过程如下图:
图中m表示不同频率处的能量,三角窗口表示滤波窗口。三角窗口可以覆盖从0到Nyquist的整个频率范围,通常我们会设定频率上限和下限,屏蔽掉某些不需要或者有噪声的频率范围。三角形的数量表示Mel滤波之后特征向量的维度。
工具 下限 上限 维度 kaldi low_freq high_freq num_bins htk klo khi numChansM(b)=∑j=1bjmelb(j)∗mb(j) - 关于这一部分的详细情况,每个三角形对应的滤波系数可以查看Mel系数计算, 滤波计算参考滤波计算。
- mel倒谱公式
Mel(f)=2595∗log10(1+f700) - 注意:在kaldi中可能看到的公式如下图:
这是因为这里的logf是自然对数。2595 / 1127 约等于loge(a)/log10(a) 。
- Mel滤波的过程如下图:
- 取Log
Mlog(b)=log(M(b))
资源
- matlab代码
- wav
参考
- 时域
- 频域
- 傅里叶变换
- 快速傅里叶变换
- 信号频率
- 采样频率
- Nyquist定理
- mel系数计算
- mel滤波计算
阅读全文
2 0
- Kaldi特征提取之-FBank
- Kaldi特征提取之-预处理
- Kaldi特征提取之-MFCC
- Kaldi特征提取之-VAD
- kaldi中的特征提取
- 利用kaldi提取mfcc特征
- kaldi中特征提取,C++接口设计
- Kaldi脚本分析(2)——特征提取
- 使用kaldi进行特征提取时的问题记录
- Kaldi DNN的特征提取和解码的连接操作
- 特征提取之Haar特征
- 特征提取之LBP
- 特征提取之PCA
- 特征提取之——Haar特征
- 图像特征提取之(三) --- HOG特征
- 图像特征提取之LBP特征
- 图像特征提取之LBP特征
- 图像特征提取之HOG特征
- ASP.NET MVC 程序包控制台 执行 Enable-Migrations 报错
- shell脚本 将非9图和不在黑名单中的png转webp
- unity开发游戏的一些体会
- angularjs 单列排序+模糊查询
- Maven Run As,Maven Build....出错
- Kaldi特征提取之-FBank
- 2017.9.21 所驼门王的宝藏 思考记录
- 【leetcode】整型翻转问题integer reverse
- xlistview加点
- HTTP(一)
- struts2笔记
- TASKCTL设计作业流时该用定时器还是流程
- java面向对象的特性 封装 继承 多态
- 《点到平面的距离公式》推导