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