本文主要读取语音信号,画出语音波形,并对语音信号进行fft变换,画出频谱图。再对原语音信号进行分帧,并使用了三种窗函数(矩形窗,海宁窗,海明窗)对其中的一帧进行加窗,查看结果。
- 注:本文所用的matlab版本为matlab 2017a
首先读取音频文件:
[x1,fs]=audioread('lantian.wav'); %读取音频文件lantian.wav,fs返回采样频率,x1为读取的语音信号
返回语音信号的采样频率,总的采样点数,语音时长等信息:
info=audioinfo('lantian.wav')
可以看到,该语音采样频率为8000,语音总的采样点数为19000,语音时长为2.375秒。
矩形窗函数:
boxcar(n) %调用格式:w=boxcar(n),根据长度 n 产生一个矩形窗 w
海宁窗函数:
hanning(n) %调用格式:w=hanning(n),根据长度 n 产生一个汉宁窗 w
海明窗函数:
hamming(n) %调用格式:w=hamming(n),根据长度 n 产生一个海明窗 w
画语音信号波形图:
figure()
subplot(211);
plot(x1);
title('原始语音信号');
波形图如下:
对语音信号进行fft变换:
FFT物理意义如下:
一个模拟信号,经ADC采样后,就变成了数字信号,采样频率要大于信号频率的两倍,采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可得到N个点的