"sndhdr" — Determine type of sound file
***************************************

**Source code:** Lib/sndhdr.py

Deprecated since version 3.11, will be removed in version 3.13: The
"sndhdr" module is deprecated (see **PEP 594** for details and
alternatives).

======================================================================

The "sndhdr" provides utility functions which attempt to determine the
type of sound data which is in a file.  When these functions are able
to determine what type of sound data is stored in a file, they return
a "namedtuple()", containing five attributes: ("filetype",
"framerate", "nchannels", "nframes", "sampwidth"). The value for
*type* indicates the data type and will be one of the strings
"'aifc'", "'aiff'", "'au'", "'hcom'", "'sndr'", "'sndt'", "'voc'",
"'wav'", "'8svx'", "'sb'", "'ub'", or "'ul'".  The *sampling_rate*
will be either the actual value or "0" if unknown or difficult to
decode.  Similarly, *channels* will be either the number of channels
or "0" if it cannot be determined or if the value is difficult to
decode.  The value for *frames* will be either the number of frames or
"-1".  The last item in the tuple, *bits_per_sample*, will either be
the sample size in bits or "'A'" for A-LAW or "'U'" for u-LAW.

sndhdr.what(filename)

   Determines the type of sound data stored in the file *filename*
   using "whathdr()".  If it succeeds, returns a namedtuple as
   described above, otherwise "None" is returned.

   Changed in version 3.5: Result changed from a tuple to a
   namedtuple.

sndhdr.whathdr(filename)

   Determines the type of sound data stored in a file based on the
   file  header. The name of the file is given by *filename*.  This
   function returns a namedtuple as described above on success, or
   "None".

   Changed in version 3.5: Result changed from a tuple to a
   namedtuple.

The following sound header types are recognized, as listed below with
the return value from "whathdr()": and "what()":

+--------------+--------------------------------------+
| Value        | Sound header format                  |
|==============|======================================|
| "'aifc'"     | Compressed Audio Interchange Files   |
+--------------+--------------------------------------+
| "'aiff'"     | Audio Interchange Files              |
+--------------+--------------------------------------+
| "'au'"       | Au Files                             |
+--------------+--------------------------------------+
| "'hcom'"     | HCOM Files                           |
+--------------+--------------------------------------+
| "'sndt'"     | Sndtool Sound Files                  |
+--------------+--------------------------------------+
| "'voc'"      | Creative Labs Audio Files            |
+--------------+--------------------------------------+
| "'wav'"      | Waveform Audio File Format Files     |
+--------------+--------------------------------------+
| "'8svx'"     | 8-Bit Sampled Voice Files            |
+--------------+--------------------------------------+
| "'sb'"       | Signed Byte Audio Data Files         |
+--------------+--------------------------------------+
| "'ub'"       | UB Files                             |
+--------------+--------------------------------------+
| "'ul'"       | uLAW Audio Files                     |
+--------------+--------------------------------------+

sndhdr.tests

   A list of functions performing the individual tests.  Each function
   takes two arguments: the byte-stream and an open file-like object.
   When "what()" is called with a byte-stream, the file-like object
   will be "None".

   The test function should return a string describing the image type
   if the test succeeded, or "None" if it failed.

Example:

   >>> import sndhdr
   >>> imghdr.what('bass.wav')
   'wav'
   >>> imghdr.whathdr('bass.wav')
   'wav'
