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

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

Исходный код: Lib/wave.py


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

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

wave.open(file[, mode])

Если file – строка, открыть файл с этим именем, иначе считать его\nфайлоподобным объектом с произвольным доступом. mode может быть одним из:

'r', 'rb'

Режим только для чтения.

'w', 'wb'

Режим только для записи.

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

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

Если передан файлоподобный объект, объект wave не закроет его при вызове метода close(); закрытие файлового объекта – ответственность вызывающей стороны.

wave.openfp(file, mode)

Синоним для open(), поддерживаемый для обратной совместимости.

exception wave.Error

Исключение, возникающее, когда какое-либо действие невозможно, поскольку оно нарушает спецификацию WAV или сталкивается с недостатком реализации.

21.5.1. Объекты Wave_readWave_read Objects

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

Wave_read.close()

Закрывает поток, если он был открыт с помощью wave, и делает экземпляр непригодным для использования. Автоматически вызывается при удалении объекта.

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()

Возвращает текущую позицию указателя файла.

21.5.2. Объекты Wave_writeWave_write Objects

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

Wave_write.close()

Убедитесь, что количество фреймов верно, и закройте файл, если он был открыт с помощью wave. Этот метод вызывается при удалении объекта.

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.