目录

torchaudio.functional

执行常见音频操作的函数。

实用工具

amplitude_to_DB

torchaudio.functional.amplitude_to_DB(x: torch.Tensor, multiplier: float, amin: float, db_multiplier: float, top_db: Optional[float] = None) → torch.Tensor[source]

将频谱图从功率/幅度刻度转换为分贝刻度。

批次中每个张量的输出取决于该张量的最大值,因此对于分割成片段与完整片段的音频剪辑,可能会返回不同的值。

Parameters
  • x (Tensor) – 转换为分贝尺度之前的输入频谱图。输入应采用 (…, freq, time) 形式。批处理输入应包含通道维度,并采用 (batch, channel, freq, time) 形式。

  • multiplier (float) – 功率使用 10.,振幅使用 20.

  • amin (float) – 要截断的数字 x

  • db_multiplier (float) – Log10(max(参考值和 amin))

  • top_db (floatNone, 可选) – 分贝中的最小负截止值。一个合理的数值是 80。(默认:None

Returns

以分贝刻度输出的张量

Return type

张量

DB_to_amplitude

torchaudio.functional.DB_to_amplitude(x: torch.Tensor, ref: float, power: float) → torch.Tensor[source]

将张量从分贝刻度转换为功率/幅度刻度。

Parameters
  • x (Tensor) – 转换为功率/幅度尺度之前的输入张量。

  • ref (float) – 输出将按此参考值进行缩放。

  • power (float) – 如果 power 等于 1,将计算 DB 的幂。如果为 0.5,将计算 DB 到振幅。

Returns

输出张量采用功率/幅度比例。

Return type

张量

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
  • n_freqs (int) – 要突出显示/应用的频率数量

  • f_min (float) – 最小频率 (Hz)

  • f_max (float) – 最大频率 (Hz)

  • n_mels (int) – 梅尔滤波器组数量

  • sample_rate (int) – 音频波形的采样率

  • norm (可选[str]) – 如果为 'slaney',则按梅尔频带的宽度除以三角形梅尔权重

  • 归一化)。(默认值)((面积) – None

Returns

大小为 (n_freqs, n_mels) 的三角形滤波器组(fb 矩阵) 意味着要突出显示/应用于 x 的频率数量,即滤波器组的数量。 每一列都是一个滤波器组,因此假设存在一个大小为 (…, n_freqs) 的矩阵 A,应用后的结果将是 A * create_fb_matrix(A.size(-1), ...)

Return type

张量

create_dct

torchaudio.functional.create_dct(n_mfcc: int, n_mels: int, norm: Optional[str]) → torch.Tensor[source]

创建一个形状为 (n_mels, n_mfcc) 的 DCT 变换矩阵, 根据 norm 进行归一化。

Parameters
  • n_mfcc (int) – 要保留的 mfc 系数数量

  • n_mels (int) – 梅尔滤波器组数量

  • norm (strNone) – 要使用的范数('ortho' 或 None)

Returns

要右乘到大小为 (n_mels, n_mfcc) 的行式数据上的变换矩阵。

Return type

张量

mask_along_axis

torchaudio.functional.mask_along_axis(specgram: torch.Tensor, mask_param: int, mask_value: float, axis: int) → torch.Tensor[source]

沿 axis 应用掩码。掩码将从索引 [v_0, v_0 + v) 开始应用,其中 vuniform(0, mask_param) 中采样,而 v_0uniform(0, max_v - v) 中采样。 所有示例将具有相同的掩码区间。

Parameters
  • specgram (张量) – 实际频谱图(通道,频率,时间)

  • mask_param (int) – 要屏蔽的列数将从 [0, mask_param] 中均匀采样

  • mask_value (float) – 要分配给被屏蔽列的值

  • axis (int) – 应用掩码的轴(1 -> 频率,2 -> 时间)

Returns

维度为 (通道, 频率, 时间) 的掩码频谱图

Return type

张量

mask_along_axis_iid

torchaudio.functional.mask_along_axis_iid(specgrams: torch.Tensor, mask_param: int, mask_value: float, axis: int) → torch.Tensor[source]

沿 axis 应用掩码。掩码将从索引 [v_0, v_0 + v) 开始应用,其中 vuniform(0, mask_param) 中采样,而 v_0uniform(0, max_v - v) 中采样。

Parameters
  • 频谱图 (张量) – 实际频谱图(批次,通道,频率,时间)

  • mask_param (int) – 要屏蔽的列数将从 [0, mask_param] 中均匀采样

  • mask_value (float) – 要分配给被屏蔽列的值

  • axis (int) – 应用掩码的轴(2 -> 频率,3 -> 时间)

Returns

维度为(批次,通道,频率,时间)的掩码频谱图

Return type

张量

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

张量

apply_codec

torchaudio.functional.apply_codec(waveform: torch.Tensor, sample_rate: int, format: str, channels_first: bool = True, compression: Optional[float] = None, encoding: Optional[str] = None, bits_per_sample: Optional[int] = None) → torch.Tensor[source]

将编解码器作为一种增强形式进行应用。

Parameters
  • waveform (Tensor) – 音频数据。必须是二维的。另见 `channels_first`

  • sample_rate (int) – 音频波形的采样率。

  • format (str) – 文件格式。

  • channels_first (bool) – 当为 True 时,输入和输出 Tensor 的维度为 [channel, time]。 否则,它们的维度为 [time, channel]

  • 压缩 (浮点数) – 用于 WAV 格式以外的格式。 有关详细信息,请参阅 torchaudio.backend.sox_io_backend.save()

  • 编码 (str, 可选) – 更改支持格式的编码。 有关详细信息,请参阅 torchaudio.backend.sox_io_backend.save()

  • bits_per_sample (int, 可选) – 更改受支持格式的位深度。 有关详细信息,请参阅 torchaudio.backend.sox_io_backend.save()

Returns

生成的张量。 如果 channels_first=True,它有 [channel, time] 否则 [time, channel]

Return type

torch.Tensor

复杂工具

伪复数张量的实用工具。此工具不适用于原生复数数据类型(例如 cfloat64),而是适用于具有实值类型并在末尾包含额外维度以表示实部和虚部的张量。

角度

torchaudio.functional.angle(complex_tensor: torch.Tensor) → torch.Tensor[source]

计算复数张量输入的相位角。

Parameters

complex_tensor (Tensor) – 形状为 (…, complex=2) 的张量

Returns

复数张量的角度。形状为 (…, )

Return type

张量

complex_norm

torchaudio.functional.complex_norm(complex_tensor: torch.Tensor, power: float = 1.0) → torch.Tensor[source]

计算复数张量输入的范数。

Parameters
  • complex_tensor (Tensor) – 形状为 (…, complex=2) 的张量

  • power (浮点数) – 范数的幂。 (默认: 1.0)。

Returns

归一化输入张量的幂。形状为 (…, )

Return type

张量

magphase

torchaudio.functional.magphase(complex_tensor: torch.Tensor, power: float = 1.0) → Tuple[torch.Tensor, torch.Tensor][source]

将形状为 (…, 2) 的复数频谱分离为其幅度和相位。

Parameters
  • complex_tensor (Tensor) – 形状为 (…, complex=2) 的张量

  • power (浮点数) – 范数的幂。 (默认: 1.0)

Returns

复数张量的幅值和相位

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
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

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

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

二阶节

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

Parameters
  • waveform (Tensor) – 维度为 (…, time) 的音频波形

  • b0 (float) – 当前输入 x[n] 的分子系数

  • b1 (float) – 一个时间步长前的输入系数 x[n-1]

  • b2 (float) – 两个时间步前的输入系数 x[n-2]

  • a0 (float) – 当前输出 y[n] 的分母系数,通常为 1

  • a1 (float) – 当前输出 y[n-1] 的分母系数

  • a2 (float) – 当前输出 y[n-2] 的分母系数

Returns

维度为 (…, time) 的波形

Return type

张量

对比度

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

张量

参考文献

http://sox.sourceforge.net/sox.html

dcshift

torchaudio.functional.dcshift(waveform: torch.Tensor, shift: float, limiter_gain: Optional[float] = None) → torch.Tensor[source]

对音频应用直流偏移。实现方式与 SoX 类似。 此功能可用于从音频中去除直流偏移(该偏移可能由录音链中的硬件问题引起)。

Parameters
  • waveform (Tensor) – 维度为 (…, time) 的音频波形

  • shift (float) – 指示音频的移位量 shift 允许的值范围:-2.0 到 +2.0

  • limiter_gain (float) – 它仅用于峰值以防止削波 它应该有一个远小于1的值(例如0.05或0.02)

Returns

维度为 (…, time) 的波形

Return type

张量

参考文献

http://sox.sourceforge.net/sox.html

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) – 波形的采样率,允许的采样率为 4410048000

