> **Источник:** https://python-all.ru/3.12/library/sndhdr.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# [`sndhdr`](https://python-all.ru/3.12/library/sndhdr.html#module-sndhdr) – Определение типа звукового файла

**Исходный код:** [Lib/sndhdr.py](https://python-all.ru/src/3.12/Lib/sndhdr.py)

Устарело с версии 3.11, будет удалено в версии 3.13: Модуль [`sndhdr`](https://python-all.ru/3.12/library/sndhdr.html#module-sndhdr) устарел (см. [**PEP 594**](https://python-all.ru/3.12/library/sndhdr.html) для получения подробностей и альтернатив).

---

Модуль [`sndhdr`](https://python-all.ru/3.12/library/sndhdr.html#module-sndhdr) предоставляет вспомогательные функции, которые пытаются определить тип звуковых данных в файле. Если этим функциям удаётся определить тип звуковых данных, хранящихся в файле, они возвращают именованный кортеж [`namedtuple()`](https://python-all.ru/3.12/library/collections.html#collections.namedtuple), содержащий пять атрибутов: (`filetype`, `framerate`, `nchannels`, `nframes`, `sampwidth`). Значение *type* указывает тип данных и может быть одной из строк: `'aifc'`, `'aiff'`, `'au'`, `'hcom'`, `'sndr'`, `'sndt'`, `'voc'`, `'wav'`, `'8svx'`, `'sb'`, `'ub'` или `'ul'`. Значение *sampling\_rate* будет либо фактическим значением, либо `0`, если частота неизвестна или её сложно декодировать. Аналогично *channels* будет либо количеством каналов, либо `0`, если определить количество каналов невозможно или значение сложно декодировать. Значение *frames* будет либо количеством фреймов, либо `-1`. Последний элемент кортежа, *bits\_per\_sample*, будет либо размером выборки в битах, либо `'A'` для A-LAW, либо `'U'` для u-LAW.

#### `sndhdr.what(filename)`

Определяет тип звуковых данных, хранящихся в файле *filename*, с помощью [`whathdr()`](https://python-all.ru/3.12/library/sndhdr.html#sndhdr.whathdr). В случае успеха возвращает именованный кортеж, как описано выше, в противном случае возвращается `None`.

Изменено в версии 3.5: Результат изменён с кортежа на именованный кортеж.

#### `sndhdr.whathdr(filename)`

Определяет тип звуковых данных, хранящихся в файле, на основе заголовка файла. Имя файла задаётся параметром *filename*. Эта функция возвращает именованный кортеж, как описано выше, в случае успеха, или `None`.

Изменено в версии 3.5: Результат изменён с кортежа на именованный кортеж.

Распознаются следующие типы заголовков звуковых файлов, перечисленные ниже с возвращаемым значением из [`whathdr()`](https://python-all.ru/3.12/library/sndhdr.html#sndhdr.whathdr): и [`what()`](https://python-all.ru/3.12/library/sndhdr.html#sndhdr.what):

| Значение | Формат заголовка звукового файла |
| --- | --- |
| `'aifc'` | Сжатые файлы Audio Interchange |
| `'aiff'` | Файлы Audio Interchange |
| `'au'` | Файлы Au |
| `'hcom'` | Файлы HCOM |
| `'sndt'` | Звуковые файлы Sndtool |
| `'voc'` | Аудиофайлы Creative Labs |
| `'wav'` | Файлы Waveform Audio File Format |
| `'8svx'` | 8-битные файлы голосовых семплов |
| `'sb'` | Файлы звуковых данных со знаковым байтом |
| `'ub'` | Файлы UB |
| `'ul'` | Аудиофайлы u-LAW |

#### `sndhdr.tests`

Список функций, выполняющих отдельные тесты. Каждая функция принимает два аргумента: поток байтов и открытый файлоподобный объект. Когда [`what()`](https://python-all.ru/3.12/library/sndhdr.html#sndhdr.what) вызывается с потоком байтов, файлоподобный объект будет `None`.

Тестовая функция должна возвращать строку с описанием типа изображения, если тест успешен, или `None`, если нет.

Пример:

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