class_docstr: CoMBD (Collaborative Multi-band Discriminator) module
  from from https://arxiv.org/abs/2206.13404
class_docstr_tok: ["CoMBD","(","Collaborative","Multi-band","Discriminator",")","module","from","from","https",":","\/\/arxiv.org\/abs\/2206.13404"]
code: def __init__(self, h, pqmf_list=None, use_spectral_norm=False):
      super(CoMBD, self).__init__()
      self.h = h
      if pqmf_list is not None:
          self.pqmf = pqmf_list
      else:
          self.pqmf = [
              PQMF(*h.pqmf_config["lv2"]),
              PQMF(*h.pqmf_config["lv1"]),
          ]
  
      self.blocks = torch.nn.ModuleList()
      for (
          _h_u,
          _d_k,
          _d_s,
          _d_d,
          _d_g,
          _d_p,
          _op_f,
          _op_k,
          _op_g,
      ) in zip(
          h["combd_h_u"],
          h["combd_d_k"],
          h["combd_d_s"],
          h["combd_d_d"],
          h["combd_d_g"],
          h["combd_d_p"],
          h["combd_op_f"],
          h["combd_op_k"],
          h["combd_op_g"],
      ):
          self.blocks.append(
              CoMBDBlock(
                  _h_u,
                  _d_k,
                  _d_s,
                  _d_d,
                  _d_g,
                  _d_p,
                  _op_f,
                  _op_k,
                  _op_g,
              )
          )
  
imports: import logging
  from typing import Any, Dict, List, Optional
  import torch
  import torch.nn.functional
  from torch.nn import Conv1d
  from torch.nn.utils import spectral_norm, weight_norm
  from espnet2.gan_svs.visinger2.visinger2_vocoder import MultiFrequencyDiscriminator
  from espnet2.gan_tts.hifigan.residual_block import ResidualBlock
  from espnet2.gan_tts.melgan.pqmf import PQMF
label_desc: Use image node_id 1 to create a new CoMBD object from inherited base classes: torch.nn with example: obj = CoMBD(h, pqmf_list, use_spectral_norm)