mindspore.dataset.audio.DetectPitchFrequency

class mindspore.dataset.audio.DetectPitchFrequency(sample_rate, frame_time=0.01, win_length=30, freq_low=85, freq_high=3400)[源代码]

检测音调频率。 基于归一化互相关函数和中位平滑来实现。

参数:
  • sample_rate (int) - 波形的采样频率,如44100 (单位:Hz),值不能为0。

  • frame_time (float, 可选) - 帧的持续时间,值必须大于零。默认值: 0.01

  • win_length (int, 可选) - 中位平滑的窗口长度(以帧数为单位),该值必须大于零。默认值: 30

  • freq_low (int, 可选) - 可检测的最低频率(Hz),该值必须大于零。默认值: 85

  • freq_high (int, 可选) - 可检测的最高频率(Hz),该值必须大于零。默认值: 3400

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

  • ValueError - 如果 sample_rate 为0。

  • TypeError - 如果 frame_time 不是float类型。

  • ValueError - 如果 frame_time 不为正数。

  • TypeError - 如果 win_length 不是int类型。

  • ValueError - 如果 win_length 不为正数。

  • TypeError - 如果 freq_low 不是int类型。

  • ValueError - 如果 freq_low 不为正数。

  • TypeError - 如果 freq_high 不是int类型。

  • ValueError - 如果 freq_high 不为正数。

支持平台:

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