# Determine type of sound file using Python (sndhdr)

PythonServer Side ProgrammingProgramming

The sndhdr module in Python's standard library provides utility functions that read the type of sound data which is in a file. The functions return a namedtuple(), containing five attributes

 filetype string representing 'aifc', 'aiff', 'au', 'hcom', 'sndr', 'sndt', 'voc', 'wav', '8svx', 'sb', 'ub', or 'ul'. framerate the sampling_rate will be either the actual value or 0 if unknown or difficult to decode. nchannels number of channels or 0 if it cannot be determined or if the value is difficult to decode nframes either the number of frames or -1. sampwidth bits_per_sample, will either be the sample size in bits or 'A' for A-LAW or 'U' for u-LAW.

functions in sndhdr module

## sndhdr.what()

This function 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.

## sndhdr.whathdr()

This function determines the type of sound data stored in a file based on the file header. This function returns a namedtuple as described above on success, or None.

## Examples

>>> import sndhdr
>>> sndhdr.whathdr("sample.wav")
SndHeaders(filetype = 'wav', framerate = 44100, nchannels = 1, nframes = 99999, sampwidth = 16)
>>> sndhdr.whathdr("sample.aiff")
SndHeaders(filetype = 'aiff', framerate = 8000, nchannels = 1, nframes = 271200, sampwidth = 16)
>>> sndhdr.whathdr("sample.au")
SndHeaders(filetype = 'au', framerate = 8000, nchannels = 1, nframes = 103397.0, sampwidth = 'U')
Published on 20-Feb-2019 11:46:15