torchaudio.models¶
models 子包包含用于解决常见音频任务的模型定义。
ConvTasNet¶
-
class
torchaudio.models.ConvTasNet(num_sources: int = 2, enc_kernel_size: int = 16, enc_num_feats: int = 512, msk_kernel_size: int = 3, msk_num_feats: int = 128, msk_num_hidden_feats: int = 512, msk_num_layers: int = 8, msk_num_stacks: int = 3)[source]¶ Conv-TasNet:一个全卷积时域音频分离网络
- Parameters
num_sources (int) – 分割的源的数量。
编码器/解码器卷积核大小 (int) – 编码器/解码器的卷积核大小,
。 enc_num_feats (int) – 传递给掩码生成器的特征维度,
。 msk_kernel_size (int) – 掩码生成器的卷积核大小,<P>。
msk_num_feats (int) – 掩码生成器中卷积块的输入/输出特征维度,<B, Sc>。
msk_num_hidden_feats (int) – 掩码生成器中卷积块的内部特征维度,<H>。
掩码层数 (int) – 掩码生成器中每个卷积块的层数,<X>。
msk_num_stacks (int) – mask生成器的卷积块数量,<R>。
注意
此实现对应于论文中的“非因果”设置。
- Reference:
Conv-TasNet:超越理想时频幅度掩蔽的语音分离技术
罗、逸和梅萨加尼、尼玛
-
forward(input: torch.Tensor) → torch.Tensor[source]¶ 执行源分离。生成音频源波形。
- Parameters
input (torch.Tensor) – 形状为 [batch, channel==1, frames] 的 3D 张量
- Returns
形状为 [batch, channel==num_sources, frames] 的三维张量
- Return type
Wav2Letter¶
-
class
torchaudio.models.Wav2Letter(num_classes: int = 40, input_type: str = 'waveform', num_features: int = 1)[source]¶ Wav2Letter 模型架构来自 Wav2Letter:基于卷积网络的端到端语音识别系统。
\(\text{padding} = \frac{\text{ceil}(\text{kernel} - \text{stride})}{2}\)
- Parameters
-
forward(x: torch.Tensor) → torch.Tensor[source]¶ - Parameters
x (torch.Tensor) – 维度为 (batch_size, num_features, input_length) 的张量。
- Returns
维度为 (batch_size, number_of_classes, input_length) 的预测张量。
- Return type
张量
WaveRNN¶
-
class
torchaudio.models.WaveRNN(upsample_scales: List[int], n_classes: int, hop_length: int, n_res_block: int = 10, n_rnn: int = 512, n_fc: int = 512, kernel_size: int = 5, n_freq: int = 128, n_hidden: int = 128, n_output: int = 128)[source]¶ 基于 fatchord 实现的 WaveRNN 模型。
原始实现发表于 “高效神经音频合成”。 波形和频谱图的输入通道必须为 1。乘积 upsample_scales 必须等于 hop_length。
- Parameters
upsample_scales – 上采样比例列表。
n_classes – 输出类别的数量。
hop_length – 连续帧起始点之间的样本数。
n_res_block – 堆叠中 ResBlock 的数量。(默认值:
10)n_rnn – RNN 层的维度。(默认值:
512)n_fc – 全连接层的维度。(默认值:
512)kernel_size – 第一个 Conv1d 层中的卷积核大小数量。(默认值:
5)n_freq – 频谱图中的分箱数量。(默认值:
128)n_hidden – resblock 的隐藏层维度数量。(默认值:
128)n_output – melresnet 的输出维度数量。(默认值:
128)
- Example
>>> wavernn = WaveRNN(upsample_scales=[5,5,8], n_classes=512, hop_length=200) >>> waveform, sample_rate = torchaudio.load(file) >>> # waveform shape: (n_batch, n_channel, (n_time - kernel_size + 1) * hop_length) >>> specgram = MelSpectrogram(sample_rate)(waveform) # shape: (n_batch, n_channel, n_freq, n_time) >>> output = wavernn(waveform, specgram) >>> # output shape: (n_batch, n_channel, (n_time - kernel_size + 1) * hop_length, n_classes)
-
forward(waveform: torch.Tensor, specgram: torch.Tensor) → torch.Tensor[source]¶ 将输入通过 WaveRNN 模型。
- Parameters
waveform – WaveRNN 层的输入波形 (n_batch, 1, (n_time - kernel_size + 1) * hop_length)
specgram – 输入到 WaveRNN 层的频谱图 (n_batch, 1, n_freq, n_time)
- Returns
(批次大小, 1, (时间长度 - 内核大小 + 1) * 滑动步长, 类别数量)
- Return type
张量形状