torchaudio.functional¶
执行常见音频操作的函数。
实用工具¶
amplitude_to_DB¶
DB_to_amplitude¶
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¶
mask_along_axis¶
mask_along_axis_iid¶
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
过滤¶
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
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
对比度¶
-
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
张量
参考文献
dcshift¶
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
抖动¶
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
增益¶
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
张量
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
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
张量
overdrive¶
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
张量
参考文献
频谱图¶
-
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 (float 或 None) – 幅度谱图的指数, (必须 > 0),例如:1 表示能量,2 表示功率等。 如果为 None,则返回复数频谱。
normalized (bool) – 是否在 stft 后按幅度进行归一化
center (bool, optional) – 是否对
waveform两侧进行填充,使得第 \(t\) 帧位于时间 \(t \times \text{hop\_length}\) 的中心。 默认值:Truepad_mode (string, optional) – 控制当
center为True时使用的填充方法。默认值:"reflect"onesided (bool, optional) – 控制是否返回一半的结果以避免冗余。默认值:
True
- Returns
维度 (…, 频率, 时间),频率是
n_fft // 2 + 1和n_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 可能无法收敛。
rand_init (bool) – 如果为 True,则随机初始化相位;否则初始化为零。
- Returns
(…, time) 的波形,其中 time 等于给定的
length参数。- Return type
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
- 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
张量
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 > 0和simulate_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:
一种针对自动语音识别优化的音高提取算法
Ghahremani, B. 巴巴阿里,D. Povey,K. Riedhammer,J. Trmal 和 S. Khudanpur
2014年IEEE国际声学、语音与信号处理会议(ICASSP),
佛罗伦萨,2014年,第2494-2498页,doi: 10.1109/ICASSP.2014.6854049.