class_docstr: Create an audio object.
  
  When this object is returned by an input cell or passed to the
  display function, it will result in Audio controls being displayed
  in the frontend (only works in the notebook).
  
  Parameters
  ----------
  data : numpy array, list, unicode, str or bytes
      Can be one of
  
        * Numpy 1d array containing the desired waveform (mono)
        * Numpy 2d array containing waveforms for each channel.
          Shape=(NCHAN, NSAMPLES). For the standard channel order, see
          http://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx
        * List of float or integer representing the waveform (mono)
        * String containing the filename
        * Bytestring containing raw PCM data or
        * URL pointing to a file on the web.
  
      If the array option is used, the waveform will be normalized.
  
      If a filename or url is used, the format support will be browser
      dependent.
  url : unicode
      A URL to download the data from.
  filename : unicode
      Path to a local file to load the data from.
  embed : boolean
      Should the audio data be embedded using a data URI (True) or should
      the original source be referenced. Set this to True if you want the
      audio to playable later with no internet connection in the notebook.
  
      Default is `True`, unless the keyword argument `url` is set, then
      default value is `False`.
  rate : integer
      The sampling rate of the raw data.
      Only required when data parameter is being used as an array
  autoplay : bool
      Set to True if the audio should immediately start playing.
      Default is `False`.
  normalize : bool
      Whether audio should be normalized (rescaled) to the maximum possible
      range. Default is `True`. When set to `False`, `data` must be between
      -1 and 1 (inclusive), otherwise an error is raised.
      Applies only when `data` is a list or array of samples; other types of
      audio are never normalized.
  
  Examples
  --------
  
  >>> import pytest
  >>> np = pytest.importorskip("numpy")
  
  Generate a sound
  
  >>> import numpy as np
  >>> framerate = 44100
  >>> t = np.linspace(0,5,framerate*5)
  >>> data = np.sin(2*np.pi*220*t) + np.sin(2*np.pi*224*t)
  >>> Audio(data, rate=framerate)
  <IPython.lib.display.Audio object>
  
  Can also do stereo or more channels
  
  >>> dataleft = np.sin(2*np.pi*220*t)
  >>> dataright = np.sin(2*np.pi*224*t)
  >>> Audio([dataleft, dataright], rate=framerate)
  <IPython.lib.display.Audio object>
  
  From URL:
  
  >>> Audio("http://www.nch.com.au/acm/8k16bitpcm.wav")  # doctest: +SKIP
  >>> Audio(url="http://www.w3schools.com/html/horse.ogg")  # doctest: +SKIP
  
  From a File:
  
  >>> Audio('IPython/lib/tests/test.wav')  # doctest: +SKIP
  >>> Audio(filename='IPython/lib/tests/test.wav')  # doctest: +SKIP
  
  From Bytes:
  
  >>> Audio(b'RAW_WAV_DATA..')  # doctest: +SKIP
  >>> Audio(data=b'RAW_WAV_DATA..')  # doctest: +SKIP
  
  See Also
  --------
  ipywidgets.Audio
  
       Audio widget with more more flexibility and options.
code: def element_id_attr(self):
      if self.element_id:
          return 'id="{element_id}"'.format(element_id=self.element_id)
      else:
          return ""
  
imports: from html import escape
  from os.path import exists, isfile, splitext, abspath, join, isdir
  from os import walk, sep, fsdecode
  from IPython.core.display import DisplayObject, TextDisplayObject
  from typing import Tuple, Iterable, Optional
label_desc: Use image node_id 11 for calling the Audio obj's underlying member method code with example usage: obj.element_id_attr() and returns: str, str