当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.signal.inverse_stft用法及代码示例


计算 stfts 的逆 Short-time 傅里叶变换。

用法

tf.signal.inverse_stft(
    stfts, frame_length, frame_step, fft_length=None,
    window_fn=tf.signal.hann_window, name=None
)

参数

  • stfts A complex64 /complex128 [..., frames, fft_unique_bins] Tensor 的 STFT bins 代表一批 fft_length 点 STFT,其中 fft_unique_binsfft_length // 2 + 1
  • frame_length 整数标量 Tensor 。样本中的窗口长度。
  • frame_step 整数标量 Tensor 。要步进的样本数。
  • fft_length 整数标量 Tensor 。产生 stfts 的 FFT 的大小。如果未提供,则使用包含 frame_length 的 2 的最小幂。
  • window_fn 一个可调用对象,它采用窗口长度和 dtype 关键字参数,并以提供的数据类型返回样本的 [window_length] Tensor。如果设置为 None ,则不使用窗口。
  • name 操作的可选名称。

返回

  • [..., samples] Tensor of float32 /float64 信号表示 stfts 中每个输入 STFT 的反向 STFT。

抛出

  • ValueError 如果 stfts 不是至少 2 级,frame_length 不是标量,frame_step 不是标量,或者 fft_length 不是标量。

要重建原始波形,应将互补窗函数与 inverse_stft 一起使用。可以使用 tf.signal.inverse_stft_window_fn 构造这样的窗口函数。例子:

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))

如果自定义 window_fntf.signal.stft 一起使用,则必须将其传递给 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))

使用 TPU/GPU-compatible 操作实现并支持渐变。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.signal.inverse_stft。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。