Содержание страницы
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' при необходимости всё равно добавляется).
- exception wave.Error¶
- Исключение, возникающее, когда какое-либо действие невозможно, поскольку оно нарушает спецификацию WAV или сталкивается с недостатком реализации.
Объекты Wave_read¶Wave_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_write¶Wave_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.