mindspore.dataset.audio.LFCC

class mindspore.dataset.audio.LFCC(sample_rate=16000, n_filter=128, n_lfcc=40, f_min=0.0, f_max=None, dct_type=2, norm=NormMode.ORTHO, log_lf=False, speckwargs=None)[源代码]

计算音频信号的线性频率倒谱系数。

说明

待处理音频shape需为<…, time>。

参数:
  • sample_rate (int, 可选) - 音频信号的采样率。默认值: 16000

  • n_filter (int, 可选) - 要应用的线性滤波器数量。默认值: 128

  • n_lfcc (int, 可选) - 要保留的线性频率倒谱系数数。默认值: 40

  • f_min (float, 可选) - 最小频率。默认值: 0.0

  • f_max (float, 可选) - 最大频率。默认值: None ,会被设置为 sample_rate // 2

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

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

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

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

    • 'n_fft': 400

    • 'win_length': n_fft

    • 'hop_length': win_length // 2

    • 'pad': 0

    • 'window': WindowType.HANN

    • 'power': 2.0

    • 'normalized': False

    • 'center': True

    • 'pad_mode': BorderType.REFLECT

    • 'onesided': True

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

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

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

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

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

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

  • ValueError - 如果 sample_rate 为0。

  • ValueError - 如果 n_lfcc 小于0。

  • ValueError - 如果 f_min 大于 f_max

  • ValueError - 当 f_max 为None时,如果 f_min 大于 sample_rate // 2

  • 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, 10, 300])
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data=waveform, column_names=["audio"])
>>> transforms = [audio.LFCC()]
>>> 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
(10, 40, 2) float32
>>>
>>> # Use the transform in eager mode
>>> waveform = np.random.random([10, 300])  # 1 sample
>>> output = audio.LFCC()(waveform)
>>> print(output.shape, output.dtype)
(10, 40, 2) float32
教程样例: