计算 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。