mindspore.dataset.audio.Resample

class mindspore.dataset.audio.Resample(orig_freq=16000, new_freq=16000, resample_method=ResampleMethod.SINC_INTERPOLATION, lowpass_filter_width=6, rolloff=0.99, beta=None)[源代码]

将信号从一个频率重采样至另一个频率。支持指定重采样方法。

参数:
  • orig_freq (float, 可选) - 信号的原始频率,必须为正。默认值: 16000

  • new_freq (float, 可选) - 预期的输出频率,必须为正。默认值: 16000

  • resample_method (ResampleMethod, 可选) - 使用的重采样方法,可为 ResampleMethod.SINC_INTERPOLATIONResampleMethod.KAISER_WINDOW 。默认值: ResampleMethod.SINC_INTERPOLATION

  • lowpass_filter_width (int, 可选) - 控制滤波器的带宽,数值越大表示带宽越宽,但效率越低,必须为正。默认值: 6

  • rolloff (float, 可选) - 滤波器的滚降频率,是奈奎斯特公式的一部分。值越低越利于减少抗混叠,但同时也会减少一部分最高频率, 取值范围为(0, 1]。默认值: 0.99

  • beta (float, 可选) - Kaiser窗的形状参数。默认值: None ,将使用 14.769656459379492

异常:
  • TypeError - 当 orig_freq 的类型不为float。

  • ValueError - 当 orig_freq 不为正数。

  • TypeError - 当 new_freq 的类型不为float。

  • ValueError - 当 new_freq 不为正数。

  • TypeError - 当 resample_method 的类型不为 mindspore.dataset.audio.ResampleMethod

  • TypeError - 当 lowpass_filter_width 的类型不为int。

  • ValueError - 当 lowpass_filter_width 不为正数。

  • TypeError - 当 rolloff 的类型不为float。

  • ValueError - 当 rolloff 取值不在(0, 1]范围内。

  • RuntimeError - 当输入音频的shape不为<…, time>。

支持平台:

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, 16, 30])  # 5 samples
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data=waveform, column_names=["audio"])
>>> transforms = [audio.Resample(orig_freq=48000, new_freq=16000,
...                              resample_method=audio.ResampleMethod.SINC_INTERPOLATION,
...                              lowpass_filter_width=6, rolloff=0.99, beta=None)]
>>> 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
(16, 10) float64
>>>
>>> # Use the transform in eager mode
>>> waveform = np.random.random([16, 30])  # 1 sample
>>> output = audio.Resample(orig_freq=48000, new_freq=16000,
...                         resample_method=audio.ResampleMethod.SINC_INTERPOLATION,
...                         lowpass_filter_width=6, rolloff=0.99, beta=None)(waveform)
>>> print(output.shape, output.dtype)
(16, 10) float64
教程样例: