code: def build_emb_proj(emb_config, proj_dim=None, use_emb=None):
      """Builds a dictionary of embedding modules for embedding
      projections
  
      Arguments
      ---------
      emb_config: dict
          a configuration dictionary
  
      proj_dim: int
          the target projection dimension
  
      use_cond_emb: dict
          an optional dictioanry of "switches" to turn
          embeddings on and off
  
      Returns
      -------
      result: torch.nn.ModuleDict
          a ModuleDict with a module for each embedding
      """
      emb_proj = {}
      if emb_config is not None:
          for key, item_config in emb_config.items():
              if use_emb is None or use_emb.get(key):
                  if "emb_proj" in item_config:
                      emb_proj[key] = emb_proj
                  else:
                      emb_proj[key] = EmbeddingProjection(
                          emb_dim=item_config["emb_dim"],
                          proj_dim=proj_dim,
                      )
      return nn.ModuleDict(emb_proj)
  
imports: from abc import abstractmethod
  from speechbrain.utils.data_utils import pad_divisible
  from .autoencoders import NormalizingAutoencoder
  import math
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 5 for calling a global function with example usage: build_emb_proj(emb_config, proj_dim, use_emb) and returns: nn