mindspore.dataset.audio.GriffinLim
- class mindspore.dataset.audio.GriffinLim(n_fft=400, n_iter=32, win_length=None, hop_length=None, window_type=WindowType.HANN, power=2.0, momentum=0.99, length=None, rand_init=True)[源代码]
- 使用Griffin-Lim算法从线性幅度频谱图中计算信号波形。 - 有关Griffin-Lim算法更多的描述,详见论文 A fast Griffin-Lim algorithm 与 Signal estimation from modified short-time Fourier transform 。 - 参数:
- n_fft (int, 可选) - FFT的长度。默认值: - 400。
- n_iter (int, 可选) - 相位恢复的迭代次数。默认值: - 32。
- win_length (int, 可选) - GriffinLim的窗口大小。默认值: - None,将设置为 n_fft 的值。
- hop_length (int, 可选) - STFT窗口之间的跳数长度。默认值: - None,将设置为 win_length//2 。
- window_type ( - WindowType, 可选) - GriffinLim的窗口类型,可以是- WindowType.BARTLETT,- WindowType.BLACKMAN,- WindowType.HAMMING,- WindowType.HANN或- WindowType.KAISER。 默认值:- WindowType.HANN,目前macOS上不支持kaiser窗口。
- power (float, 可选) - 幅度谱图的指数。默认值: - 2.0。
- momentum (float, 可选) - 快速Griffin-Lim的动量。默认值: - 0.99。
- length (int, 可选) - 预期输出波形的长度。默认值: - None,将设置为stft矩阵的最后一个维度的值。
- rand_init (bool, 可选) - 随机相位初始化或全零相位初始化标志。默认值: - True。
 
- 异常:
- TypeError - 如果 n_fft 的类型不为int。 
- ValueError - 如果 n_ftt 不为正数。 
- TypeError - 如果 n_iter 的类型不为int。 
- ValueError - 如果 n_iter 不为正数。 
- TypeError - 如果 win_length 的类型不为int。 
- ValueError - 如果 win_length 为负数。 
- TypeError - 如果 hop_length 的类型不为int。 
- ValueError - 如果 hop_length 为负数。 
- TypeError - 如果 window_type 的类型不为 - mindspore.dataset.audio.WindowType。
- TypeError - 如果 power 的类型不为float。 
- ValueError - 如果 power 不为正数。 
- TypeError - 如果 momentum 的类型不为float。 
- ValueError - 如果 momentum 为负数。 
- TypeError - 如果 length 的类型不为int。 
- ValueError - 如果 length 为负数。 
- TypeError - 如果 rand_init 的类型不为bool。 
- RuntimeError - 当 n_fft 指定的FFT长度不小于 length 指定的输出波形长度。 
- RuntimeError - 当 win_length 指定的窗口长度不小于 n_fft 指定的FFT长度。 
 
- 支持平台:
- CPU
 - 样例: - >>> import numpy as np >>> import mindspore.dataset as ds >>> import mindspore.dataset.audio as audio >>> >>> # Use the transform in dataset pipeline mode >>> waveform = np.random.random([5, 201, 6]) # 5 samples >>> numpy_slices_dataset = ds.NumpySlicesDataset(data=waveform, column_names=["audio"]) >>> transforms = [audio.GriffinLim(n_fft=400)] >>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms, input_columns=["audio"]) >>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True): ... print(item["audio"].shape, item["audio"].dtype) ... break (1000,) float64 >>> >>> # Use the transform in eager mode >>> waveform = np.random.random([201, 6]) # 1 sample >>> output = audio.GriffinLim(n_fft=400)(waveform) >>> print(output.shape, output.dtype) (1000,) float64 - 教程样例: