class_docstr: Audio segment abstraction.
  :param samples: Audio samples [num_samples x num_channels].
  :type samples: ndarray.float32
  :param sample_rate: Audio sample rate.
  :type sample_rate: int
  :raises TypeError: If the sample data type is not float or int.
docstr: Normalize the signal to a target RMS value in decibels. 
  For multi-channel audio, the RMS value is determined by the reference channel (if not None),
  otherwise it will be the maximum RMS across all channels.
docstr_tok: ["Normalize","the","signal","to","a","target","RMS","value","in","decibels",".","For","multi-channel","audio",",","the","RMS","value","is","determined","by","the","reference","channel","(","if","not","None",")",",","otherwise","it","will","be","the","maximum","RMS","across","all","channels","."]
code: def normalize_db(self, target_db=-20, ref_channel=None):
      """Normalize the signal to a target RMS value in decibels.
      For multi-channel audio, the RMS value is determined by the reference channel (if not None),
      otherwise it will be the maximum RMS across all channels.
      """
      rms_db = self.rms_db
      if self.num_channels > 1:
          rms_db = (
              max(rms_db)
              if ref_channel is None
              else rms_db[ref_channel]
          )
      gain = target_db - rms_db
      self.gain_db(gain)
  
imports: import math
  import os
  import random
  from typing import Optional
  import librosa
  import numpy
  import soundfile
  from nemo.collections.asr.parts.utils.audio_utils import select_channels
  from nemo.utils import logging
label_desc: Use image node_id 17 for calling the AudioSegment obj's underlying member method code with example usage: obj.normalize_db(target_db, ref_channel) without return types