如何用matlab实现语音信号的短时傅里叶变换

如何用matlab实现语音信号的短时傅里叶变换,第1张

matlab自带了短时傅里叶变换的分析函数,也即spectrogram函数。

其使用方式有两种

1. [S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)

2. [S,F,T,P]=spectrogram(x,window,noverlap,F,fs)

x---输入信号的向量;Window---窗函数;Noverlap---各段之间重叠的采样点数;Nfft---计算离散傅里叶变换的点数;Fs---采样频率Hz;F---在输入变量中使用F频率向量。

对应题主的问题

假设语音信号保存在wave变量中,那么,对其做短时傅里叶变换的函数语句为

[S,F,T,P]=spectrogram(wave,window,noverlap,nfft,fs)

参数可以根据具体信号的特点进行设定。

matlab有STFT的自带函数,你可以help下spectrogram,里面有例程。下面这个小程序就是一个STFT的小示例:

T = 0:0.001:2

X = chirp(T,100,1,200,'q')

spectrogram(X,128,120,128,1E3)

title('Quadratic Chirp')

离散傅里叶变换(discrete Fourier transform) 傅里叶分析方法是信号分析的最基本方法,傅里叶变换是傅里叶分析的核心,通过它把信号从时间域变换到频率域,进而研究信号的频谱结构和变化规律。但是它的致命缺点是: 计算量太大,时间复杂度太高,当采样点数太高的时候,计算缓慢, 由此出现了DFT的快速实现,即下面的快速傅里叶变换FFT。

这里原始信号的三个正弦波的频率分别为,200Hz、400Hz、600Hz,最大频率为600赫兹。根据采样定理,fs至少是600赫兹的2倍,这里选择1400赫兹,即在一秒内选择1400个点。

1400

[-4.18864943e-12+0.j 9.66210986e-05-0.04305756j 3.86508070e-04-0.08611996j

8.69732036e-04-0.12919206j1.54641157e-03-0.17227871j]

换之后的结果数据长度和原始采样信号是一样的

每一个变换之后的值是一个复数,为a+bj的形式下标为0和 N /2的两个复数的虚数部分为0,下标为i和 N - i 的两个复数共辄,也就是其虚部数值相同、符号相反。再用ifft()从频域转回时域之后,出现了由误差引起的很小的虚部,用np.real()取其实部即可.

 由于一半是另一半的共轭,因此只需要关心一半数据.fft转换后下标为0的实数表示时域信号中的直流成分(不随时间变化)

振幅谱的纵坐标很大,而且具有对称性

Y=A1+A2 cos(2πω2+φ2)+A3 cos(2πω3+φ3)+A4*cos(2πω4+φ4)

经过FFT之后,得到的“振幅图”中,

第一个峰值(频率位置)的模是A1的N倍,N为采样点,本例中为N=1400,此例中没有,因为信号没有常数项A1

第二个峰值(频率位置)的模是A2的N/2倍,N为采样点,

第三个峰值(频率位置)的模是A3的N/2倍,N为采样点,

第四个峰值(频率位置)的模是A4的N/2倍,N为采样点,

STFT短时傅里叶变换,实际上是对一系列加窗数据做FFT。有的地方也会提到DCT(离散傅里叶变换),而DCT跟FFT的关系就是:FFT是实现DCT的一种快速算法。

FFT有个参数N,表示对多少个点做FFT,如果一帧里面的点的个数小于N就会zero-padding到N的长度。每个点对应一个频率点,某一点n(n从1开始)表示的频率为:

第一个点(n=1,Fn等于0)表示直流信号,最后一个点N的下一个点(实际上这个点是不存在的)表示采样频率Fs。

FFT后我们可以得到N个频点,比如,采样频率为16000,N为1600,那么FFT后就会得到1600个点,FFT得到的1600个值的模可以表示1600个频点对应的振幅。因为FFT具有对称性,当N为偶数时取N/2+1个点,当N为奇数时,取(N+1)/2个点,比如N为512时最后会得到257个值。

scipy.signal.stft(x,fs = 1.0,window =‘hann’,nperseg = 256,noverlap = None,nfft = None,detrend = False,return_oneside = True,boundary =‘zeros’,padded = True,axis = -1 )


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11139579.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存