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]¶
WaveRNN 模型來自 Efficient Neural Audio Synthesis [Kalchbrenner et al., 2018],基於 fatchord/WaveRNN 的實作。
原始實作於 Efficient Neural Audio Synthesis [Kalchbrenner et al., 2018] 中提出。波形和頻譜圖的輸入通道必須為 1。upsample_scales 的乘積必須等於 hop_length。
另請參閱
torchaudio.pipelines.Tacotron2TTSBundle
: 具有預訓練模型的 TTS 管道。
- 參數:
upsample_scales – 上採樣比例的清單。
n_classes – 輸出類別的數量。
hop_length – 連續幀開始之間的樣本數。
n_res_block – 堆疊中的 ResBlock 數量。(預設值:
10
)n_rnn – RNN 層的維度。(預設值:
512
)n_fc – 全連接層的維度。(預設值:
512
)kernel_size – 第一個 Conv1d 層中的核心大小。(預設值:
5
)n_freq – 頻譜圖中的 bin 數量。(預設值:
128
)n_hidden – resblock 的隱藏維度數量。(預設值:
128
)n_output – melresnet 的輸出維度數量。(預設值:
128
)
- 範例
>>> 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)
- 使用
WaveRNN
的教學
方法¶
forward¶
- WaveRNN.forward(waveform: Tensor, specgram: Tensor) Tensor [source]¶
將輸入傳遞到 WaveRNN 模型。
- 參數:
waveform – WaveRNN 層的輸入波形 (n_batch, 1, (n_time - kernel_size + 1) * hop_length)
specgram – WaveRNN 層的輸入頻譜圖 (n_batch, 1, n_freq, n_time)
- 返回:
shape (n_batch, 1, (n_time - kernel_size + 1) * hop_length, n_classes)
- 返回類型:
Tensor
infer¶
- WaveRNN.infer(specgram: Tensor, lengths: Optional[Tensor] = None) Tuple[Tensor, Optional[Tensor]] [source]¶
WaveRNN 的推論方法。
此函數目前僅支援多項式採樣,這假設網路是在交叉熵損失上訓練的。
- 參數:
specgram (Tensor) – 批次的 spectrograms。形狀: (n_batch, n_freq, n_time)。
lengths (Tensor 或 None, optional) – 指示批次中每個音訊的有效長度。形狀: (batch, )。當
specgram
包含具有不同持續時間的 spectrograms 時,透過提供lengths
參數,模型將計算對應的有效輸出長度。如果None
,則假定waveforms
中的所有音訊都具有有效長度。預設值:None
。
- 返回:
- Tensor
推論出的 waveform 大小為 (n_batch, 1, n_time)。 1 代表單一聲道。
- Tensor 或 None
如果提供了
lengths
參數,則會傳回形狀為 (batch, ) 的 Tensor。 它表示輸出 Tensor 在時間軸上的有效長度。
- 返回類型:
(Tensor, Optional[Tensor])