Returns

维度为 (…, time) 的波形

Return type

张量

参考文献

http://sox.sourceforge.net/sox.html https://www.w3.org/2011/audio/audio-eq-cookbook.html#APF

抖动

torchaudio.functional.dither(waveform: torch.Tensor, density_function: str = 'TPDF', noise_shaping: bool = False) → torch.Tensor[source]

抖动通过在特定位深度存储的音频中消除非线性截断失真(即添加最小可感知噪声以掩盖量化引起的失真),提高了音频的感知动态范围。

Parameters
  • waveform (Tensor) – 维度为 (…, time) 的音频张量

  • density_function (str, optional) – 连续随机变量的密度函数。可选值之一为 "TPDF"(三角概率密度函数)、 "RPDF"(矩形概率密度函数)或 "GPDF"(高斯概率密度函数)(默认值:"TPDF")。

  • noise_shaping (bool, optional) – 一种塑造量化误差频谱能量的滤波过程(默认值:False

Returns

加性噪声波形

Return type

张量

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

张量

flanger

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

增益

torchaudio.functional.gain(waveform: torch.Tensor, gain_db: float = 1.0) → torch.Tensor[source]

对整个波形应用放大或衰减。

Parameters
  • waveform (Tensor) – 维度为 (…, time) 的音频张量。

  • gain_db (float, 可选) 分贝增益调整 (dB) – 1.0).

