mindspore.dataset.audio.Vad

class mindspore.dataset.audio.Vad(sample_rate, trigger_level=7.0, trigger_time=0.25, search_time=1.0, allowed_gap=0.25, pre_trigger_time=0.0, boot_time=0.35, noise_up_time=0.1, noise_down_time=0.01, noise_reduction_amount=1.35, measure_freq=20.0, measure_duration=None, measure_smooth_time=0.4, hp_filter_freq=50.0, lp_filter_freq=6000.0, hp_lifter_freq=150.0, lp_lifter_freq=2000.0)[源代码]

语音活动检测器。

试图修剪去除语音记录末尾沉默或安静的背景声音。

接口实现方式类似于 SoX库

参数:
  • sample_rate (int) - 音频信号的采样率。

  • trigger_level (float, 可选) - 触发音频活动检测的测量级别。默认值: 7.0

  • trigger_time (float, 可选) - 时间常数(以秒为单位),用于帮助忽略短促的爆破音。默认值: 0.25

  • search_time (float, 可选) - 在检测到的触发点之前,搜索更安静/更短促爆破音的时长(以秒为单位)。默认值: 1.0

  • allowed_gap (float, 可选) - 在检测到的触发点之前,允许的更安静/更短促爆破音之间的时间间隔(以秒为单位)。默认值: 0.25

  • pre_trigger_time (float, 可选) - 在触发点和任意找到的更安静/更短促的爆破音之前,要保留的音频时长(以秒为单位)。默认值: 0.0

  • boot_time (float, 可选) - 初始噪声的评估时间。默认值: 0.35

  • noise_up_time (float, 可选) - 用于自适应噪声评估的时间常量,指定噪声等级上升时的时间。默认值: 0.1

  • noise_down_time (float, 可选) - 用于自适应噪声评估的时间常量,指定噪声等级下降时的时间。默认值: 0.01

  • noise_reduction_amount (float, 可选) - 检测算法中使用的降噪量。默认值: 1.35

  • measure_freq (float, 可选) - 算法处理/检测的频率。默认值: 20.0

  • measure_duration (float, 可选) - 检测持续的时间。默认值: None ,将使用两倍测量周期的时长。

  • measure_smooth_time (float, 可选) - 用于平滑频谱测量的时间常数。默认值: 0.4

  • hp_filter_freq (float, 可选) - 施加到检测器算法输入上的高通滤波器的截止频率。默认值: 50.0

  • lp_filter_freq (float, 可选) - 施加到检测器算法输入上的低通滤波器的截止频率。默认值: 6000.0

  • hp_lifter_freq (float, 可选) - 施加到检测器算法输入上的高通提升器的截止频率。默认值: 150.0

  • lp_lifter_freq (float, 可选) - 施加到检测器算法输入上的低通提升器的截止频率。默认值: 2000.0

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

  • ValueError - 当 sample_rate 不为正数。

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

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

  • ValueError - 当 trigger_time 为负数。

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

  • ValueError - 当 search_time 为负数。

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

  • ValueError - 当 allowed_gap 为负数。

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

  • ValueError - 当 pre_trigger_time 为负数。

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

  • ValueError - 当 boot_time 为负数。

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

  • ValueError - 当 noise_up_time 为负数。

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

  • ValueError - 当 noise_down_time 为负数。

  • ValueError - 当 noise_up_time 小于 noise_down_time

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

  • ValueError - 当 noise_reduction_amount 为负数。

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

  • ValueError - 当 measure_freq 不为正数。

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

  • ValueError - 当 measure_duration 为负数。

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

  • ValueError - 当 measure_smooth_time 为负数。

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

  • ValueError - 当 hp_filter_freq 不为正数。

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

  • ValueError - 当 lp_filter_freq 不为正数。

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

  • ValueError - 当 hp_lifter_freq 不为正数。

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

  • ValueError - 当 lp_lifter_freq 不为正数。

  • 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, 1000])  # 5 samples
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data=waveform, column_names=["audio"])
>>> transforms = [audio.Vad(sample_rate=600)]
>>> 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
(660,) float64
>>>
>>> # Use the transform in eager mode
>>> waveform = np.random.random([1000])  # 1 sample
>>> output = audio.Vad(sample_rate=600)(waveform)
>>> print(output.shape, output.dtype)
(660,) float64
教程样例: