code: def test_audio_summary(self, scope, skip_summary=False):
      scoped_summary = _ScopedSummary(scope, skip_summary)
      with self.test_session() as s:
          i = tf.ones((5, 3, 4))
          with tf.name_scope("outer"):
              aud = scoped_summary.audio("inner", i, 0.2, max_outputs=3)
          summary_str = s.run(aud)
      if skip_summary:
          self.assertEqual("", decode(summary_str))
          return
      summary = tf.Summary()
      summary.ParseFromString(summary_str)
      values = summary.value
      self.assertLen(values, 3)
      tags = sorted(v.tag for v in values)
      expected = sorted(
          "outer/inner/audio/{}".format(i) for i in range(3)
      )
      self.assertEqual(tags, expected)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import functools
  import os
  from absl.testing import parameterized
  from adanet import tf_compat
  from adanet.core import testing_utils
  from adanet.core.summary import _ScopedSummary
  from adanet.core.summary import _TPUScopedSummary
  from adanet.core.summary import monkey_patched_summaries
  from six.moves import range
  import tensorflow.compat.v1
  from tensorflow.python.ops import summary_ops_v2
label_desc: Use image node_id 9 for calling the ScopedSummaryTest obj's underlying member method code with example usage: obj.test_audio_summary(scope, skip_summary) without return types