Returns

整个波形被 gain_db 放大。

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
Returns

波形维度为 (…, time)

Return type

张量

lfilter

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

张量

lowpass_biquad

torchaudio.functional.lowpass_biquad(waveform: torch.Tensor, sample_rate: int, cutoff_freq: float, Q: float = 0.707) → torch.Tensor[source]

设计二阶低通滤波器并执行滤波操作。实现方式与 SoX 类似。

Parameters
Returns

维度为 (…, time) 的波形

Return type

张量

overdrive

torchaudio.functional.overdrive(waveform: torch.Tensor, gain: float = 20, colour: float = 20) → torch.Tensor[source]

对音频应用过载效果。类似于 SoX 的实现。 此效果会对音频信号施加非线性失真。

Parameters
  • waveform (Tensor) – 维度为 (…, time) 的音频波形

  • 增益 (float) – 在提升(或衰减)时所需的增益值(以dB为单位) 允许的值范围是从 0 到 100

  • 颜色 (float) – 控制过载输出中偶次谐波含量的量 允许的值范围是从 0 到 100

Returns

维度为 (…, time) 的波形

Return type

张量

参考文献

http://sox.sourceforge.net/sox.html

phaser

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 斯科特·莱汉姆,效果详解, https://web.archive.org/web/20051125072557/http://www.harmony-central.com/Effects/effects-explained.html

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

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

vad

特征提取

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

张量

参考文献

http://sox.sourceforge.net/sox.html

频谱图

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, center: bool = True, pad_mode: str = 'reflect', onesided: bool = True) → torch.Tensor[source]

从原始音频信号创建频谱图或一批频谱图。 频谱图可以是仅幅度形式,也可以是复数形式。

Parameters
  • waveform (Tensor) – 维度为 (…, time) 的音频张量

  • pad (int) – 信号的双边填充

  • window (Tensor) – 应用于/乘以每个帧/窗口的窗口张量

  • n_fft (int) – FFT 大小

  • hop_length (int) – STFT 窗口之间的跳跃长度

  • win_length (int) – 窗口大小

  • power (floatNone) – 幅度谱图的指数, (必须 > 0),例如:1 表示能量,2 表示功率等。 如果为 None,则返回复数频谱。

  • normalized (bool) – 是否在 stft 后按幅度进行归一化

  • center (bool, optional) – 是否对 waveform 两侧进行填充,使得第 \(t\) 帧位于时间 \(t \times \text{hop\_length}\) 的中心。 默认值:True

  • pad_mode (string, optional) – 控制当 centerTrue 时使用的填充方法。默认值:"reflect"

  • onesided (bool, optional) – 控制是否返回一半的结果以避免冗余。默认值:True

Returns

维度 (…, 频率, 时间),频率是 n_fft // 2 + 1n_fft 是傅里叶频谱的数量,时间是窗口跳跃的次数(n_frame)。

