計算 mdcts
的逆修改 DCT。
用法
tf.signal.inverse_mdct(
mdcts, window_fn=tf.signal.vorbis_window, norm=None, name=None
)
參數
-
mdcts
float32
/float64
[..., frames, frame_length // 2]
Tensor
的 MDCT bin 表示一批frame_length // 2
點 MDCT。 -
window_fn
一個可調用的對象,它接受 frame_length 和dtype
關鍵字參數,並以提供的數據類型返回樣本的[frame_length]
Tensor
。如果設置為None
,則使用比例為 1/sqrt(2) 的矩形窗口。要從mdct
後跟inverse_mdct
完美重建信號,請使用tf.signal.vorbis_window
、tf.signal.kaiser_bessel_derived_window
或None
。如果使用另一個窗口函數,請確保 w[n]^2 + w[n + frame_length //2]^2 = 1 和 w[n] = w[frame_length - n - 1] for n = 0,...,frame_length //2 - 1 實現完美重建。 -
norm
如果"ortho",則執行正交逆DCT4,如果為None,則執行常規dct4,然後執行1/frame_length
的縮放。 -
name
操作的可選名稱。
返回
-
[..., samples]
Tensor
offloat32
/float64
信號表示mdcts
中每個輸入 MDCT 的逆 MDCT,其中samples
是(frames - 1) * (frame_length // 2) + frame_length
。
拋出
-
ValueError
如果mdcts
不是至少 2 級。
要重建原始波形,應將相同的窗口函數與 mdct
和 inverse_mdct
一起使用。
示例用法:
@tf.function
def compare_round_trip():
samples = 1000
frame_length = 400
halflen = frame_length // 2
waveform = tf.random.normal(dtype=tf.float32, shape=[samples])
waveform_pad = tf.pad(waveform, [[halflen, 0],])
mdct = tf.signal.mdct(waveform_pad, frame_length, pad_end=True,
window_fn=tf.signal.vorbis_window)
inverse_mdct = tf.signal.inverse_mdct(mdct,
window_fn=tf.signal.vorbis_window)
inverse_mdct = inverse_mdct[halflen:halflen + samples]
return waveform, inverse_mdct
waveform, inverse_mdct = compare_round_trip()
np.allclose(waveform.numpy(), inverse_mdct.numpy(), rtol=1e-3, atol=1e-4)
True
使用 TPU/GPU-compatible 操作實現並支持漸變。
相關用法
- Python tf.signal.inverse_stft用法及代碼示例
- Python tf.signal.ifftshift用法及代碼示例
- Python tf.signal.overlap_and_add用法及代碼示例
- Python tf.signal.frame用法及代碼示例
- Python tf.signal.linear_to_mel_weight_matrix用法及代碼示例
- Python tf.signal.fftshift用法及代碼示例
- Python tf.signal.mfccs_from_log_mel_spectrograms用法及代碼示例
- Python tf.size用法及代碼示例
- Python tf.summary.scalar用法及代碼示例
- Python tf.strings.substr用法及代碼示例
- Python tf.strings.reduce_join用法及代碼示例
- Python tf.sparse.cross用法及代碼示例
- Python tf.sparse.mask用法及代碼示例
- Python tf.strings.regex_full_match用法及代碼示例
- Python tf.sparse.split用法及代碼示例
- Python tf.strings.regex_replace用法及代碼示例
- Python tf.strings.length用法及代碼示例
- Python tf.strided_slice用法及代碼示例
- Python tf.sparse.to_dense用法及代碼示例
- Python tf.strings.bytes_split用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.signal.inverse_mdct。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。