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

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

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


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

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

wave.open(file, mode=None)

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

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

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

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

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

wave.openfp(file, mode)

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

exception wave.Error

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

21.4.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.4.2. Объекты Wave_writeWave_write Objects

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

Wave_write.close()

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

Wave_write.setnchannels(n)

Устанавливает количество каналов.

Wave_write.setsampwidth(n)

Устанавливает ширину семпла равной n байт.

Wave_write.setframerate(n)

Устанавливает частоту дискретизации равной n.

Изменено в версии 3.2: Нецелочисленный аргумент этого метода округляется до ближайшего целого числа.

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.