mindspore.dataset.audio.MFCC

查看源文件
class mindspore.dataset.audio.MFCC(sample_rate=16000, n_mfcc=40, dct_type=2, norm=NormMode.ORTHO, log_mels=False, melkwargs=None)[源代码]

计算音频信号的梅尔频率倒谱系数。

参数:
  • sample_rate (int, 可选) - 采样频率(单位:Hz),不能小于零。默认值: 16000

  • n_mfcc (int, 可选) - 要保留的梅尔频率倒谱系数数,不能小于零。默认值: 40

  • dct_type (int, 可选) - 要使用的离散余弦变换类型(离散余弦变换),只能为 2 。默认值: 2

  • norm (NormMode, 可选) - 要使用的标准类型。默认值: NormMode.ORTHO

  • log_mels (bool, 可选) - 是否使用对数-梅尔频谱图而不是以分贝为刻度的频谱图。默认值: False

  • melkwargs (dict, 可选) - MelSpectrogram 接口的参数。默认值: None ,会被设置为包含以下字段的字典

    • 'n_fft': 400

    • 'win_length': n_fft

    • 'hop_length': win_length // 2

    • 'f_min': 0.0

    • 'f_max': sample_rate // 2

    • 'pad': 0

    • 'window': WindowType.HANN

    • 'power': 2.0

    • 'normalized': False

    • 'center': True

    • 'pad_mode': BorderType.REFLECT

    • 'onesided': True

    • 'norm': NormType.NONE

    • 'mel_scale': MelType.HTK

异常:
  • TypeError - 如果 sample_rate 的类型不为int。

  • TypeError - 如果 log_mels 的类型不为bool。

  • TypeError - 如果 norm 的类型不为 mindspore.dataset.audio.NormMode

  • TypeError - 如果 n_mfcc 的类型不为int。

  • TypeError - 如果 melkwargs 的类型不为dict。

  • ValueError - 如果 sample_rate 为负数。

  • ValueError - 如果 n_mfcc 为负数。

  • ValueError - 如果 dct_type 不为 2

支持平台:

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, 500])  # 5 samples
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data=waveform, column_names=["audio"])
>>> transforms = [audio.MFCC(4000, 128, 2)]
>>> 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
(128, 3) float32
>>>
>>> # Use the transform in eager mode
>>> waveform = np.random.random([500])  # 1 sample
>>> output = audio.MFCC(4000, 128, 2)(waveform)
>>> print(output.shape, output.dtype)
(128, 3) float32
教程样例: