當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。