class_docstr: Speedy Speech duration predictor model.
  Predicts phoneme durations from encoder outputs.
  
  Note:
      Outputs interpreted as log(durations)
      To get actual durations, do exp transformation
  
  conv_BN_4x1 -> conv_BN_3x1 -> conv_BN_1x1 -> conv_1x1
  
  Args:
      hidden_channels (int): number of channels in the inner layers.
class_docstr_tok: ["Speedy","Speech","duration","predictor","model",".","Predicts","phoneme","durations","from","encoder","outputs",".","Note",":","Outputs","interpreted","as","log","(","durations",")","To","get","actual","durations",",","do","exp","transformation","conv_BN_4x1","-",">","conv_BN_3x1","-",">","conv_BN_1x1","-",">","conv_1x1","Args",":","hidden_channels","(","int",")",":","number","of","channels","in","the","inner","layers","."]
docstr: Shapes:
      x: [B, C, T]
      x_mask: [B, 1, T]
docstr_tok: ["Shapes",":","x",":","[","B",",","C",",","T","]","x_mask",":","[","B",",","1",",","T","]"]
code: def forward(self, x, x_mask):
      """
      Shapes:
          x: [B, C, T]
          x_mask: [B, 1, T]
      """
      o = x
      for layer in self.layers:
          o = layer(o) * x_mask
      return o
  
imports: from torch import nn
  from TTS.tts.layers.generic.res_conv_bn import Conv1dBN
label_desc: Use image node_id 2 for calling the DurationPredictor obj's underlying member method code with example usage: obj.forward(x, x_mask) and returns: o