code: def _average_metric(
      preds: Tensor, target: Tensor, metric_func: Callable
  ) -> Tensor:
      # shape: preds [BATCH_SIZE, 1, Time] , target [BATCH_SIZE, 1, Time]
      # or shape: preds [NUM_BATCHES*BATCH_SIZE, 1, Time] , target [NUM_BATCHES*BATCH_SIZE, 1, Time]
      return metric_func(preds, target).mean()
  
imports: from functools import partial
  from typing import Callable
  import numpy
  import pytest
  import torch
  from mir_eval.separation import bss_eval_sources
  from scipy.io import wavfile
  from torch import Tensor
  from torchmetrics.audio import SignalDistortionRatio
  from torchmetrics.functional import signal_distortion_ratio
  from torchmetrics.utilities.imports import _TORCH_GREATER_EQUAL_1_11
  from unittests import _Input
  from unittests.audio import _SAMPLE_AUDIO_SPEECH, _SAMPLE_AUDIO_SPEECH_BAB_DB, _SAMPLE_NUMPY_ISSUE_895
  from unittests.helpers import seed_all
  from unittests.helpers.testers import MetricTester
label_desc: Use image node_id 2 for calling a global function with example usage: _average_metric(preds, target, metric_func) and returns: metric_func