wave — Чтение и запись файлов WAV
Исходный код: Lib/wave.py
Модуль wave предоставляет удобный интерфейс для формата звука WAV. Он не поддерживает сжатие/распаковку, но поддерживает моно/стерео.
Модуль 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: Добавлена поддержка файлов без возможности поиска.
-
-
wave.openfp(file, mode) -
Синоним для
open(), поддерживается для обратной совместимости.
-
exception wave.Error -
Исключение, которое генерируется, когда что-то невозможно, так как это нарушает спецификацию WAV или вызывает недостаток в реализации.
22.4.1. Объекты Wave_read
Объекты 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() -
Возвращает
namedtuple()(nchannels, sampwidth, framerate, nframes, comptype, compname), эквивалентный выводу методовget*().
-
Wave_read.readframes(n) -
Читает и возвращает не более n кадров аудио в виде объекта
bytes.
-
Wave_read.rewind() -
Перемотать указатель файла к началу аудиопотока.
Следующие два метода определены для совместимости с модулем aifc и не выполняют ничего интересного.
-
Wave_read.getmarkers() -
Возвращает
None.
-
Wave_read.getmark(id) -
Вызывает ошибку.
Следующие два метода определяют термин «позиция», который совместим между ними и в противном случае зависит от реализации.
-
Wave_read.setpos(pos) -
Установить указатель файла в указанную позицию.
-
Wave_read.tell() -
Возвращает текущую позицию указателя файла.
22.4.2. Объекты Wave_write
Для потоков вывода, допускающих поиск, заголовок wave автоматически обновляется, отражая количество фактически записанных кадров. Для потоков без возможности поиска значение nframes должно быть точным, когда записываются первые данные кадра. Точное значение nframes можно получить, вызвав setnframes() или setparams() с количеством кадров, которые будут записаны до вызова close(), а затем используя writeframesraw() для записи данных кадров, или вызвав writeframes() со всеми данными кадров для записи. В последнем случае writeframes() вычислит количество кадров в данных и установит nframes соответственно перед записью данных кадров.
Объекты Wave_write, возвращаемые функцией open(), имеют следующие методы:
Изменено в версии 3.4: Добавлена поддержка файлов без возможности поиска.
-
Wave_write.close() -
Убедитесь, что nframes корректен, и закройте файл, если он был открыт функцией
wave. Этот метод вызывается при сборе мусора. Он вызовет исключение, если поток вывода не допускает поиск, и nframes не соответствует количеству фактически записанных кадров.
-
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.
Изменено в версии 3.4: Теперь принимается любой объект типа bytes-like object.
-
Wave_write.writeframes(data) -
Записать аудиокадры и убедиться, что nframes корректен. Он вызовет ошибку, если поток вывода не допускает поиск, и общее количество кадров, которое было записано после записи data, не соответствует ранее заданному значению nframes.
Изменено в версии 3.4: Теперь принимается любой объект типа bytes-like object.
Обратите внимание, что недопустимо устанавливать какие-либо параметры после вызова writeframes() или writeframesraw(), и любая попытка сделать это вызовет wave.Error.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/wave.html