Kaldi特征提取之-预处理
来源:互联网 发布:php出生以来的时间戳 编辑:程序博客网 时间:2024/06/01 08:45
Kaldi特征提取之-预处理
背景
- 本质上语音信号是一维的时间信号,随时间上下波动。现实中,人们再说话时会受到各种音素的干扰,为了进一步进行处理,我们必须进行必要的预处理以便之后的特征提取。诸如FBank,MFCC,PLP等都需要经过预处理步骤。本章将假设语音的格式为wav。
预处理
整个预处理过程如下图所示:
分帧
从图中可以看出我们需要将不定长的音频切分成固定长度的小段,这一步称为分帧。分帧的原因在于语音的长度通常不同,而我们无法对不同长度的序列进行建模(或者建模难度太大),但对长度固定的小段音频建模相对容易的多。参数 kaldi参数 常用值 意义 WINDOWSIZE frame_length_ms 25ms(毫秒) 每一帧的时间长度 TARGETRATE frame_shift_ms 10ms(毫秒) 帧之间移动过的时间长度注意:段与段之间会有一些重叠的部分。
根据这些参数以及wav的一些属性,我们可以计算每段wav分帧之后有多少段以及每帧有多少个数。假设wav长度为1s,采样率 为16kHz,则这段wav可以切分为 (1*1000) / 10 = 100帧,每帧有(25 / 1000) * 16kHz = 400个数。
均值归一
在模拟信号到数字信号的转换过程中可能会增加一个DC偏移,表现为语音波形整体向上或者向下移动。通常,移除DC偏移是以帧为单位进行的,而非整段wav进行。预增强
预增强以帧为单位进行,目的在于加强高频。数学公式如下:k是预增强系数,范围为[0, 1),常用0.97,N是每一帧的长度,从公式可以看出每一帧的第一个数需要特殊处理。s(n)=s(n)−k∗s(n−1),∀n∈N 加窗
加窗的目的在于减小帧与帧之间的过度更加平滑,本质上使用一个类似于sin、cos的对称函数与帧做卷积,Hamming窗公式如下图:注意:同时使用预增强 和 加窗同时使用时,要首先进行预增强。
添加随机噪声
有时候我们需要进行数据增强,会手动合成一些音频。某些人工合成(使用软件)的音频可能会造成一些数字错误,诸如underflow或者overflow。 这种情况下,通过添加随机噪声可以解决这一类问题。公式如下:q用于控制添加噪声的强度,rand() 产生[-1.0, 1.0)的随机数。s(n)=s(n)+q∗rand()
注意:Kaldi中是在分帧之后的下一步添加随机噪声。配套matlab代码
matlab代码
用到的wav术语汇总
采样率:每秒钟采集的数据的个数
帧:音频切分后的一小段称为一帧
帧长:每一帧的时间长度
帧移:帧与帧之间移动的时间长度
参考
- wav
- 采样率
- Window function
- htkbook 3.4.1, Speech Input/Output, Speech Signal Processing
阅读全文
0 0
- Kaldi特征提取之-预处理
- Kaldi特征提取之-FBank
- Kaldi特征提取之-MFCC
- Kaldi特征提取之-VAD
- kaldi中的特征提取
- 利用kaldi提取mfcc特征
- kaldi中特征提取,C++接口设计
- spark学习之数据预处理和特征提取
- Kaldi脚本分析(2)——特征提取
- 使用kaldi进行特征提取时的问题记录
- Kaldi DNN的特征提取和解码的连接操作
- Spark之特征预处理
- 语音信号预处理及特征参数提取
- 特征提取之Haar特征
- 特征提取之LBP
- 特征提取之PCA
- 数据预处理之特征标准化
- 数据预处理之特征选择
- CCF 201709-04
- springboot\maven 页面图片展示商品实现分页
- java.lang.NumberFormatException: multiple points已解决
- 关于CAS服务端登录前ajax访问后台方法被拦截的配置
- kafka+spark streaming代码实例(pyspark+python)
- Kaldi特征提取之-预处理
- bugku web8
- php 利用phpmailer 发送邮件
- CGI,FastCGI和PHP-FPM之间的关系和区别。
- 控制物体位移
- react项目的组件库antd-mobile
- 五分钟学GIS | 构建Jupyter镜像开发空间大数据
- Linux笔记(4):Linux命令
- django起步