_‘江盈i‘■●婴沿◆——一
其中.L为频率采样点数。将以(沙)在时域n上每隔
R个样本采样.则可令
frame_length=512;
%采用滑动窗进行短时fft变换p(rectwin(frame_length));
fora=l:t
耳(e地)=如(P挑)’甩=rR,r:l,2…
用这些r(P肌)求出其离散傅里叶反变换Y,(以)如下:
L-1
只o)=,1∑':o肌弦胁4
i.J
nl=(L-d) (a一1)+1:
n2=(L-d)}(a-1)+frame_length:y=S(nl:n2);
sf=fft(Y’. r_.512);
X1(n1:n2)=sf(1:frame_length):
end
k=O
耐(以)=∑yXn)
,=—∞
可以证明,x仰)和y(疗)之间只相差一个比例因子,它们的关系如下:
y(n)=x(n)W(e,o)/R
4、MATLAB处理语音信号
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件.它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据.如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种分析图的呈现等等。下面以语音信号的波形图.频谱图和倒谱图(如图3所示)分析为例来说明Matlab在语音信号处理中的具体实现方法。
%分段fourier变换,每段长为512.每段加矩形窗,连续断之间重叠的长度100
S=wavread(’C:\Documents
and
1Hz
FFTSIZE=8000;
%FFT长度为8000点,每点对应于
Y=zeros(FFTSIZE.1);Y=20*loglO(abs(X1)):
subplot(3,1.2):Plot(Y(1:4000)).titIe(’频谱图。);%画前4000点
%IFFT变换
TI=length(X1):tl=fix(T1/L):
for
l=1:t1
z=ifft(X1((i一1) L+1:i*L).512);
Settings\
z=real(z./r’):
Y((i-1)木k+1:i*k)=z(1:k);
end
administrator\桌面\test.wav’);
subplot(3,1,1);plot(S).title(’波形图。)wavplay(S):%播放语音
n=size(S);
subplot(3.1.3);plot(Y).title(’倒谱图’)
d=lOO:%连续段之间的重叠长度
L=512:k=L-d:
t=fix(n/k):
田
万方数据