wave — Чтение и запись WAV-файлов
Исходный код: Lib/wave.py
Модуль wave предоставляет удобный интерфейс к формату WAV звука. Он не поддерживает сжатие/распаковку, но поддерживает моно/стерео.
Модуль wave определяет следующие функции и исключение:
-
wave.open(file[, mode]) -
Если file — строка, откройте файл с таким именем, в противном случае обработайте его как объект файла, поддерживающий позиционирование. mode может быть любым из
-
'r', 'rb' -
Только чтение.
-
'w', 'wb' -
Только запись.
Обратите внимание, что он не позволяет читать/записывать WAV-файлы.
Значение mode
'r'или'rb'возвращает объектWave_read, а значение mode'w'или'wb'возвращает объектWave_write. Если mode опущен, а в качестве file передан объект файла,file.modeиспользуется по умолчанию для mode (флаг'b'всё ещё добавляется, если необходимо).Если вы передаете объект файла, объект wave не закроет его, когда будет вызван метод
close(); ответственность за закрытие объекта файла лежит на вызывающей стороне. -
-
wave.openfp(file, mode) -
Синоним для
open(), поддерживается для обратной совместимости.
-
exception wave.Error -
Исключение, выбрасываемое, когда что-то невозможно, так как это нарушает спецификацию WAV или обнаруживает недостаток реализации.
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() -
Возвращает кортеж
(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() -
Возвращает текущую позицию указателя файла.
2. Объекты Wave_write
Объекты Wave_write, возвращаемые методом open(), имеют следующие методы:
-
Wave_write.close() -
Убеждается, что nframes корректен, и закрывает файл, если он был открыт модулем
wave. Этот метод вызывается при сборке мусора объекта.
-
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.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/wave.html