How to, efficiently, identify telephone number from the key pressed data audio file?
If you interested in computational efficiency then performing FFTs is not the best solution. Here's something you might try: apply the samples of your .wav file to a parallel bank of 8 Goertzel filters. (One filter for each of the 8 possible tone frequencies.) For example, below is the Goertzel filter for detecting the 770 Hz tone.

Monitor (measure) the output powers of the 8 filters every, say, 25 milliseconds. If the sample rate is 8000 Hz, then 25 msec means measure the 8 filter output power values every 200 input samples. So, in the figure below, apply the first 200 input samples to the filter and compute a single v(n) value. Then, and only then, compute a single complex-valued y(m) sample and single real-valued P770(m) sample. For the first 200 input samples do the same for the other 7 filters. At the end of the first 200 input samples see if two the eight Pxxx(m) power sample values exceeded some threshold value. If so, then you know a phone button key was pressed. Using some sort of logic, decode the two high-level Pxxx(m) power values to determine which key was pressed and store that single 'key number'. If no key was pushed during those first 200 input samples set the stored 'key number' value to Nan in Matlab.

Repeat the above processing for every block of 200 samples in your .wav file. If your .wav file had 16,000 samples then you should end up with a sequence of 80 'key number' values. Plot those 'key number' values versus the time index m.