Ínicio

Contexto histórico

Codificação audio

Aspectos técnicos

MP3

AAC

MP3 vs AAC

Conclusão

 

 

 
                  

MP3

Flexibilidade

De maneira a poder ser usado com diferentes fins o MPEG definiu o MP3 com vários modos de operação.

O MP3 pode assim funcionar para sinais estéreo e mono. Uma técnica de codificação chamada Joint Stereo pode ser usada para, com eficiência, codificar de forma combinada os canais esquerdo e direito na saída de um sinal de áudio. A codificação Joint Stereo aproveita o facto de a informação contida nos dois canais ser similar para eliminar irrelevância e redundância de forma a baixar o número total de bits necessários para codificar o sinal. Por outro lado, com a codificação Intensity Stereo atinge-se débitos binários mais baixos à custa do perigo de alterar a espacialidade do som (noção da localização das fontes sonoras) visto que esta se adquire pela diferença entre o que se ouve em cada ouvido.

Há cinco modos de operação:

  • Mono: canal único.

  • Dual Stereo: Os dois canais são codificados de forma independente (e.g. Duas línguas diferentes).

  • Stereo: Os canais são codificados de forma independente mas partilham alguma informação no processo de codificação.

  • Joint Stereo: Acima dos 2KHz a informação contida nos dois canais é junta.

Também o débito binário de compressão não é fixo, sendo deixado ao critério do implementador do codificador, consoante queira o ficheiro com melhor ou pior qualidade, com a condição de que a alteração de débito binário de trama em trama de áudio é suportada pelo descodificador.


Arquitectura de codificador MP3

Na seguinte figura vê-se a arquitectura típica de um codificador áudio MP3, que vamos passar a descrever.

No codificador MP3 o sinal áudio é dividido em 32 sub-bandas de frequência através do banco de filtros. Para cada sub-banda é aplicada a MDCT onde são calculados 6 ou 18 coeficientes de frequência (coeficientes espectrais segundo o livro)DCT. Para cada sub-banda é ainda calculado o limiar de mascaramento utilizando o modelo psicoacústico. Utilizando o limiar de mascaramento, são calculados o passo de quantização e o factor de escala, com estes valores são quantizados os coeficientes da DCT.

 Banco de filtros

O banco de filtros no MP3 pertence à classe de banco de filtros híbridos: é constituído por um banco de filtros multifásicos seguido de um bloco de transformada MDCT (Modified Discrete Cosine Transform), fazendo uma divisão espectral do sinal em 32 bandas de igual largura.

A MDCT é a transformada bastante utilizada em codificação com perdas, devido à concentração dos coeficientes mais significativos da transformada no início do vector de dados. Esta vai ser aplicada a blocos do sinal separados, nos quais é dividido depois de passar pelo banco de filtros. O principal melhoramento da MDCT face à DCT é considerar não apenas o bloco actual a transformar, mas também metade do bloco anterior e metade do bloco seguinte. Desta forma o efeito de bloco sonoro é reduzido, tornando as transições mais suaves e perceptivamente inaudíveis.

 Modelo Perceptivo

A saída do modelo perceptivo consiste em valores para o limite de mascaramento ou ruído admitido para cada partição do codificador. No MP3 estas partições são equivalentes à banda crítica do ouvido humano. Se o ruído de quantização conseguir ser mantido abaixo do limite de mascaramento para cada partição então o sinal após a compressão deverá ser indistinguível do original.

   Quantização e codificação

A quantização é feita por um quantizador de potência. Desta maneira os valores mais elevados são codificados automaticamente.

Os valores quantizados são codificados usando um código de Huffman. Para adaptar o processo de codificação a diferentes sinais musicais, a tabela óptima é escolhida de entre várias. Este código trabalha, em geral, em binário, contudo, nos casos em que os números a serem codificados são muito pequenos trabalha em quaternário.

Como a codificação é um método de comprimento de código variável e tem de ser feita modulação de ruído para manter o ruído de quantização abaixo do limiar de mascaramento, são introduzidos um ganho global e um factor de escala antes da quantização.

Para se encontrar um ganho óptimo e factores de escala para um dado bloco, o bit-rate e a saída do modelo perceptivo são normalmente dados por duas malhas de iteração pelo método analysis-by-synthesis:

  • Malha de iteração interior: As tabelas de codificação de Huffman atribuem palavras com menos bits para valores de quantização pequenos. Se o número de bits resultante da codificação exceder o número de bits disponíveis para um dado bloco de informação, pode ser compensado ajustando o valor de ganho global para aumentar o “size step” da quantização.

 

  • Malha de iteração exterior: Com o objectivo de modular o ruído de quantização de acordo com o limiar de mascaramento, a cada banda é aplicado um factor de escala. Se o ruído de quantização numa dada banda exceder o limiar de mascaramento permitido pelo modelo perceptivo, o factor de escala é ajustado de forma a reduzir o ruído. Como para baixar o ruído de quantização são necessários muitos passos de quantização, e portanto uma bit-rate mais elevada, a malha de iteração interior tem de ser repetida sempre que o factor de escala for modificado. A malha de iteração exterior é executada até o ruído estar abaixo do limiar de mascaramento para todas as bandas.

Para que estas duas malhas não entrem num ciclo infinito, os parâmetros do modelo perceptivo são ajustados para cada bit-rate.

 

 

AAC

O codificador AAC apareceu na norma MPEG-2, com o objectivo de melhorar o já existente MP3 da norma MPEG-1, tendo o primeiro surgido em 1997, e posteriores melhoramentos em 2003 e 2004, dando origem ao HE-AAC v1 e HE-AAC v2 (High-Efficiency AAC).

