Vad¶
- class torchaudio.transforms.Vad(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: Optional[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)[source]¶
语音活动检测器 (Voice Activity Detector)。类似于 SoX 实现。
尝试从语音录音的两端修剪静音和轻微的背景声音。该算法目前使用简单的倒谱功率测量来检测语音,因此可能会被其他声音(尤其是音乐)误导。
该效果只能从音频的前端进行修剪,因此若要从后端修剪,必须同时使用反向效果。
- 参数:
sample_rate (int) – 音频信号的采样率。
trigger_level (float, optional) – 用于触发活动检测的测量级别。这可能需要根据输入音频的噪声水平、信号水平和其它特性进行更改。(默认值: 7.0)
trigger_time (float, optional) – 用于帮助忽略短促声音爆发的时间常数(以秒为单位)。(默认值: 0.25)
search_time (float, optional) – 在检测到的触发点之前,搜索更安静/更短的声音爆发以包含进来的音频量(以秒为单位)。(默认值: 1.0)
allowed_gap (float, optional) – 在检测到的触发点之前,要包含的更安静/更短的声音爆发之间允许的间隔(以秒为单位)。(默认值: 0.25)
pre_trigger_time (float, optional) – 在触发点和任何发现的更安静/更短的声音爆发之前,保留的音频量(以秒为单位)。(默认值: 0.0)
boot_time (float, optional) 该算法(Python 内部)——为了检测所需音频的开始而进行的估计/降噪。此选项设置初始噪声估计的时间。(默认值: 0.35)
noise_up_time (float, optional) – 用于处理噪声水平增加的情况。(默认值: 0.1)
noise_down_time (float, optional) – 用于处理噪声水平降低的情况。(默认值: 0.01)
noise_reduction_amount (float, optional) – 检测算法中用于减少噪声估计的量。(默认值: 1.35) (Note: Corrected translation based on SoX doc)
measure_freq (float, optional) – 处理/测量的频率。(默认值: 20.0)
measure_duration – (float or None, optional) 测量持续时间。(默认值: 测量周期的两倍;即存在重叠。)
measure_smooth_time (float, optional) – 用于平滑频谱测量的时间常数。(默认值: 0.4)
hp_filter_freq (float, optional) – 检测算法输入端的高通滤波器频率。(默认值: 50.0)
lp_filter_freq (float, optional) – 检测算法输入端的低通滤波器频率。(默认值: 6000.0)
hp_lifter_freq (float, optional) – 检测算法中的高通提升滤波器频率。(默认值: 150.0)
lp_lifter_freq (float, optional) – 检测算法中的低通提升滤波器频率。(默认值: 2000.0)
- 示例
>>> waveform, sample_rate = torchaudio.load("test.wav", normalize=True) >>> waveform_reversed, sample_rate = apply_effects_tensor(waveform, sample_rate, [["reverse"]]) >>> transform = transforms.Vad(sample_rate=sample_rate, trigger_level=7.5) >>> waveform_reversed_front_trim = transform(waveform_reversed) >>> waveform_end_trim, sample_rate = apply_effects_tensor( >>> waveform_reversed_front_trim, sample_rate, [["reverse"]] >>> )
- 参考资料