Spec-Zone.ru › Python 3.13

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

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

Модуль wave предоставляет удобный интерфейс для формата звуковых волн WAV (или WAV). Поддерживаются только не сжатые WAV-файлы в формате PCM.

Изменено в версии 3.12: Добавлена поддержка заголовков WAVE_FORMAT_EXTENSIBLE, при условии, что расширенный формат KSDATAFORMAT_SUBTYPE_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.

Устарело начиная с версии 3.13, будет удалено в версии 3.15: Метод существовал только для совместимости с модулем aifc, который был удален в Python 3.13.

getmark(id)

Возвращает ошибку.

Устарело начиная с версии 3.13, будет удалено в версии 3.15: Метод существовал только для совместимости с модулем aifc , который был удален в Python 3.13.

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

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 корректен. Вызовет ошибку, если поток вывода не поддерживает позиционирование и общее количество записанных кадров после записи data не соответствует ранее заданному значению nframes.

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

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

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

Spec-Zone.ru

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