aifc
— Lê e escreve arquivos AIFF e AIFC¶
Código-fonte: Lib/aifc.py
Deprecated since version 3.11, will be removed in version 3.13: O módulo aifc
foi descontinuado (veja PEP 594 para mais detalhes).
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
with
foi 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 byte 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 byte 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.