torchaudio.functional¶
执行常见音频操作的函数。
频谱图¶
-
torchaudio.functional.spectrogram(waveform: torch.Tensor, pad: int, window: torch.Tensor, n_fft: int, hop_length: int, win_length: int, power: Optional[float], normalized: bool) → torch.Tensor[source]¶ 从原始音频信号创建频谱图或一批频谱图。 频谱图可以是仅幅度形式,也可以是复数形式。
- Parameters
- Returns
维度 (…, 频率, 时间),频率是
n_fft // 2 + 1和n_fft是傅里叶频谱的数量,时间是窗口跳跃的次数(n_frame)。- Return type
张量
amplitude_to_DB¶
create_fb_matrix¶
-
torchaudio.functional.create_fb_matrix(n_freqs: int, f_min: float, f_max: float, n_mels: int, sample_rate: int, norm: Optional[str] = None) → torch.Tensor[source]¶ 创建频率分箱转换矩阵。
- Parameters
- Returns
大小为 (
n_freqs,n_mels) 的三角形滤波器组(fb 矩阵) 意味着要突出显示/应用于 x 的频率数量,即滤波器组的数量。 每一列都是一个滤波器组,因此假设存在一个大小为 (…,n_freqs) 的矩阵 A,应用后的结果将是A * create_fb_matrix(A.size(-1), ...)。- Return type
张量
create_dct¶
mu_law_encoding¶
-
torchaudio.functional.mu_law_encoding(x: torch.Tensor, quantization_channels: int) → torch.Tensor[source]¶ 根据μ-law压缩进行信号编码。更多信息请参见 维基百科条目
该算法假设信号已缩放到 -1 到 1 之间,并返回一个编码值在 0 到 quantization_channels - 1 范围内的信号。
- Parameters
x (Tensor) – 输入张量
quantization_channels (int) – 通道数量
- Returns
经过 μ 律编码后的输入
- Return type
张量
mu_law_decoding¶
-
torchaudio.functional.mu_law_decoding(x_mu: torch.Tensor, quantization_channels: int) → torch.Tensor[source]¶ 解码mu-law编码的信号。更多信息请参见 维基百科条目
此函数期望输入值在 0 到 quantization_channels - 1 之间,并返回一个缩放至 -1 到 1 之间的信号。
- Parameters
x_mu (Tensor) – 输入张量
quantization_channels (int) – 通道数量
- Returns
经过 μ 律解码后的输入
- Return type
张量
complex_norm¶
角度¶
幅相¶
phase_vocoder¶
-
torchaudio.functional.phase_vocoder(complex_specgrams: torch.Tensor, rate: float, phase_advance: torch.Tensor) → torch.Tensor[source]¶ 给定一个 STFT 张量,在不改变音高的情况下,将时间速度提高
rate倍。- Parameters
complex_specgrams (Tensor) – 维度为 (…, freq, time, complex=2)
rate (float) – 加速因子
相位提前 (张量) – 每个bin中预期的相位提前。维度为(freq, 1)
- Returns
复杂的频谱图扩展,维度为(…, freq, ceil(time/rate), complex=2)
- Return type
张量
- Example
>>> freq, hop_length = 1025, 512 >>> # (channel, freq, time, complex=2) >>> complex_specgrams = torch.randn(2, freq, 300, 2) >>> rate = 1.3 # Speed up by 30% >>> phase_advance = torch.linspace( >>> 0, math.pi * hop_length, freq)[..., None] >>> x = phase_vocoder(complex_specgrams, rate, phase_advance) >>> x.shape # with 231 == ceil(300 / 1.3) torch.Size([2, 1025, 231, 2])
线性滤波器¶
-
torchaudio.functional.lfilter(waveform: torch.Tensor, a_coeffs: torch.Tensor, b_coeffs: torch.Tensor, clamp: bool = True) → torch.Tensor[source]¶ 通过评估差分方程执行 IIR 滤波。
- Parameters
波形图 (张量) – 维度为
(..., time)的音频波形。必须归一化到-1到1之间。a_coeffs (张量) – 差分方程的分母系数,维度为
(n_order + 1)。 较低延迟的系数在前,例如[a0, a1, a2, ...]。 必须与b_coeffs大小相同(如有必要,请用0填充)。b_coeffs (张量) – 差分方程的分子系数,维度为
(n_order + 1)。 延迟较小的系数在前,例如[b0, b1, b2, ...]。 必须与a_coeffs大小相同(如有必要,请用0填充)。clamp (bool, optional) – 如果为
True,则将输出信号限制在 [-1, 1] 范围内(默认值:True)
- Returns
波形维度为
(..., time)。- Return type
张量
双二次¶
-
torchaudio.functional.biquad(waveform: torch.Tensor, b0: float, b1: float, b2: float, a0: float, a1: float, a2: float) → torch.Tensor[source]¶ 对输入张量执行双二次滤波器。初始条件设置为 0。 https://en.wikipedia.org/wiki/Digital_biquad_filter
lowpass_biquad¶
-
torchaudio.functional.lowpass_biquad(waveform: torch.Tensor, sample_rate: int, cutoff_freq: float, Q: float = 0.707) → torch.Tensor[source]¶ 设计二阶低通滤波器并执行滤波操作。实现方式与 SoX 类似。
- Parameters
waveform (torch.Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
cutoff_freq (float) – 滤波器截止频率
Q (float, 可选) – https://zh.wikipedia.org/wiki/Q因子 (默认:
0.707)
- Returns
维度为 (…, time) 的波形
- Return type
张量
highpass_biquad¶
-
torchaudio.functional.highpass_biquad(waveform: torch.Tensor, sample_rate: int, cutoff_freq: float, Q: float = 0.707) → torch.Tensor[source]¶ 设计二阶高通滤波器并执行滤波操作。实现方式与 SoX 类似。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
cutoff_freq (float) – 滤波器截止频率
Q (float, 可选) – https://zh.wikipedia.org/wiki/Q因子 (默认:
0.707)
- Returns
波形维度为 (…, time)
- Return type
张量
allpass_biquad¶
-
torchaudio.functional.allpass_biquad(waveform: torch.Tensor, sample_rate: int, central_freq: float, Q: float = 0.707) → torch.Tensor[source]¶ 设计二阶全通滤波器。实现方式与 SoX 类似。
- Parameters
waveform (torch.Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
central_freq (float) – 中心频率(以赫兹为单位)
Q (float, 可选) – https://zh.wikipedia.org/wiki/Q因子 (默认:
0.707)
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF
equalizer_biquad¶
-
torchaudio.functional.equalizer_biquad(waveform: torch.Tensor, sample_rate: int, center_freq: float, gain: float, Q: float = 0.707) → torch.Tensor[source]¶ 设计双二阶峰值均衡器滤波器并执行滤波操作。实现方式与 SoX 类似。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
center_freq (float) – 滤波器的中心频率
增益 (float) – 在提升(或衰减)时所需的增益(以dB为单位)
Q (float, 可选) – https://zh.wikipedia.org/wiki/Q因子 (默认:
0.707)
- Returns
维度为 (…, time) 的波形
- Return type
张量
bandpass_biquad¶
-
torchaudio.functional.bandpass_biquad(waveform: torch.Tensor, sample_rate: int, central_freq: float, Q: float = 0.707, const_skirt_gain: bool = False) → torch.Tensor[source]¶ 设计二极点带通滤波器。实现方式与 SoX 类似。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
central_freq (float) – 中心频率(以赫兹为单位)
Q (float, 可选) – https://zh.wikipedia.org/wiki/Q因子 (默认:
0.707)const_skirt_gain (bool, optional) – 如果为
True,则使用恒定裙边增益(峰值增益 = Q)。 如果为False,则使用恒定的 0dB 峰值增益。(默认值:False)
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF
bandreject_biquad¶
-
torchaudio.functional.bandreject_biquad(waveform: torch.Tensor, sample_rate: int, central_freq: float, Q: float = 0.707) → torch.Tensor[source]¶ 设计二阶带阻滤波器。实现方式与 SoX 类似。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
central_freq (float) – 中心频率(以赫兹为单位)
Q (float, 可选) – https://zh.wikipedia.org/wiki/Q因子 (默认:
0.707)
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF
band_biquad¶
-
torchaudio.functional.band_biquad(waveform: torch.Tensor, sample_rate: int, central_freq: float, Q: float = 0.707, noise: bool = False) → torch.Tensor[source]¶ 设计二极点带通滤波器。实现方式与 SoX 类似。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
central_freq (float) – 中心频率(以赫兹为单位)
Q (浮点数, 可选) – https://zh.wikipedia.org/wiki/Q值 (默认:
0.707)。noise (bool, optional) – 如果为
True,则使用非音高音频(例如打击乐)的替代模式。 如果为False,则使用面向音高音频的模式,即人声、歌唱或器乐音乐(默认值:False)。
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF
treble_biquad¶
-
torchaudio.functional.treble_biquad(waveform: torch.Tensor, sample_rate: int, gain: float, central_freq: float = 3000, Q: float = 0.707) → torch.Tensor[source]¶ 设计一个三波段音调控制效果。类似于 SoX 的实现。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
增益 (float) – 在提升(或衰减)时所需的增益(以dB为单位)。
central_freq (float, 可选) – 中心频率(以 Hz 为单位)。(默认值:
3000)Q (浮点数, 可选) – https://zh.wikipedia.org/wiki/Q值 (默认:
0.707)。
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF
bass_biquad¶
-
torchaudio.functional.bass_biquad(waveform: torch.Tensor, sample_rate: int, gain: float, central_freq: float = 100, Q: float = 0.707) → torch.Tensor[source]¶ 设计一个低音音调控制效果。类似于 SoX 的实现。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
增益 (float) – 在提升(或衰减)时所需的增益(以dB为单位)。
central_freq (float, 可选) – 中心频率(以 Hz 为单位)。(默认值:
100)Q (浮点数, 可选) – https://zh.wikipedia.org/wiki/Q值 (默认:
0.707)。
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF
deemph_biquad¶
-
torchaudio.functional.deemph_biquad(waveform: torch.Tensor, sample_rate: int) → torch.Tensor[source]¶ 应用 ISO 908 CD 去加重(搁架)IIR 滤波器。实现方式与 SoX 类似。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,允许的采样率为
44100或48000
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF
riaa_biquad¶
-
torchaudio.functional.riaa_biquad(waveform: torch.Tensor, sample_rate: int) → torch.Tensor[source]¶ 应用RIAA黑胶播放均衡化。与SoX实现类似。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)。 允许的采样率(单位:Hz):
44100,``48000``,``88200``,``96000``
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF
对比度¶
-
torchaudio.functional.contrast(waveform: torch.Tensor, enhancement_amount: float = 75.0) → torch.Tensor[source]¶ 应用对比效果。与 SoX 实现类似。该效果类似于压缩,可修改音频信号使其听起来更响亮。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
增强量 (float) – 控制增强量 允许的enhancement_amount范围:0-100 请注意,当enhancement_amount = 0时仍然会显著增强对比度
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
直流偏移¶
超频¶
相位器¶
-
torchaudio.functional.phaser(waveform: torch.Tensor, sample_rate: int, gain_in: float = 0.4, gain_out: float = 0.74, delay_ms: float = 3.0, decay: float = 0.4, mod_speed: float = 0.5, sinusoidal: bool = True) → torch.Tensor[source]¶ 对音频应用相位效果。类似于 SoX 的实现。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频波形
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
gain_in (float) – 所需输入增益(或衰减)的dB值 允许的值范围为0到1
gain_out (float) – 所需输出增益(或衰减)的dB值 允许的值范围为 0 到 1e9
delay_ms (float) – 毫秒为单位的期望延迟 允许的值范围是 0 到 5.0
衰减 (float) – 相对于增益的期望衰减 允许的值范围是从 0 到 0.99
mod_speed (float) – 调制速度(Hz) 允许的值范围为 0.1 到 2
正弦波 (bool) – 如果为
True,使用正弦波调制(适合多种乐器) 如果为False,使用三角波调制(使单个乐器产生更尖锐的相位效果) (默认值:True)
- Returns
维度为 (…, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html Scott Lehman, 效果详解, http://harmony-central.com/Effects/effects-explained.html
镶边器¶
-
torchaudio.functional.flanger(waveform: torch.Tensor, sample_rate: int, delay: float = 0.0, depth: float = 2.0, regen: float = 0.0, width: float = 71.0, speed: float = 0.5, phase: float = 25.0, modulation: str = 'sinusoidal', interpolation: str = 'linear') → torch.Tensor[source]¶ 对音频应用镶边效果。实现方式类似于 SoX。
- Parameters
waveform (Tensor) – 维度为 (…, channel, time) 的音频波形。 最多允许 4 个通道
sample_rate (int) – 波形的采样率,例如 44100 (Hz)
延迟 (浮点数) – 所需的延迟时间,单位为毫秒(ms) 允许的值范围是 0 到 30
深度 (float) – 希望的延迟深度(毫秒) 允许的值范围是从 0 到 10
regen (float) – 所需的再生(反馈增益)值,单位为 dB 允许的取值范围是 -95 到 95
宽度 (浮点数) – 期望的宽度(延迟增益),单位为dB 允许的值范围是0到100
速度 (浮点数) – 调制速度,单位为赫兹 (Hz) 允许的取值范围是 0.1 到 10
phase (float) – 多通道的百分比相移 允许的值范围是从 0 到 100
调制 (str) – 使用“正弦”或“三角形”调制。 (默认:
sinusoidal)插值 (str) – 使用“linear”或“quadratic”进行延迟线插值。 (默认:
linear)
- Returns
维度为 (…, channel, time) 的波形
- Return type
张量
参考文献
http://sox.sourceforge.net/sox.html
Scott Lehman, 效果详解, https://web.archive.org/web/20051125072557/http://www.harmony-central.com/Effects/effects-explained.html
mask_along_axis¶
mask_along_axis_iid¶
compute_deltas¶
-
torchaudio.functional.compute_deltas(specgram: torch.Tensor, win_length: int = 5, mode: str = 'replicate') → torch.Tensor[source]¶ 计算张量(通常是频谱图)的差分系数:
\[d_t = \frac{\sum_{n=1}^{\text{N}} n (c_{t+n} - c_{t-n})}{2 \sum_{n=1}^{\text{N}} n^2} \]其中 \(d_t\) 是时间 \(t\) 处的增量, \(c_t\) 是时间 \(t\) 处的频谱图系数, \(N\) 是
(win_length-1)//2。- Parameters
- Returns
维度为 (…, 频率, 时间) 的张量的差分
- Return type
张量
- Example
>>> specgram = torch.randn(1, 40, 1000) >>> delta = compute_deltas(specgram) >>> delta2 = compute_deltas(delta)
detect_pitch_frequency¶
sliding_window_cmn¶
-
torchaudio.functional.sliding_window_cmn(waveform: torch.Tensor, cmn_window: int = 600, min_cmn_window: int = 100, center: bool = False, norm_vars: bool = False) → torch.Tensor[source]¶ 对每个语音片段应用滑动窗口倒谱均值(以及可选的方差)归一化。
- Parameters
波形图 (张量) – 维度为 (…, 频率, 时间) 的音频张量
cmn_window (int, optional) – 用于计算运行平均CMN的帧数窗口(int,默认值 = 600)
min_cmn_window (int, optional) – 解码开始时使用的最小 CMN 窗口(仅在开始时增加延迟)。 仅当 center == false 时适用,如果 center==true 则被忽略(int,默认值 = 100)
center (bool, optional) – 如果为 true,则使用以当前帧为中心的窗口(在可能的情况下,模去端点效应)。如果为 false,则窗口位于左侧。(bool,默认值 = false)
norm_vars (bool, optional) – 如果为 true,则将方差归一化为 1。(bool,默认值 = false)
- Returns
频率张量,维度为 (…, 帧)
- Return type
张量
语音活动检测¶
-
torchaudio.functional.vad(waveform: torch.Tensor, 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) → torch.Tensor[source]¶ 语音活动检测器。实现方式与 SoX 类似。 旨在从语音录音的开头和结尾处修剪静音及安静的背景声音。 该算法目前使用简单的倒谱功率测量来检测语音, 因此可能会被其他声音(尤其是音乐)所误导。
该效果仅能从音频前端进行修剪,因此若要从后端修剪,还必须使用反向效果。
- Parameters
waveform (Tensor) – 维度为 (…, time) 的音频张量
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) 算法(内部)– 用于检测所需音频开始的估计/缩减。此选项设置初始噪声估计的时间。(默认值:0.35)
noise_up_time (float, optional) – 用于噪声水平增加时。(默认值:0.1)
noise_down_time (float, optional) – 用于噪声水平下降时。(默认值:0.01)
noise_reduction_amount (float, optional) – 检测算法(例如 0, 0.5, …)。(默认值:1.35)
measure_freq (float, 可选) – 处理/测量。(默认值:20.0)
measure_duration – (float, 可选) 测量持续时间。 (默认值:测量周期的两倍;即存在重叠。)
measure_smooth_time (float, 可选) – 频谱测量。(默认值:0.4)
hp_filter_freq (float, optional) – 在检测算法的输入端。(默认值:50.0)
lp_filter_freq (float, optional) – 在检测算法的输入端。 (默认值: 6000.0)
hp_lifter_freq (float, 可选) – 在检测器算法中。(默认值:150.0)
lp_lifter_freq (float, 可选) – 在检测器算法中。(默认值:2000.0)
- Returns
音频张量,维度为 (…, 时间)。
- Return type
张量
参考文献