Spec-Zone.ru › Python 3.11

wave — Чтение и запись файлов WAV

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

Модуль wave предоставляет удобный интерфейс к формату звуковых файлов Waveform Audio “WAVE” (или “WAV”). Поддерживаются только файлы с WAVE_FORMAT_PCM. Обратите внимание, что это не включает файлы, использующие WAVE_FORMAT_EXTENSIBLE, даже если подформат является PCM.

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

wave.open(file, mode=None)

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

'rb'

Только чтение.

'wb'

Только запись.

Обратите внимание, что это не позволяет читать/записывать файлы WAV.

Значение mode 'rb' возвращает объект Wave_read, а значение mode 'wb' возвращает объект Wave_write. Если mode опущен и в качестве file передан объект, подобный файлу, file.mode используется в качестве значения по умолчанию для mode.

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

Функция open() может использоваться в инструкции with. Когда блок with завершается, вызывается метод Wave_read.close() или Wave_write.close().

Изменено в версии 3.4: Добавлена поддержка файлов без возможности перехода к началу.

exception wave.Error

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

Объекты Wave_read

class wave.Wave_read

Чтение файла WAV.

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

close()

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

getnchannels()

Возвращает количество аудиоканалов (1 для моно, 2 для стерео).

getsampwidth()

Возвращает ширину сэмпла в байтах.

getframerate()

Возвращает частоту дискретизации.

getnframes()

Возвращает количество аудиокадров.

getcomptype()

Возвращает тип сжатия ('NONE' — единственный поддерживаемый тип).

getcompname()

Человекочитаемая версия getcomptype(). Обычно 'not compressed' аналогичен 'NONE'.

getparams()

Возвращает namedtuple() (nchannels, sampwidth, framerate, nframes, comptype, compname), эквивалентный выводу методов get*().

readframes(n)

Читает и возвращает не более n кадров аудио в виде объекта bytes.

rewind()

Перемотка указателя файла в начало аудиопотока.

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

getmarkers()

Возвращает None.

getmark(id)

Выбрасывает ошибку.

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

setpos(pos)

Устанавливает указатель файла в указанную позицию.

tell()

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

Объекты Wave_write

class wave.Wave_write

Запись файла WAV.

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

Для потоков с возможностью поиска заголовок wave автоматически обновляется, чтобы отразить количество реально записанных кадров. Для потоков без возможности поиска значение nframes должно быть точным при записи первых данных кадра. Точное значение nframes можно получить, вызвав setnframes() или setparams() с количеством кадров, которые будут записаны до вызова close(), а затем используя writeframesraw() для записи данных кадров, или вызвав writeframes() со всеми данными кадров для записи. В последнем случае writeframes() рассчитает количество кадров в данных и установит nframes соответствующим образом перед записью данных кадров.

Изменено в версии 3.4: Добавлена поддержка файлов без возможности поиска.

Объекты Wave_write имеют следующие методы:

close()

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

setnchannels(n)

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

setsampwidth(n)

Установить ширину выборки в n байтов.

setframerate(n)

Установить частоту кадров в n.

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

setnframes(n)

Установить количество кадров в n. Это значение будет изменено позже, если количество фактически записанных кадров отличается (эта попытка обновления вызовет ошибку, если выходной поток не поддерживает поиск).

setcomptype(type, name)

Установить тип и описание сжатия. В настоящее время поддерживается только тип сжатия NONE, что означает отсутствие сжатия.

setparams(tuple)

Кортеж должен быть (nchannels, sampwidth, framerate, nframes, comptype, compname), со значениями, допустимыми для методов set*(). Устанавливает все параметры.

tell()

Возвращает текущую позицию в файле, с тем же замечанием, что и для методов Wave_read.tell() и Wave_read.setpos().

writeframesraw(data)

Записать аудиокадры без коррекции nframes.

Изменено в версии 3.4: Теперь принимается любой объект типа байты.

writeframes(data)

Записать аудиокадры и убедиться, что nframes корректен. Вызовет ошибку, если выходной поток не поддерживает поиск, и общее количество записанных кадров после записи данных не соответствует предварительно заданному значению nframes.

Изменено в версии 3.4: Теперь принимается любой объект типа байты.

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

© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/wave.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API