三、语音信号处理
2020-02-03 04:53
661 查看
(一)FFmpeg:可以实现各种音频格式键的转换或从视频中提取音频。
# 后面用的时候自己查命令
(二)标注语音
- 字母表:IPA或SAMPA
- 开源的PRAAT(http://www.praat.org/)可以标出音节边界。
(三)端点检测:自动检测出语音的起始点及结束点。
书中提到采用双门限比较法,以短时能量E和短时平均过零率Z作为特征,结合两者的优点。
(四)动态时间规整
- DTW(Dynamic Time Warping)算法:基于动态规划的思想,解决了发音长短不一的模板匹配问题。简单来说,就是构建一个邻接矩阵,寻找最短路径和。(循环等式:output[i][j] = Min(Min(output[i-1][j], output[i][j-1]), output[i-1][j-1]) + distance[i][j])
(五)傅里叶变换
将音频数据提取到一个数组后,可以将N个数据样本传递给计算离散傅里叶变换的函数(或更有效地快速傅里叶变换)。
- 离散傅里叶变换(discrete fourier transform, DFT)
音频信号可以分解为不同振幅、频率、相位的正弦波叠加。波的相位用复数来表示。离散傅里叶变换总体上是一个将n个复数的向量映射到n个复数的另一个向量的函数。使用基于0的索引,令x(n)表示输入向量的第n个元素,并让X(m)表示输出向量的第m个元素,然后基本的离散傅里叶变换由以下公式给出:(等式变换用到了欧拉公式)
其中,向量x表示各个时间点的信号水平;向量X表示各个频率下的信号水平。上述公式的含义是,频率m处的信号水平等于每个时间n的信号水平乘以复数指数和。
# 代码后面自己查,公式还要做变化才行。
- 快速傅里叶变换(FFT)
- Cooley-Tukey算法(最常用):以分治法为策略,递归地将长度为N=N1N2的离散傅里叶变换分解为长度为N1的N2个较短序列的离散傅里叶变换,以及与O(N)个旋转因子的复数乘法。
# 公式、代码后面自己查。
(六)MFCC特征
- 以MFCC为例,对语音信号处理如下:(与论文《Speaker Recognition by Machines and Humans: A tutorial review》P84-P85所提到的步骤一致)
- 输入16kHz采样音频。
- 以一个25ms的窗口(每次移动10ms将输出一个向量序列)产生数值序列。
- 乘以Windows函数。例如,海明距离。
- 执行快速傅里叶变换。
- 在每个频率桶中记录能量,也就是计算每个频率区间的能量。
- 执行离散余弦变换(DCT),得到“倒谱”。
- 保留倒谱的前13个系数。
【注:深度学习中,可以直接读取声音的波形文件,不用MFCC特征】
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 语音信号处理概述及流程
- 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
- 数字语音信号处理的举例
- 关于处理语音信号的python库 librosa的安装
- 语音信号的预加重和加窗处理
- 数字语音信号处理学习笔记——绪论(1)
- 语音信号处理相关的书籍
- 语音信号处理之DTW
- 语音信号处理学习--隐马尔科夫模型
- 数字语音信号处理学习笔记——语音信号的数字模型(1)
- 【VS开发】【智能语音处理】语音信号处理之(四)梅尔频率倒谱系数(MFCC)
- 语音信号处理之(一)动态时间规整(DTW)
- 语音信号处理—MFCC特征提取(matlab代码)
- 语音信号处理之(四)梅尔频率倒谱系数(MFCC)
- 数字信号处理--语音信号处理
- 语音信号处理笔记
- 语音信号处理之(三)矢量量化(Vector Quantization)
- 语音信号处理学习方法
- 语音信号处理之(四)梅尔频率倒谱系数(MFCC)
- MATLAB语音信号处理--函数(一)