This document is for an old version of Python that is no longer supported. You should upgrade and read the documentação do Python para versão estável atual.

# 21.3. `aifc` — Lê e escreve arquivos AIFF e AIFC

Código-fonte: Lib/aifc.py

Este módulo fornece suporte para leitura e gravação de arquivos AIFF e AIFF-C. AIFF significa Audio Interchange File Format, um formato para armazenar amostras de áudio digital em um arquivo. AIFF-C é uma versão mais recente do formato que inclui a capacidade de compactar os dados de áudio.

Nota

Some operations may only work under IRIX; these will raise `ImportError` when attempting to import the `cl` module, which is only available on IRIX.

Audio files have a number of parameters that describe the audio data. The sampling rate or frame rate is the number of times per second the sound is sampled. The number of channels indicate if the audio is mono, stereo, or quadro. Each frame consists of one sample per channel. The sample size is the size in bytes of each sample. Thus a frame consists of nchannels*samplesize bytes, and a second’s worth of audio consists of nchannels*samplesize*framerate bytes.

Por exemplo, o áudio com qualidade de CD tem um tamanho de amostra de dois bytes (16 bits), usa dois canais (estéreo) e tem uma taxa de quadros de 44.100 quadros/segundo. Isto dá um tamanho de quadro de 4 bytes (2*2), e o valor de um segundo ocupa 2*2*44100 bytes (176.400 bytes).

O módulo `aifc` define a seguinte função:

`aifc.``open`(file[, mode])

  Open an AIFF or AIFF-C file and return an object instance with methods that are described below. The argument file is either a string naming a file or a file object. mode must be `'r'` or `'rb'` when the file must be opened for reading, or `'w'` or `'wb'` when the file must be opened for writing. If omitted, `file.mode` is used if it exists, otherwise `'rb'` is used. When used for writing, the file object should be seekable, unless you know ahead of time how many samples you are going to write in total and use `writeframesraw()` and `setnframes()`.

Objetos retornados por `open()` quando um arquivo é aberto para leitura têm os seguintes métodos:

`aifc.``getnchannels`()

  Retorna o número de canais de áudio (1 para mono, 2 para estéreo).

`aifc.``getsampwidth`()

  Retorna o tamanho em bytes de amostras individuais.

`aifc.``getframerate`()

  Retorna a taxa de amostra (número de quadros de áudio por segundo).

`aifc.``getnframes`()

  Retorna o número de quadros de áudio no arquivo.

`aifc.``getcomptype`()

  Return a four-character string describing the type of compression used in the audio file. For AIFF files, the returned value is `'NONE'`.

`aifc.``getcompname`()

  Return a human-readable description of the type of compression used in the audio file. For AIFF files, the returned value is `'not compressed'`.

`aifc.``getparams`()

  Return a tuple consisting of all of the above values in the above order.

`aifc.``getmarkers`()

  Retorna uma lista de marcadores no arquivo de áudio. Um marcador consiste em uma tupla de três elementos. O primeiro é o ID da marca (um inteiro), o segundo é a posição da marca nos quadros desde o início dos dados (um inteiro), o terceiro é o nome da marca (uma string).

`aifc.``getmark`(id)

  Retorna a tupla como descrito em `getmarkers()` para a marca com o id fornecido.

`aifc.``readframes`(nframes)

  Lê e retorna os próximos nframes quadros do arquivo de áudio. Os dados retornados são uma string contendo para cada quadro as amostras descompactadas de todos os canais.

`aifc.``rewind`()

  Reinicia o ponteiro de leitura. O próximo `readframes()` começará do início.

`aifc.``setpos`(pos)

  Procura o número do quadro especificado.

`aifc.``tell`()

  Retorna o número do quadro atual.

`aifc.``close`()

  Fecha o arquivo AIFF. Depois de chamar esse método, o objeto não pode mais ser usado.

Objetos retornados por `open()` quando um arquivo é aberto para escrita possuem todos os métodos acima, exceto `readframes()` e `setpos()`. Além disso, os seguintes métodos existem. Os métodos `get*()` só podem ser chamados após os métodos `set*()` correspondentes terem sido chamados. Antes do primeiro `writeframes()` ou `writeframesraw()`, todos os parâmetros, exceto o número de quadros, devem ser preenchidos.

`aifc.``aiff`()

  Cria um arquivo AIFF. O padrão é que um arquivo AIFF-C seja criado, a menos que o nome do arquivo termine em `'.aiff'`, caso em que o padrão é um arquivo AIFF.

`aifc.``aifc`()

  Cria um arquivo AIFF-C. O padrão é que um arquivo AIFF-C seja criado, a menos que o nome do arquivo termine em `'.aiff'`, caso em que o padrão é um arquivo AIFF.

`aifc.``setnchannels`(nchannels)

  Especifica o número de canais no arquivo de áudio.

`aifc.``setsampwidth`(width)

  Especifica o tamanho em bytes de amostras de áudio.

`aifc.``setframerate`(rate)

  Especifica a frequência de amostragem em quadros por segundo.

`aifc.``setnframes`(nframes)

  Especifica o número de quadros que devem ser escritos no arquivo de áudio. Se este parâmetro não estiver configurado ou estiver incorretamente configurado, o arquivo precisará ter suporte a procura.

`aifc.``setcomptype`(type, name)

  Specify the compression type. If not specified, the audio data will not be compressed. In AIFF files, compression is not possible. The name parameter should be a human-readable description of the compression type, the type parameter should be a four-character string. Currently the following compression types are supported: NONE, ULAW, ALAW, G722.

`aifc.``setparams`(nchannels, sampwidth, framerate, comptype, compname)

  Define todos os parâmetros acima de uma só vez. O argumento é uma tupla que consiste em vários parâmetros. Isto significa que é possível usar o resultado de uma chamada de `getparams()` como argumento para `setparams()`.

`aifc.``setmark`(id, pos, name)

  Adiciona uma marca com o ID fornecido (maior que 0) e o nome dado na posição determinada. Este método pode ser chamado a qualquer momento antes de `close()`.

`aifc.``tell`()

  Retorna a posição atual de escrita no arquivo de saída. Útil em combinação com `setmark()`.

`aifc.``writeframes`(data)

  Escreve dados no arquivo de saída. Este método só pode ser chamado após os parâmetros do arquivo de áudio terem sido definidos.

`aifc.``writeframesraw`(data)

  Semelhante a `writeframes()`, exceto que o cabeçalho do arquivo de áudio não é atualizado.

`aifc.``close`()

  Fecha o arquivo AIFF. O cabeçalho do arquivo é atualizado para refletir o tamanho real dos dados de áudio. Depois de chamar esse método, o objeto não pode mais ser usado.