Devido ao grande sucesso da arquitectura base do MP3, esta tornou-se praticamente incontornável no que toca a codificação áudio eficiente, fazendo com que o AAC também a utilize. Assim, as principais alterações que esta sofreu foram o acrescento de algumas ferramentas, e o melhoramento de outras, com o objectivo de garantir maior eficiência e melhor qualidade do sinal à saída.

Como é possível observar no diagrama de blocos, o sinal no domínio do tempo entra no banco de filtros, após um pré-processamento com controlo de ganho (divide o sinal em quatro bandas de frequências). No banco de filtros é feita a divisão espectral do sinal, sendo-lhe aplicada a MDCT. A partir desta fase começa o processamento espectral do sinal, onde é feita a compressão com controlo de qualidade e de eficiência. Numa fase final é feita quantização e codificação do sinal comprimido.

Em diversas partes deste processo, que se denota semelhante ao do MP3, foram inseridos melhoramentos, tanto a nível de qualidade do sinal de saída como a nível de eficiência. Estes melhoramentos vão ser tratados em seguida, aprofundando um pouco cada bloco e a sua influência na codificação do sinal.

 

Melhoramentos de eficiência

As principais alterações de ferramentas que aumentaram a capacidade de compressão do AAC prendem-se com:

·  Banco de filtros mais selectivo – fazendo uma divisão espectral do sinal em 1024 bandas (contra as 32 do MP3) consegue-se codificar de forma mais eficiente cada uma das frequências, com base na sensibilidade que o ouvido humano tem a cada uma;

·  Bloco de predição – procura a redundância no tempo do sinal, diminuindo bastante o número de bits gastos para sinais repetitivos ou semelhantes (grande redundância).

·  Bloco de Joint Stereo melhorado (M/S e Intensity) – explora a redundância entre os diversos canais, permitindo reduzir o débito binário mais frequentemente comparado com um codificador MP3.

·  Bloco de Quantização – utilização de um código de Huffman melhorado (codificação entrópica), que permite uma codificação mais flexível e eficiente.

Todas estas ferramentas, como observado no diagrama de blocos, levam em conta o modelo perceptual do ouvido humano.

 

Melhoramentos de qualidade sonora

Foram também introduzidas alterações com o intuito de aumentar a qualidade sonora do sinal de saída. Estas são relativas aos seguintes blocos na Figura 5: 

·  Banco de filtros mais selectivo – esta maior capacidade de analisar bandas de frequências e a melhor adaptação do sinal de saída à sensibilidade humana a cada uma delas consegue aumentar significativamente a qualidade do áudio de saída, principalmente com débitos binários mais baixos;

·  Temporal Noise Shaping – bloco desenvolvido para o AAC, que aumenta o SNR aparente, tendo como efeito um aumento de qualidade. Isto é feito através da alteração da forma espectral do erro introduzido pela quantização e pelo efeito de dithering (introdução de ruído intencional para tornar aleatório o erro de quantização). 

Com estas alterações é possível obter a qualidades perceptivas semelhantes às do MP3 com um débito binário inferior. Também a eficiência foi, como referido anteriormente, melhorada face ao MP3.

 

HE-AAC

Apesar deste aumento de eficiência e qualidade relativamente ao codificador áudio mais utilizado (MP3), a débitos baixos, a complexidade aumenta bastante. Para resolver esta questão foi desenvolvido o HE-AAC. Mantendo a base do AAC e do MP3, o principal objectivo era inserir dois blocos de aumento de eficiência:

·  Replicação de banda espectral (SBR);

·  Estéreo paramétrico (PS).

 

Replicação de banda espectral (SBR)

O primeiro objectivo a ser alcançado foi a criação do bloco SBR, que deu origem ao HE-AAC v1. Este bloco explora a redundância na frequência, aproveitando a pouca sensibilidade humana às altas frequências para as codificar sobrepondo harmónicas de baixas frequências com harmónicas de médias frequências. Em profundidade temos duas ferramentas essenciais para este bloco:

·  Reconstituição de alta frequência (High Efficiency Reconstruction) – onde é feita uma estimativa inicial grosseira, através da cópia das harmónicas de baixa frequência e deslocação das mesmas para a alta. É ainda feito um ajuste fino com adição de ruído, achatamento da estrutura espectral e adição de sinusóides;

·  Ajuste de forma (Envelope Adjustment) – onde é moldado o sinal produzido pelo bloco anterior, com o objectivo de o tornar o mais próximo do real possível, respondendo a um trade-off de qualidade contra eficiência.

 

Parametric Stereo (PS)

Depois da primeira versão do HE-AAC foi criada uma segunda, onde foi introduzido o bloco de estéreo paramétrico. Este explora de uma forma melhorada a redundância entre os canais estéreo. A forma de funcionamento é baseada na do MP3 e do primeiro AAC, sendo enviado um sinal sonoro mono e um conjunto de bits para o descodificar em estéreo. Esta descodificação é, contudo, bastante limitada, sendo apenas possível alterar a intensidade do sinal para cada canal. O melhoramento introduzido foi acrescentar uma ferramenta que permite não só reproduzir diferenças de intensidade/nível, como diferenças de fase e de decorrelação. Isto, para além de explorar de forma mais eficiente a redundância entre os dois canais, introduz um aumento de qualidade significativo no sinal estéreo.

 

O aumento de complexidade associado à introdução destes blocos é, no entanto, compensado pela redução da frequência de amostragem necessária e pela codificação estéreo de apenas um canal. Isto traduz-se apenas num aumento (relativamente ao AAC inicial) por um factor de 1.5 e 2, para o HE-AAC v1 e HE-AAC v2 respectivamente.