Path: tensorflow/tensorflow/python/ops/signal/spectral_ops.py
...
from tensorflow.python.ops.signal import fft_ops
...
@tf_export('signal.stft')
@dispatch.add_dispatch_support
def stft(signals, frame_length, frame_step, fft_length=None,
         window_fn=window_ops.hann_window,
         pad_end=False, name=None):
		with ops.name_scope(name, 'stft', [signals, frame_length,
                                     frame_step]):
		    signals = ops.convert_to_tensor(signals, name='signals')
		    signals.shape.with_rank_at_least(1)
		    frame_length = ops.convert_to_tensor(frame_length, name='frame_length')
		    frame_length.shape.assert_has_rank(0)
		    frame_step = ops.convert_to_tensor(frame_step, name='frame_step')
		    frame_step.shape.assert_has_rank(0)
		
		    if fft_length is None:
		      fft_length = _enclosing_power_of_two(frame_length)
		    else:
		      fft_length = ops.convert_to_tensor(fft_length, name='fft_length')
		
		    framed_signals = shape_ops.frame(
		        signals, frame_length, frame_step, pad_end=pad_end)
		
		    # Optionally window the framed signals.
		    if window_fn is not None:
		      window = window_fn(frame_length, dtype=framed_signals.dtype)
		      framed_signals *= window
		
		    # fft_ops.rfft produces the (fft_length/2 + 1) unique components of the
		    # FFT of the real windowed signals in framed_signals.
		    return fft_ops.rfft(framed_signals, [fft_length])

name_scope()

fft_ops.rfft()