Spectral Flux (SF) in Audio
Also called Spectral Variation. Spectral flux measures how quickly the power spectrum changes. Spectral flux is defined as the variation value of spectrum between the adjacent two frames in a short-time analyze window. Spectral flux can be used to determine the timbre of an audio signal. The MATLAB code:
[wav fs] = wavread('DEMO.wav'); wav = wav / max(max(wav)); window_length = 2 * fs; % assume the windows is 2 seconds step = 1 * fs; % and it has overlap in windows frame_num = floor((length(wav)-window_length)/step) + 1; H = hamming(window_length); flux = zeros(frame_num, 1); pos = 1; FFT_prev = 0; for i=1:frame_num wav_window = H .* wav(pos:pos + window_length-1); FFT = abs(fft(wav_window, 2*window_length)); FFT = FFT(1 : window_length); FFT = FFT/max(FFT); flux(i) = sum((FFT - FFT_prev) .^ 2); FFT_prev = FFT; pos = pos + step; end
No comments:
Post a Comment