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