View source on GitHub |
Computes the inverse Short-time Fourier Transform of stfts
.
tf.signal.inverse_stft( stfts, frame_length, frame_step, fft_length=None, window_fn=tf.signal.hann_window, name=None )
To reconstruct an original waveform, a complementary window function should be used with inverse_stft
. Such a window function can be constructed with tf.signal.inverse_stft_window_fn
. Example:
frame_length = 400 frame_step = 160 waveform = tf.random.normal(dtype=tf.float32, shape=[1000]) stft = tf.signal.stft(waveform, frame_length, frame_step) inverse_stft = tf.signal.inverse_stft( stft, frame_length, frame_step, window_fn=tf.signal.inverse_stft_window_fn(frame_step))
If a custom window_fn
is used with tf.signal.stft
, it must be passed to tf.signal.inverse_stft_window_fn
:
frame_length = 400 frame_step = 160 window_fn = tf.signal.hamming_window waveform = tf.random.normal(dtype=tf.float32, shape=[1000]) stft = tf.signal.stft( waveform, frame_length, frame_step, window_fn=window_fn) inverse_stft = tf.signal.inverse_stft( stft, frame_length, frame_step, window_fn=tf.signal.inverse_stft_window_fn( frame_step, forward_window_fn=window_fn))
Implemented with TPU/GPU-compatible ops and supports gradients.
Args | |
---|---|
stfts | A complex64 /complex128 [..., frames, fft_unique_bins] Tensor of STFT bins representing a batch of fft_length -point STFTs where fft_unique_bins is fft_length // 2 + 1 |
frame_length | An integer scalar Tensor . The window length in samples. |
frame_step | An integer scalar Tensor . The number of samples to step. |
fft_length | An integer scalar Tensor . The size of the FFT that produced stfts . If not provided, uses the smallest power of 2 enclosing frame_length . |
window_fn | A callable that takes a window length and a dtype keyword argument and returns a [window_length] Tensor of samples in the provided datatype. If set to None , no windowing is used. |
name | An optional name for the operation. |
Returns | |
---|---|
A [..., samples] Tensor of float32 /float64 signals representing the inverse STFT for each input STFT in stfts . |
Raises | |
---|---|
ValueError | If stfts is not at least rank 2, frame_length is not scalar, frame_step is not scalar, or fft_length is not scalar. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/signal/inverse_stft