Документация Python неофициальный перевод

aifc – чтение и запись файлов AIFF и AIFCaifc – Read and write AIFF and AIFC files

Этот модуль обеспечивает поддержку чтения и записи файлов AIFF и AIFF-C. AIFF – это формат Audio Interchange File Format, предназначенный для хранения цифровых аудио сэмплов в файле. AIFF-C – более новая версия формата, включающая возможность сжатия аудиоданных.

Предупреждение

Некоторые операции могут работать только под IRIX; при попытке импортировать модуль cl, который доступен только на IRIX, будет вызвано ImportError.

Аудиофайлы имеют ряд параметров, описывающих аудиоданные. Частота дискретизации (частота кадров) – это количество измерений звука в секунду. Количество каналов указывает, является ли аудио моно, стерео или квадро. Каждый кадр состоит из одного отсчёта на канал. Размер отсчёта – это размер каждого отсчёта в байтах. Таким образом, кадр состоит из nchannels * samplesize байтов, а одна секунда аудио – из nchannels * samplesize * framerate байтов.

Например, аудио CD-качества имеет размер сэмпла два байта (16 бит), использует два канала (стерео) и имеет частоту кадров 44 100 кадров/сек. Это даёт размер кадра 4 байта (2*2), а одна секунда аудио занимает 2*2*44100 байт (176 400 байт).

Модуль aifc определяет следующую функцию:

aifc.open(file[, mode])
Открывает файл AIFF или AIFF-C и возвращает экземпляр объекта с методами, которые\описаны ниже. Аргумент file может быть строкой с именем файла или файловым\объектом. mode должен быть равен 'r' или 'rb', если файл открывается для\чтения, или 'w' или 'wb', если для записи. Если\параметр опущен, используется file.mode (если он существует), в противном случае – 'rb'. При\записи файловый объект должен поддерживать позиционирование, за исключением случая, когда заранее известно\общее количество сэмплов и используются функции\writeframesraw() и setnframes().

Объекты, возвращаемые open() при открытии файла для чтения, имеют следующие методы:

aifc.getnchannels()
Возвращает количество аудиоканалов (1 для моно, 2 для стерео).
aifc.getsampwidth()
Возвращает размер отдельных сэмплов в байтах.
aifc.getframerate()
Возвращает частоту дискретизации (количество аудиокадров в секунду).
aifc.getnframes()
Возвращает количество аудиокадров в файле.
aifc.getcomptype()
Возвращает строку из четырёх символов, описывающую тип сжатия, используемый в аудиофайле. Для файлов AIFF возвращается значение 'NONE'.
aifc.getcompname()
Возвращает человекочитаемое описание типа сжатия, используемого в аудиофайле. Для файлов AIFF возвращается значение 'not compressed'.
aifc.getparams()
Возвращает кортеж, состоящий из всех указанных выше значений в том же порядке.
aifc.getmarkers()
Возвращает список маркеров в аудиофайле. Маркер состоит из кортежа из трёх элементов. Первый – идентификатор маркера (целое число), второй – позиция маркера в кадрах от начала данных (целое число), третий – имя маркера (строка).
aifc.getmark(id)
Возвращает кортеж, как описано в getmarkers(), для маркера с заданным id.
aifc.readframes(nframes)
Читает и возвращает следующие nframes кадров из аудиофайла. Возвращаемые данные – это строка, содержащая для каждого кадра несжатые сэмплы всех каналов.
aifc.rewind()
Перематывает указатель чтения. Следующий вызов readframes() начнётся с начала.
aifc.setpos(pos)
Перейти к указанному номеру кадра.
aifc.tell()
Возвращает текущий номер кадра.
aifc.close()
Закрывает файл AIFF. После вызова этого метода объект больше нельзя использовать.

Объекты, возвращаемые open() при открытии файла для записи, имеют все перечисленные выше методы, кроме readframes() и setpos(). Кроме того, существуют следующие методы. Методы get*() можно вызывать только после того, как соответствующие методы set*() были вызваны. Перед первым вызовом writeframes() или writeframesraw() должны быть заданы все параметры, кроме количества кадров.

aifc.aiff()
Создаёт AIFF-файл. По умолчанию создаётся файл AIFF-C, если только имя файла не заканчивается на '.aiff' – в этом случае по умолчанию создаётся AIFF-файл.
aifc.aifc()
Создаёт файл AIFF-C. По умолчанию создаётся файл AIFF-C, если только имя файла не заканчивается на '.aiff'; в этом случае по умолчанию создаётся файл AIFF.
aifc.setnchannels(nchannels)
Задаёт количество каналов в аудиофайле.
aifc.setsampwidth(width)
Задаёт размер аудиосэмплов в байтах.
aifc.setframerate(rate)
Задаёт частоту дискретизации в кадрах в секунду.
aifc.setnframes(nframes)
Задаёт количество кадров, которые будут записаны в аудиофайл. Если этот параметр не задан или задан неверно, файл должен поддерживать перемещение (seeking).
aifc.setcomptype(type, name)

Задаёт тип сжатия. Если он не указан, аудиоданные не будут сжаты. В файлах AIFF сжатие невозможно. Параметр name должен быть человекочитаемым описанием типа сжатия, параметр type должен быть строкой из четырёх символов. В настоящее время поддерживаются следующие типы сжатия: NONE, ULAW, ALAW, G722.

aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)
Устанавливает все перечисленные выше параметры сразу. Аргументом является кортеж, состоящий из различных параметров. Это означает, что результат вызова getparams() можно использовать как аргумент для setparams().
aifc.setmark(id, pos, name)
Добавляет метку с заданным id (больше 0) и заданным именем в заданной позиции. Этот метод можно вызывать в любое время до close().
aifc.tell()
Возвращает текущую позицию записи в выходном файле. Полезно в сочетании с setmark().
aifc.writeframes(data)
Записывает данные в выходной файл. Этот метод можно вызывать только после того, как параметры аудиофайла были заданы.
aifc.writeframesraw(data)
Аналогично writeframes(), за исключением того, что заголовок аудиофайла не обновляется.
aifc.close()
Закрывает AIFF-файл. Заголовок файла обновляется, чтобы отражать фактический размер аудиоданных. После вызова этого метода объект больше нельзя использовать.