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 de 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 de 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 a
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 do tipo byte 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 do tipo byte 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.