Return type

张量

格里芬 - 利姆

torchaudio.functional.griffinlim(specgram: torch.Tensor, window: torch.Tensor, n_fft: int, hop_length: int, win_length: int, power: float, normalized: bool, n_iter: int, momentum: float, length: Optional[int], rand_init: bool) → torch.Tensor[source]
Compute waveform from a linear scale magnitude spectrogram using the Griffin-Lim transformation.

实现由librosa移植。

  • [1] McFee, Brian, Colin Raffel, Dawen Liang, Daniel PW Ellis, Matt McVicar, Eric Battenberg, and Oriol Nieto.

    “ librosa:基于 Python 的音频和音乐信号分析。” 载于第 14 届科学计算中的 Python 会议论文集,第 18-25 页,2015 年。

  • [2] Perraudin, N., Balazs, P., & Søndergaard, P. L.

    “一种快速的Griffin-Lim算法”, 信号处理在音频与声学应用方面的IEEE研讨会(第1-4页), 2013年10月。

  • [3] D. W. Griffin and J. S. Lim,

    “基于修改后的短时傅里叶变换的信号估计”, IEEE 信号处理汇刊,第32卷,第2期,第236-243页,1984年4月。

Parameters
  • specgram (Tensor) – 维度为 (…, freq, frames) 的仅包含幅度的 STFT 频谱图,其中 freq 为 n_fft // 2 + 1

  • window (Tensor) – 应用于/乘以每个帧/窗口的窗口张量

  • n_fft (int) – FFT 大小,创建 n_fft // 2 + 1 个频带

  • hop_length (int) – STFT 窗口之间的跳跃长度。( 默认值: win_length // 2)

  • win_length (int) – 窗口大小。(默认值:n_fft

  • power (float) – 幅度谱的指数, (必须 > 0),例如:1 表示能量,2 表示功率等。

  • 标准化 (bool) – 在短时傅里叶变换后是否通过幅度进行标准化。

  • n_iter (int) – 相位恢复过程的迭代次数。

  • momentum (float) – 快速 Griffin-Lim 的动量参数。 将其设置为 0 可恢复原始的 Griffin-Lim 方法。 接近 1 的值可以导致更快的收敛,但大于 1 可能无法收敛。

  • length (intNone) – 预期输出的数组长度。

  • rand_init (bool) – 如果为 True,则随机初始化相位;否则初始化为零。

Returns

(…, time) 的波形,其中 time 等于给定的 length 参数。

Return type

torch.Tensor

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])

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
  • 频谱图 (张量) – 维度为 (…, 频率, 时间) 的音频张量

  • win_length (int, optional) – 用于计算 delta 的窗口长度(默认值:5

  • mode (str, optional) – 传递给填充的模式参数(默认值:"replicate"

Returns

维度为 (…, 频率, 时间) 的张量的差分

Return type

张量

Example
>>> specgram = torch.randn(1, 40, 1000)
>>> delta = compute_deltas(specgram)
>>> delta2 = compute_deltas(delta)

detect_pitch_frequency

torchaudio.functional.detect_pitch_frequency(waveform: torch.Tensor, sample_rate: int, frame_time: float = 0.01, win_length: int = 30, freq_low: int = 85, freq_high: int = 3400) → torch.Tensor[source]

检测音高频率。

该实现采用归一化互相关函数和中值平滑。

Parameters
  • 波形图 (张量) – 维度为 (…, 频率, 时间) 的音频张量

  • sample_rate (int) – 波形的采样率(Hz)

  • frame_time (float, optional) – 帧的持续时间(默认值:10 ** (-2))。

  • win_length (int, optional) – 中值平滑的窗口长度(以帧数为单位)(默认:30)。

  • freq_low (int, optional) – 可检测的最低频率(Hz)(默认值:85)。

  • freq_high (int, optional) – 可检测的最高频率(Hz)(默认值:3400)。

Returns

频率张量,维度为 (…, 帧)

Return type

张量

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

张量

compute_kaldi_pitch

torchaudio.functional.compute_kaldi_pitch(waveform: torch.Tensor, sample_rate: float, frame_length: float = 25.0, frame_shift: float = 10.0, min_f0: float = 50, max_f0: float = 400, soft_min_f0: float = 10.0, penalty_factor: float = 0.1, lowpass_cutoff: float = 1000, resample_frequency: float = 4000, delta_pitch: float = 0.005, nccf_ballast: float = 7000, lowpass_filter_width: int = 1, upsample_filter_width: int = 5, max_frames_latency: int = 0, frames_per_chunk: int = 0, simulate_first_pass_online: bool = False, recompute_frame: int = 500, snip_edges: bool = True) → torch.Tensor[source]

根据文献 [1] 中描述的方法提取基频。

此函数计算与 Kaldi 中 compute-kaldi-pitch-feats 等效的结果。

Parameters
  • waveform (Tensor) – 形状为 (…, time) 的输入波形。

  • sample_rate (float) – waveform的采样率。

  • frame_length (float, optional) – 以毫秒为单位的帧长度。(默认值:25.0)

  • frame_shift (float, optional) – 帧移,单位:毫秒。(默认值:10.0)

  • min_f0 (float, optional) – 要搜索的最小 F0(Hz)(默认值:50.0)

  • max_f0 (float, optional) – 搜索的最大 F0(Hz)(默认值:400.0)

  • soft_min_f0 (float, optional) – 最小 f0,以柔和方式应用,不得超过 min-f0(默认值:10.0)

  • penalty_factor (float, optional) – FO 变化的成本因子。(默认值:0.1)

  • lowpass_cutoff (float, optional) – 低通滤波器的截止频率(Hz)(默认值:1000)

  • resample_frequency (float, optional) – 我们要将信号下采样到的频率。必须大于低通截止频率的两倍。 (默认值:4000)

  • delta_pitch (float, optional) – 我们的算法测量的最小相对音高变化。(默认值:0.005)

  • nccf_ballast (float, optional) – 增加此因子可降低静音帧的 NCCF(默认值:7000)

  • lowpass_filter_width (int, optional) – 确定低通滤波器宽度的整数,值越大滤波器越锐利。 (默认值:1)

  • upsample_filter_width (int, optional) – 确定上采样 NCCF 时滤波器宽度的整数。(默认值:5)

  • max_frames_latency (int, optional) – 允许音高跟踪在特征处理中引入的最大延迟帧数(仅当 frames_per_chunk > 0simulate_first_pass_online=True 时影响输出)(默认值:0)

  • frames_per_chunk (int, optional) – 用于能量归一化的帧数。(默认值:0)

  • simulate_first_pass_online (bool, optional) – 如果为 true,该函数将输出与在线解码器在解码第一遍中看到的特征相对应的特征——而不是默认的最终版本特征。(默认值:False) 当 frames_per_chunk > 0 时相关。

  • recompute_frame (int, optional) – 仅与在线音高提取的兼容性相关。 一个非关键参数;在修订信号能量估计后,我们重新计算某些前向指针的帧。 当 frames_per_chunk > 0 时相关。(默认值:500)

  • snip_edges (bool, optional) – 如果此参数设置为 false,则不会裁剪靠近结束边缘的不完整帧, 因此帧数等于文件大小除以帧移。 这使得不同类型的特征具有相同数量的帧。(默认值:True)

Returns

音高特征。形状:(batch, frames 2),其中最后一维对应音高和NCCF。

Return type

张量

Reference:
  • 一种针对自动语音识别优化的音高提取算法

    1. Ghahremani, B. 巴巴阿里,D. Povey,K. Riedhammer,J. Trmal 和 S. Khudanpur

    2014年IEEE国际声学、语音与信号处理会议(ICASSP),

    佛罗伦萨,2014年,第2494-2498页,doi: 10.1109/ICASSP.2014.6854049.

spectral_centroid

torchaudio.functional.spectral_centroid(waveform: torch.Tensor, sample_rate: int, pad: int, window: torch.Tensor, n_fft: int, hop_length: int, win_length: int) → torch.Tensor[source]

沿时间轴计算每个通道的频谱质心。

频谱质心定义为频率值的加权平均值,权重为其幅度。

Parameters
  • waveform (Tensor) – 维度为 (…, time) 的音频张量

  • sample_rate (int) – 音频波形的采样率

  • pad (int) – 信号的双边填充

  • window (Tensor) – 应用于/乘以每个帧/窗口的窗口张量

  • n_fft (int) – FFT 大小

  • hop_length (int) – STFT 窗口之间的跳跃长度

  • win_length (int) – 窗口大小

Returns

维度 (…, 时间)

Return type

张量

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源