Документация Python неофициальный перевод
Содержание страницы

wave – чтение и запись WAV-файловwave – Read and write WAV files

Модуль wave предоставляет удобный интерфейс для работы со звуковым форматом WAV. Он не поддерживает сжатие/распаковку, но поддерживает моно и стерео.

Модуль wave определяет следующие функцию и исключение:

wave.open(file[, mode])

Если file – строка, открыть файл с этим именем, иначе он рассматривается как перемещаемый (seekable) файлоподобный объект. mode может быть одним из следующих значений:

'r', 'rb'
Режим только для чтения.
'w', 'wb'
Режим только для записи.

Обратите внимание: не поддерживаются WAV-файлы, открытые одновременно на чтение и запись.

Режим mode со значением 'r' или 'rb' возвращает объект Wave_read, а режим mode со значением 'w' или 'wb' возвращает объект Wave_write. Если mode опущен и в качестве file передан файлоподобный объект, то в качестве значения по умолчанию для mode используется file.mode (флаг 'b' при необходимости всё равно добавляется).

wave.openfp(file, mode)
Синоним для open(), сохранён для обратной совместимости.
exception wave.Error
Исключение, возникающее, когда какое-либо действие невозможно, поскольку оно нарушает спецификацию WAV или сталкивается с недостатком реализации.

Объекты Wave_readWave_read Objects

Объекты Wave_read, возвращаемые функцией open(), имеют следующие методы:

Wave_read.close()
Закрывает поток и делает экземпляр непригодным для использования. Вызывается автоматически при сборке объекта.
Wave_read.getnchannels()
Возвращает количество аудиоканалов (1 для моно, 2 для стерео).
Wave_read.getsampwidth()
Возвращает ширину выборки в байтах.
Wave_read.getframerate()
Возвращает частоту дискретизации.
Wave_read.getnframes()
Возвращает количество аудиофреймов.
Wave_read.getcomptype()
Возвращает тип сжатия ('NONE' – единственный поддерживаемый тип).
Wave_read.getcompname()
Человекочитаемая версия getcomptype(). Обычно 'not compressed' соответствует 'NONE'.
Wave_read.getparams()
(nchannels, sampwidth, framerate, nframes, comptype, compname), эквивалентен результату методов get*().
Wave_read.readframes(n)
Читает и возвращает не более n фреймов аудио в виде строки байтов.
Wave_read.rewind()
Перемещает указатель файла в начало аудиопотока.

Следующие два метода определены для совместимости с модулем aifc и не делают ничего интересного.

Wave_read.getmarkers()
Возвращает None.
Wave_read.getmark(id)
Возбуждает исключение.

Следующие два метода определяют термин «позиция», совместимый между ними, а в остальном зависящий от реализации.

Wave_read.setpos(pos)
Устанавливает указатель файла на указанную позицию.
Wave_read.tell()
Возвращает текущую позицию указателя файла.

Объекты Wave_writeWave_write Objects

Объекты Wave_write, возвращаемые функцией open(), имеют следующие методы:

Wave_write.close()
Убедиться, что nframes указано верно, и закрыть файл. Этот метод вызывается при удалении объекта.
Wave_write.setnchannels(n)
Устанавливает количество каналов.
Wave_write.setsampwidth(n)
Устанавливает ширину семпла равной n байт.
Wave_write.setframerate(n)
Устанавливает частоту дискретизации равной n.
Wave_write.setnframes(n)
Устанавливает количество фреймов в n. Это значение будет изменено позже, если будет записано больше фреймов.
Wave_write.setcomptype(type, name)
Устанавливает тип сжатия и описание. На данный момент поддерживается только тип сжатия NONE, что означает отсутствие сжатия.
Wave_write.setparams(tuple)
Кортеж tuple должен быть (nchannels, sampwidth, framerate, nframes, comptype, compname), с допустимыми значениями для методов set*(). Устанавливает все параметры.
Wave_write.tell()
Возвращает текущую позицию в файле с теми же оговорками, что и методы Wave_read.tell() и Wave_read.setpos().
Wave_write.writeframesraw(data)
Записывает аудиокадры без коррекции nframes.
Wave_write.writeframes(data)
Записывает аудиокадры и проверяет, что nframes корректен.

Обратите внимание, что задавать какие-либо параметры после вызова writeframes() или writeframesraw() недопустимо, и любая попытка сделать это вызовет wave.Error.