wave — Чтение и запись WAV-файлов
Исходный код: Lib/wave.py
Модуль wave предоставляет удобный интерфейс к формату WAV звука. Он не поддерживает сжатие/распаковку, но поддерживает моно/стерео.
Модуль wave определяет следующие функции и исключения:
-
wave.open(file, mode=None) -
Если file — строка, откройте файл с этим именем, в противном случае обработайте его как объект типа файла. mode может быть:
-
'rb' -
Только чтение.
-
'wb' -
Только запись.
Обратите внимание, что он не позволяет читать/записывать WAV-файлы.
Режим mode
'rb'возвращает объектWave_read, а режим'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
Объекты 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() -
Возвращает текущую позицию указателя файла.
Объекты 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.
-
Wave_write.writeframes(data) -
Записать аудиокадры и убедиться, что nframes верно. Он вызовет ошибку, если поток вывода не поддерживает поиск, и общее количество кадров, записанных после записи data, не соответствует ранее заданному значению nframes.
Изменено в версии 3.4: Теперь принимается любой объект типа bytes.
Обратите внимание, что после вызова writeframes() или writeframesraw() любое изменение параметров недопустимо и приведет к исключению wave.Error.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/wave.html