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 等人,2018],基於 fatchord/WaveRNN 的實現。
原始實現首次在《高效神經音訊合成》(Efficient Neural Audio Synthesis)一文中提出 [Kalchbrenner 等人,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)
- 返回值:
形狀為 (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) – 批處理的譜圖。形狀:(n_batch, n_freq, n_time)。
lengths (Tensor 或 None, optional) – 指示批處理中每個音訊的有效長度。形狀:(batch, )。當
specgram包含不同時長的譜圖時,透過提供lengths引數,模型將計算相應的有效輸出長度。如果為None,則假定waveforms中的所有音訊都具有有效長度。預設值:None。
- 返回值:
- Tensor
推理出的波形,大小為 (n_batch, 1, n_time)。1 表示單通道。
- Tensor 或 None
如果提供了
lengths引數,則返回形狀為 (batch, ) 的 Tensor。它指示了輸出 Tensor 在時間軸上的有效長度。
- 返回型別:
(Tensor, Optional[Tensor])