How to determine the symbol rate of a 2-FSK signal? Let's say that I have a 2-FSK signal recorded so that the SNR is around 20 dB and the noise seems to be more or less white. The distance between tones is greater than the minimum distance needed for non-coherent reception. 

How would I go about determining its symbol rate?

I had some ideas, but it was a while since I actually had contact with FSK, so I'm probably forgetting something very obvious.

My initial idea was, since I have a recording, to use say spectrogram in Matlab and see how long each of the tones last. The downside here is that I need to be reasonably lucky with my data. I couldn't set up spectrogram parameters properly, so that end of each symbol is clearly visible on the time-frequency plots. 

My next idea was to see if using analytical signal and getting the envelope would help. I don't think I obtained anything useful with that.

Later on, I tried to generate a signal of the same frequency as one of the symbols and then run a cross-correlation. I sort of expected the xcorr to be high when we're on the symbol of the same frequency as the one I'm using and not so high when we're not. What I got as the output is a sinusoid, but I couldn't figure out how to interpret it.
One approach could be to perform an FM-detection step (e.g. an atan2() operation followed by a first-order difference) to transform the waveform to measurements of the approximate received frequency versus time. Your FSK signal should then look like a binary-modulated baseband waveform. Then you can apply a nonlinearity to the signal to induce a discrete frequency component at the unknown symbol rate. This component can then be identified by spectral analysis of the signal after you apply the nonlinearity. Many different types of nonlinearities can work for this, including absolute value, squaring, and magnitude-squaring detectors.

If you're doing a literature search, the terms you might want to use would be blind symbol rate estimation. That implies the estimation of the symbol rate without foreknowledge of the signal's structure.