I need to divide an audio signal into frames in which the signal can be assumed to be stationary. How can I measure whether an audio signal is stationary in a frame?
I'm a DSP student and perhaps this is not the most complete answer. I have to answer the same question in a partial work and this is what I got so far:
As said by André pure stationary signal is a signal in which mean and variance does not change in time. In nature (real life, man interpreted music, etc.) this is very hard to find.
So you may:
- Visualize the signal in an spectrogram. If the signal is stationary the signal will appear as horizontal bars of same intensity in the spectrogram:
Even in this signal, made from a filtered white noise and a tone the media and the variance changes a little in time.
So, split the segments of your signal under test to find the whether the media and variance doesn't change 'much'. How 'much' depends on you:
% test for stationary B xnbf = buffer(signal,100); mxn = mean(xnbf); sxn = std(xnbf); figure; errorbar(mxn, sxn, 'o'); title('Signal A')
Also, check this link, which includes a comprehensive list of methods to test whether a process is stationary or not: https://quant.stackexchange.com/questions/2372/how-to-check-if-a-timeseries-is-stationary