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.
Arquivos de áudio têm vários parâmetros que descrevem os dados de áudio. A taxa de amostragem ou taxa de quadros é o número de vezes por segundo em que o som é amostrado. O número de canais indica se o áudio é mono, estéreo ou quadro. Cada quadro consiste em uma amostra por canal. O tamanho da amostra é o tamanho em bytes de cada amostra. Assim, um quadro consiste em nchannels * samplesize bytes e um segundo de áudio consiste em 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=None)¶ Abre um arquivo AIFF ou AIFF-C e retorna uma instância de objeto com os métodos descritos abaixo. O argumento file é uma string nomeando um arquivo ou um objeto arquivo. mode deve ser
'r'ou'rb'quando o arquivo deve ser aberto para leitura, ou'w'ou'wb'quando o arquivo deve ser aberto para escrita. Se omitido,file.modeé usado se existir, caso contrário'rb'é usado. Quando usado para escrita, o objeto arquivo deve ser pesquisável, a menos que você saiba com antecedência quantas amostras você irá escrever no total e usarwriteframesraw()esetnframes(). A funçãoopen()pode ser usada em um bloco de instruçãowith. Quando o blocowithé concluído, o métodoclose()é chamado.Alterado na versão 3.4: Suporte para a instrução
withfoi adicionado.
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()¶ Retorna um array de bytes de tamanho 4 descrevendo o tipo de compressão usada no arquivo de áudio. Para arquivos AIFF, o valor retornado é
b'NONE'.
-
aifc.getcompname()¶ Retorna um array de bytes convertível para uma descrição legível por humanos do tipo de compactação usado no arquivo de áudio. Para arquivos AIFF, o valor retornado é
b'not compressed'.
-
aifc.getparams()¶ Retorna uma
namedtuple()(nchannels, sampwidth, framerate, nframes, comptype, compname), equivalente à saída dos métodosget*().
-
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)¶ Especifica o tipo de compactação. Se não for especificado, os dados de áudio não serão compactados. Em arquivos AIFF, a compactação não é possível. O parâmetro de nome deve ser uma descrição legível por humanos do tipo de compressão como uma array de bytes, o parâmetro de tipo deve ser uma array de bytes de tamanho 4. Atualmente, há suporte aos seguintes tipos de compactação:
b'NONE',b'ULAW',b'ALAW',b'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 parasetparams().
-
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.
Alterado na versão 3.4: Todo objeto bytes ou similar agora é aceito.
-
aifc.writeframesraw(data)¶ Semelhante a
writeframes(), exceto que o cabeçalho do arquivo de áudio não é atualizado.Alterado na versão 3.4: Todo objeto bytes ou similar agora é aceito.
-
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.