语音信号特征处理--Fbank\MFCC
目录
- 数字信号处理基础
- 模拟信号转化为数字信号(ADC)
- 频率混叠
- 奈奎斯特采样定理
- 离散傅里叶变换
- Fbank和MFCC特征提取
- step1:预加重
- step2:加窗分帧
- step3:DFT
- step4:梅尔滤波器组和对数操作
- 动态特征计算
- 总结
- Fbank和MFCC样例代码
代码地址:https://gitee.com/liangcd/speech_learning/tree/master/feature_extraction
数字信号处理基础
模拟信号转化为数字信号(ADC)
现实生活中遇到的大多数信号都是连续信号,而计算机只能处理离散信号,因此需要通过采样量化转化为数字信号。
以正弦波为例,x(t)=sin(2πf0t)x(t)=sin(2\pi f_0t)x(t)=sin(2πf0t),其中f0f_0f0是信号本身的频率,单位Hz。若我们对其每间隔tst_sts秒进行一次采样,并使用一定范围的离散数值表示采样值,则得到采样后信号x(n)=sin(2πf0nts)x(n)=sin(2\pi f_0nt_s)x(n)=sin(2πf0nts),tst_sts为采样周期,fs=1/tsf_s=1/t_sfs=1/ts采样频率,n=0,1...n=0,1...n=0,1...为离散整数序列。
问题:如果给定一个正弦波采样后的序列,可以唯一恢复出一个连续的正弦波吗?
频率混叠
不同频率的正弦波,经采样后,完全有可能出现相同的离散信号,为什么?
x(n)=sin(2πf0nts)=sin(2πf0nts+2πm)=sin(2π(f0+mnts)nts)\begin{aligned} & x(n)=\sin \left(2 \pi f_{0} n t_{s}\right) \\ =& \sin \left(2 \pi f_{0} n t_{s}+2 \pi m\right) \\ =& \sin \left(2 \pi\left(f_{0}+\frac{m}{n t_{s}}\right) n t_{s}\right) \end{aligned} ==x(n)=sin(2πf0nts)sin(2πf0nts+2πm)sin(2π(f0+ntsm)nts)
如果m=knm=knm=kn,k为整数(一般为常数),因为n为整数,m也是整数,若m=kn满足,则k必须为整数。替换以上公式为:
x(n)=sin(2π(f0+kfs)nts)\mathrm{x}(\mathrm{n})=\sin \left(2 \pi\left(\mathrm{f}_{0}+\mathrm{kf}_{\mathrm{s}}\right) \mathrm{nt}_{\mathrm{s}}\right) x(n)=sin(2π(f0+kfs)nts)
从公式可以看出原始频率f0f_0f0和f0+kfsf_0+kf_sf0+kfs两个信号对应的离散信号是相同的。这种现象是频率混叠,也解释了上述的问题。如何避免频率混叠?
奈奎斯特采样定理
采样频率大于信号中最大频率的两倍,fs/2≥fmaxf_s / 2 \geq f_{max}fs/2≥fmax,即原始信号的一个周期内,至少要采样两个点,才能有效杜绝频率混叠问题。
问题:对一个采样率为16k的离散信号进行下采样,下采样到8k,为什么需要首先进行低通滤波?
根据奈奎斯特定律,采样率为16k的离散信号中可能存在频率不超过8k的信号,下采样到8k,音频中只允许存在最大频率不超过4kHz的信号,所以需要首先进行低通滤波,过滤掉超过4kHz的信号。
离散傅里叶变换
DFT将时域信号变换到频域,分析信号中频率成分,时域离散且周期的吸纳后可以进行DFT,非周期离散信号需要进行周期延拓。
DFT定义:给定一个长度为N的时域离散信号x(n),对应的离散频域序列X(m)为:X(m)=∑n=0N−1x(n)e−j2πnm/N,m=0,1,2,…N−1\mathrm{X}(\mathrm{m})=\sum_{\mathrm{n}=0}^{\mathrm{N}-1} \mathrm{x}(\mathrm{n}) \mathrm{e}^{-\mathrm{j} 2 \pi \mathrm{nm} / \mathrm{N}}, \quad \mathrm{m}=0,1,2, \ldots N-1X(m)=∑n=0N−1x(n)e−j2πnm/N,m=0,1,2,…N−1。其中,m=0,1,2...N−1m=0,1,2...N-1m=0,1,2...N−1为频率索引,X(m)为DFT的第m个输出。
根据欧拉公式,DFT的公式还可以为:
X(m)=∑n=0N−1x(n)[cos(2πnmN)−jsin(2πnmN)]\mathrm{X}(\mathrm{m})=\sum_{\mathrm{n}=0}^{\mathrm{N}-1} \mathrm{x}(\mathrm{n})\left[\cos \left(\frac{2 \pi \mathrm{nm}}{\mathrm{N}}\right)-\mathrm{j} \sin \left(\frac{2 \pi \mathrm{nm}}{\mathrm{N}}\right)\right] X(m)=n=0∑N−1x(n)[cos(N2πnm)−jsin(N2πnm)]
DFT本质上是一个线性变换:X⃗=Fx⃗\vec{X}=\boldsymbol{F} \vec{x}X=Fx
[X(0)X(1)X(2)⋮X(N−1)]=[11⋯11e−j2π/N⋯e−j2π(N−1)/N1e−j2π⋅2/N⋯e−j2π⋅2(N−1)/N⋮⋮⋮⋮1e−j2π⋅(N−1)/N⋯e−j2π⋅(N−1)(N−1)/N][x(0)x(1)x(2)⋮x(N−1)]\left[\begin{array}{c} X(0) \\ X(1) \\ X(2) \\ \vdots \\ X(N-1) \end{array}\right]=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ 1 & e^{-j 2 \pi / N} & \cdots & e^{-j 2 \pi(N-1) / N} \\ 1 & e^{-j 2 \pi \cdot 2 / N} & \cdots & e^{-j 2 \pi \cdot 2(N-1) / N} \\ \vdots & \vdots & \vdots & \vdots \\ 1 & e^{-j 2 \pi \cdot(N-1) / N} & \cdots & e^{-j 2 \pi \cdot(N-1)(N-1) / N} \end{array}\right]\left[\begin{array}{c} x(0) \\ x(1) \\ x(2) \\ \vdots \\ x(N-1) \end{array}\right] ⎣⎢⎢⎢⎢⎢⎡X(0)X(1)X(2)⋮X(N−1)⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡111⋮11e−j2π/Ne−j2π⋅2/N⋮e−j2π⋅(N−1)/N⋯⋯⋯⋮⋯1e−j2π(N−1)/Ne−j2π⋅2(N−1)/N⋮e−j2π⋅(N−1)(N−1)/N⎦⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡x(0)x(1)x(2)⋮x(N−1)⎦⎥⎥⎥⎥⎥⎤
DFT性质:
- 对称性,对于实数信号有,X(m)=X∗(N−m)\mathrm{X}(\mathrm{m})=\mathrm{X}^{*}(\mathrm{~N}-\mathrm{m})X(m)=X∗( N−m)。
证明:
X(N−m)=∑n=0N−1x(n)e−j2πn(N−m)/N\mathrm{X}(\mathrm{N}-\mathrm{m})=\sum_{\mathrm{n}=0}^{\mathrm{N}-1} \mathrm{x}(\mathrm{n}) \mathrm{e}^{-\mathrm{j} 2 \pi \mathrm{n}(\mathrm{N}-\mathrm{m}) / \mathrm{N}}X(N−m)=∑n=0N−1x(n)e−j2πn(N−m)/N
=∑n=0N−1x(n)e−j2πnN/Nej2πnm/N=∑n=0N−1x(n)e−j2πnej2πnm/N=\sum_{\mathrm{n}=0}^{\mathrm{N}-1} \mathrm{x}(\mathrm{n}) \mathrm{e}^{-\mathrm{j} 2 \pi \mathrm{n} \mathrm{N} / \mathrm{N}} \mathrm{e}^{\mathrm{j} 2 \pi \mathrm{nm} / \mathrm{N}}=\sum_{\mathrm{n}=0}^{\mathrm{N}-1} \mathrm{x}(\mathrm{n}) \mathrm{e}^{-\mathrm{j} 2 \pi \mathrm{n}} \mathrm{e}^{\mathrm{j} 2 \pi \mathrm{nm} / \mathrm{N}}=∑n=0N−1x(n)e−j2πnN/Nej2πnm/N=∑n=0N−1x(n)e−j2πnej2πnm/N
因为 e−j2πn=cos(2πn)−jsin(2πn)=1\mathrm{e}^{-\mathrm{j} 2 \pi \mathrm{n}}=\cos (2 \pi \mathrm{n})-\mathrm{j} \sin (2 \pi \mathrm{n})=1e−j2πn=cos(2πn)−jsin(2πn)=1
故X (N−m)=∑n=0N−1x(n)ej2πnm/N=X∗(m)(\mathrm{N}-\mathrm{m})=\sum_{\mathrm{n}=0}^{\mathrm{N}-1} \mathrm{x}(\mathrm{n}) \mathrm{e}^{\mathrm{j} 2 \pi \mathrm{nm} / \mathrm{N}}=\mathrm{X}^{*}(\mathrm{~m})(N−m)=∑n=0N−1x(n)ej2πnm/N=X∗( m)
这个性质很重要,DFT之后的离散频率序列的幅度具有对称性,因此在进行N点DFT之后,只需要保留前N/2+1个点。语音信号特征提取时,一般使用512点DFT,由于对称性,我们只需保留前257个有效点。
X(m)实际上表示的是"谱密度",通俗的讲即单位带宽上有多少信号存在。如果对一个幅度为A实正弦波进行N点DFT,则DFT之后,对应频率上的幅度M和A之间的关系是:M=A2N=AN2M=\frac{A}{\frac{2}{N}}=\frac{A N}{2}M=N2A=2AN。
DFT的线性。如果 xsum(n)=x1(n)+x2(n)\mathrm{x}_{\mathrm{sum}}(\mathrm{n})=\mathrm{x}_{1}(\mathrm{n})+\mathrm{x}_{2}(\mathrm{n})xsum(n)=x1(n)+x2(n), 则对应的频域上有: Xsum(m)=X1(m)+X2(m)\mathrm{X}_{\mathrm{sum}}(\mathrm{m})=\mathrm{X}_{1}(\mathrm{~m})+\mathrm{X}_{2}(\mathrm{~m})Xsum(m)=X1( m)+X2( m)
时移性。对x(n)左移k个采样点, 得至 1xshift (n)=x(n−k)1 \mathrm{x}_{\text {shift }}(\mathrm{n})=\mathrm{x}(\mathrm{n}-\mathrm{k})1xshift (n)=x(n−k), 对 xshift (n)\mathrm{x}_{\text {shift }}(\mathrm{n})xshift (n) 进行DFT,有Xshift (m)=ej2πkmNX(m)\mathrm{X}_{\text {shift }}(\mathrm{m})=\mathrm{e}^{\frac{\mathrm{j} 2 \pi \mathrm{km}}{\mathrm{N}}} \mathrm{X}(\mathrm{m})Xshift (m)=eNj2πkmX(m)。
频率分辨率:fs/Nf_s / Nfs/N,表示最小的频率间隔。当N越大时,频率分辨率越高,在频域上,第m个点表示的分析频率为:fanalysis (m)=mNfs\mathrm{f}_{\text {analysis }}(\mathrm{m})=\frac{\mathrm{m}}{\mathrm{N}} \mathrm{f}_{\mathrm{s}}fanalysis (m)=Nmfs。从这个角度,我们可以理解为X(m)的幅值体现了原信号中频率成分为mNfs\frac{\mathrm{m}}{\mathrm{N}} \mathrm{f}_{\mathrm{s}}Nmfs的信号强度。
为了提高DFT频率轴的分辨率,而不影响原始信号的频率成分。我们可以将时域长度为N的信号补0,增加信号的长度,从而提高频率轴的分辨率。如,在语音特征提取阶段,对于16k采样率的信号,一帧语音信号长度为400个采样点,为了进行512的FFT,通常将400个点补0,得到512个采样点,最后只需要前257个点。
快速傅里叶变换,基本思想是把原始信号的N点序列,以此分解成一系列的短序列。充分利用DFT计算式中指数因子具有的对称性和周期性,进而求出这些短序列相应的DFT并进行适当组合,达到删除重复计算,减少乘法运算和简化结构的目的。
Fbank和MFCC特征提取
提取流程:
Fbank和MFCC特征目前仍是主要使用的特征,虽然有些工作尝试在语音识别任务上对波形建模,但是效果并没有超过基于频域的特征。
step1:预加重
为什么需要预加重?
提高信号高频部分的能量,高频信号在传递过程中,衰减较快,但是高频部分又蕴含很多对语音识别有利的特征。
预加重滤波器是一个一阶高通滤波器,给定时域输入信号x[n]x[n]x[n],预加重之后的信号为:y[n]=x[n]−αx[n−1]y[n]=x[n]-\alpha x[n-1]y[n]=x[n]−αx[n−1],其中0.9≤α≤1.00.9\leq \alpha \leq 1.00.9≤α≤1.0。
通俗解释:如果信号x是低频信号(变化缓慢),那么x[n]x[n]x[n]和x[n−1]x[n-1]x[n−1]的值应该很接近,当α\alphaα接近1的时候,x[n]−αx[n−1]x[n]-\alpha x[n-1]x[n]−αx[n−1]接近0,此信号的幅度将大大抑制;如果信号x是高频信号(变化很快),那么x[n]x[n]x[n]和x[n−1]x[n-1]x[n−1]的值相差很大,x[n]−αx[n−1]x[n]-\alpha x[n-1]x[n]−αx[n−1]的值不会趋近0,此信号的幅度还能保持。
step2:加窗分帧
- 为什么需要加窗分帧?
- 语音信号是非平稳信号,其统计属性是随着时间变化的,以汉语为例,一句话中包含很多声母和韵母,不同的拼音,发音的特点也是明显不一样。
- 语音信号又具有短时平稳的特性,比如一个声母或者韵母,往往只会持续几十到几百毫秒,在一个发音单元里,语音信号表现出明显的稳定性,规律性。
- 在进行语音识别的时候,对于一句话,识别的过程是以较小的发音单元(音素,字,字节)为单位进行识别,因此采用滑动窗口提取短时片段。
一般对于采样率为16kHz的信号,帧长、帧移一般为25ms、10ms。
分帧的过程,在时域上,即用一个窗函数和原始信号进行相乘,y[n]=w[n]x[n]y[n]=w[n]x[n]y[n]=w[n]x[n],常见的窗函数有矩形窗、汉明窗等。
问题:为什么不直接使用矩形窗?
加窗的过程实际上是在时域上将信号截断,窗函数与信号在时域相乘,就等于对应的频域表示进行卷积,矩形窗主瓣窄,但是旁瓣较大,将其与原始信号的频域进行卷积会导致频率泄露。
step3:DFT
将上一步分帧后的语音帧,由时域变换到频域,取DFT系数的模,得到谱特征。
过程:
加窗分帧
将每一帧信号进行DFT(FFT),如第t帧,DFT系数为Xt(m)X_t(m)Xt(m),m=0,1,…N
将每一帧DFT的系数按照时间顺序排列,得到一个矩阵Y∈CT∗N,Y \in C^{T * N}, \quadY∈CT∗N, 且Y[t,m]=Xt(m)Y[\mathrm{t}, \mathrm{m}]={X}_{\mathrm{t}}(\mathrm{m})Y[t,m]=Xt(m)
语谱图是一个三维图,横轴表示时间(t),纵轴表示频率,颜色的深浅表示当前频点上幅度的大小。
step4:梅尔滤波器组和对数操作
DFT得到了每个频带上信号的能量,但是人耳对频率的感知不是等间隔的,近似于对数函数。
将线性频率转化为梅尔频率,梅尔频率和线性频率的转换关系:mel(f)=2595log10(1+f700)\operatorname{mel}(\mathrm{f})=2595 \log _{10}\left(1+\frac{\mathrm{f}}{700}\right)mel(f)=2595log10(1+700f)
梅尔三角滤波器:根据起始频率、中间频率和截止频率,确定各滤波器系数:
filterbankm(k)={k−f(m−1)f(m)−f(m−1),f(m−1)≤k<f(m)f(m+1)−kf(m+1)−f(m),f(m)<k≤f(m+1)filterbank _{m}(k)=\left\{\begin{array}{l} \frac{k-f(m-1)}{f(m)-f(m-1)}, f(m-1) \leq k<f(m) \\ \frac{f(m+1)-k}{f(m+1)-f(m)}, f(m)<k \leq f(m+1) \end{array}\right. filterbankm(k)={f(m)−f(m−1)k−f(m−1),f(m−1)≤k<f(m)f(m+1)−f(m)f(m+1)−k,f(m)<k≤f(m+1)
梅尔滤波器组设计:
确定滤波器个数P
根据采样率fsf_sfs,DFT点数N,滤波器个数P,在梅尔域上等间隔的产生每个滤波器的起始频率、中间频率和截止频率,注意,上一个滤波器的中间频率为下一个滤波器的起始频率。
将梅尔域上每个三角滤波器的起始、中间和截止频率转换为线性频率域,并对DFT之后的谱特征进行滤波,得到P个滤波器组能量,进行log操作,得到Fbank特征。
MFCC特征在Fbank特征的基础上继续进行IDFT变换等操作。
倒谱分析
频域信号可以分解为谱包络和谱细节的乘积,不同因素的谱包络和共振峰具有区分性。X[m]=H[m]E[m]X[m]=H[m]E[m]X[m]=H[m]E[m]。
步骤:
∣X[m]∣=∣H[m]∣∣E[m]|X[m]| = |H[m]||E[m]∣X[m]∣=∣H[m]∣∣E[m]
log∣X[m]∣=log∣H[m]∣+log∣E[m]∣log|X[m]| = log|H[m]| + log|E[m]|log∣X[m]∣=log∣H[m]∣+log∣E[m]∣
两边进行IDFT(此处为DCT变换)
IDFT之后的第1~K个点,为k维MFCC特征,c[k]=∑m=0N−1(log∣X[m]∣)ej2πmk/Nc[k]=\sum_{m=0}^{N-1}(\log |X[m]|) e^{j 2 \pi m k / N}c[k]=∑m=0N−1(log∣X[m]∣)ej2πmk/N。
取log有两个目的:1. 人耳对信号感知是近似对数的;2. 对数使特征对输入信号的扰动不敏感。
动态特征计算
- 一阶差分,类比速度:
Δ(t)=c(t+1)−c(t−1)2\Delta(\mathrm{t})=\frac{\mathrm{c}(\mathrm{t}+1)-\mathrm{c}(\mathrm{t}-1)}{2} Δ(t)=2c(t+1)−c(t−1)
- 二阶差分,类比加速度:
ΔΔ(t)=Δ(t+1)−Δ(t−1)2\Delta \Delta(\mathrm{t})=\frac{\Delta(\mathrm{t}+1)-\Delta(\mathrm{t}-1)}{2} ΔΔ(t)=2Δ(t+1)−Δ(t−1)
- 能量计算:e=∑x2[n]\mathrm{e}=\sum \mathrm{x}^{2}[\mathrm{n}]e=∑x2[n]
总结
MFCC一般常用39维:
- 12维原始MFCC
- 12维Δ\DeltaΔ
- 12维ΔΔ\Delta \DeltaΔΔ
- 1维能量
- 1维能量Δe\Delta_eΔe
- 1维能量ΔΔe\Delta \Delta_eΔΔe
MFCC特征一般用于GMM训练,各维度之间相关性小,Fbank特征一般用于DNN训练,端到端语音识别系统中多数使用Fbank特征。
Fbank和MFCC样例代码
Fbank特征提取:
确定滤波器组作用的最高频率以及最低频率
根据滤波器数量,确定每一个滤波器中心频率大的值
将滤波器组中心频率对应的梅尔刻度转化为赫兹刻度
公式:mel(f)=2595log10(1+f700)\operatorname{mel}(f)=2595 \log _{10}\left(1+\frac{f}{700}\right)mel(f)=2595log10(1+700f) <-> f(mel)=700(10mel2595−1)f(m e l)=700\left(10^{\frac{m e l}{2595}}-1\right)f(mel)=700(102595mel−1)
# step1: 计算梅尔刻度上的中心频率
low_mel_freq = 0
high_mel_freq = 2595 * np.log10(1 + fs / 2.0 / 700)
mel_points = np.linspace(low_mel_freq, high_mel_freq, num_filter + 2)
# step2:获得对应FFT单元的中心频率
freq_points = (700 * (np.power(10., (mel_points / 2595)) - 1)) # Hz刻度
将频率与DFT点数对应
初始化梅尔滤波器维一个Nxnum_filter的零系数矩阵
filter_edge = np.floor(freq_points * (fft_len + 1) / fs) # 对应到FFT的点数
feats=np.zeros((spectrum.shape[1], num_filter)) # 初始化
计算每一个梅尔滤波器的系数:
计算每一个滤波器的起始、中心、截止频率
计算每一个滤波器中每个频率点所对应的系数
公式:
Hi(j)={fj−f(i−1)f(i)−f(i−1),f(i−1)≤fj<f(i)f(i+1)−fjf(i+1)−f(i),f(i)<fj≤f(i+1)H_{i}(j)=\left\{\begin{array}{l}\frac{f_{j}-f(i-1)}{f(i)-f(i-1)}, f(i-1) \leq f_{j}<f(i) \\ \frac{f(i+1)-f_{j}}{f(i+1)-f(i)}, f(i)<f_{j} \leq f(i+1)\end{array}\right.Hi(j)={f(i)−f(i−1)fj−f(i−1),f(i−1)≤fj<f(i)f(i+1)−f(i)f(i+1)−fj,f(i)<fj≤f(i+1)
for m in range(1, 1 + num_filter):# 计算每一个滤波器的起始、中心、截止频率f_left = int(filter_edge[m - 1])f_center = int(filter_edge[m])f_right = int(filter_edge[m + 1])# 计算每一个滤波器中每个频率点所对应的系数for k in range(f_left, f_center):feats[k, m - 1] = (k - f_left) / (f_center - f_left)for k in range(f_center, f_right):feats[k, m - 1] = (f_right - k) / (f_right - f_center)
- 计算得到Fbank特征:滤波器组的系数和频谱进行加权求和,并对结果取对数
feats = np.dot(spectrum, feats)
feats = np.where(feats == 0, np.finfo(float).eps, feats)
feats = 20 * np.log10(feats)
MFCC特征提取
对每帧Fbank求DCT变化得到MFCC:
mfcc[k,n]=∑i=0num−filter−1X[k,i]cos(πn(2i−1)2×num−filter)m f c c[k, n]=\sum_{i=0}^{n u m_{-} f i l t e r-1} X[k, i] \cos \left(\frac{\pi n(2 i-1)}{2 \times n u m_{-} f i l t e r}\right) mfcc[k,n]=i=0∑num−filter−1X[k,i]cos(2×num−filterπn(2i−1))
mfcc[k,n]m f c c[k, n]mfcc[k,n]: mfcc第k帧第n个值,X[k,i]X[k, i]X[k,i]: Fbank第k帧第i个值。
# from scipy.fftpack import dct
feats = dct(fbank, type=2, axis=1, norm='ortho')[:, 1:(num_mfcc + 1)]
语音信号特征处理--Fbank\MFCC相关推荐
- python 声音基频f0_ASR中常用的语音特征之FBank和MFCC(原理 + Python实现)
ASR中常用的语音特征之FBank和MFCC(原理 + Python实现) 一步一步讲解和实现ASR中常用的语音特征--FBank和MFCC的提取,包括算法原理.代码和可视化等. 文章目录 语音信号的 ...
- 计算机算log的原理,语音声学特征提取:MFCC和LogFBank算法的原理
语音声学特征提取:MFCC和LogFBank算法的原理 语音识别 最后更新 2021-03-04 11:57 阅读 998 最后更新 2021-03-04 11:57 阅读 998 语音识别 几乎任何 ...
- 语音特征提取 matlab,基于matlab的语音信号特征提取方法研究
论文编号:DZXX539 论文字数:20578,附任务书,开题报告,外文翻译 摘 要 语音是一种典型的非平稳随机信号,是人们在交流信息时所使用的最自然.最有效和最方便的手段,在社会进步和科技发展中 ...
- Python语音信号特征-感知线性预测系数PLP
Python语音信号特征-感知线性预测系数PLP PLP基本流程: 信号预处理-DFT-三种感知处理-IDFT-线性预测分析 理论参考: 1.Perceptual linear predictive ...
- c++ 提取傅里叶描述子_AI大语音(四)——MFCC特征提取(深度解析)
1 特征提取流程 在语音识别和话者识别方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scaleFrequency Cepstral Coefficients,简称MFCC). MFCC提取过程包括 ...
- 语音信号处理基础与MFCC
讲道理,想要处理语音这种时间信号,最适合RNN或者SNN这种神经网络来进行识别,传统的方法是基于GMM+HMM的方式进行声学模型以及语言模型的建模.现在的语音识别往往引入神经网络,进行端到端(end- ...
- 人耳识别代码_语音识别之——音频特征fbank与mfcc,代码实现与分析
语音识别中常用的音频特征包括fbank与mfcc. 获得语音信号的fbank特征的一般步骤是:预加重.分帧.加窗.短时傅里叶变换(STFT).mel滤波.去均值等.对fbank做离散余弦变换(DCT) ...
- librosa能量_语音MFCC提取:librosa amp;amp; python_speech_feature(2019.12)
最近在阅读语音方向的论文,其中有个被提及很多的语音信号特征MFCC(Mel-Frequency Cepstral Coefficients),找到了基于python的语音库librosa(versio ...
- 语音信号的梅尔频率倒谱系数(MFCC)的原理讲解及python实现
梅尔倒谱系数(MFCC) 梅尔倒谱系数(Mel-scale FrequencyCepstral Coefficients,简称MFCC).依据人的听觉实验结果来分析语音的频谱, MFCC分析依据的听觉 ...
- python中numpy函数ftt_语音MFCC提取:librosa python_speech_feature(2019.12)
最近在阅读语音方向的论文,其中有个被提及很多的语音信号特征MFCC(Mel-Frequency Cepstral Coefficients),找到了基于python的语音库librosa(versio ...
最新文章
- CTFshow 文件包含 web117
- discuz X3全局变量$_G
- 微信看一看实时相关推荐介绍
- ElasticSearch---------------------step2,了解elasticsearch相关的基本概念
- Windows 7 “Tunnel adapter Local Area Connection” 现象(IPv6)
- vs2019键盘钩子_江门网站建设:针对Web开发人员的12个最佳Visual Studio代码扩展
- RTI_DDS自定义插件开发 5 专属区域(_xxEA)
- 国家标准GB下载网站汇总
- html ul4032,国标UL认证安规标准UL1059接线端子及附件.pdf
- win10计算机的数字小键盘,win10开启数字小键盘的方法(图文)
- 苹果电脑自带截图工具怎么用?mac自带截屏工具使用技巧分享
- Python程序员爬出百套美女写真集,同样是爬虫,他为何如此突出?
- 常见java空指针异常
- linux中通过关键字查询日志,查询结果突显
- 20200213ubuntu20.04下的笔记本USB摄像头的相关资料
- visualmap折线图_echarts折线图实现切断效果
- 生产者-消费者中的缓冲区:BlockingQueue接口
- 国产数据库《人大金仓v8》适配过程问题解决记录
- 证券公司信用风险管理体系—以平安证券为例-课后检验-满分
- es6笔记·····数组的空位
热门文章
- win11怎么进安全模式,win11进入安全模式的方法
- php面试题大全及答案
- L2-016 愿天下有情人都是失散多年的兄妹 (25 分) (DFS)
- Vue.js的简单趋势图
- 智能家居监控移动手机组态现实生活中的应用
- python 彩票图表下载_python彩票
- easyWeChat 6.X微信支付V3下载更新微信支付平台证书
- android dm 分区异常,硬盘分区时损坏,无法使用PQ和DM,如何修复
- MySQL 窗函数 流动平均数 running average
- SAP中交货计划导出需求处理实例