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
- 教程样例: