Compressão de áudio Márcio Dahia e Geber Ramalho
O QUE É COMPRESSÃO DE DADOS? Processo de codificação de mensagens a fim de reduzir o “espaço” necessário para representá-las (armazená-las, transmití-las) 2 tipos de compressão Sem perdas Não há eliminação de informação na mensagem. Compressão implica codificação eficiente Com perdas Informações redundantes, pouco importantes ou irrelevantes sob algum critério são descartadas Não dispensa a codificação eficiente Grau de compressão x Distorção na mensagem
POR QUE UMA CODIFICAÇÃO PARA ÁUDIO? Porque custa caro armazenar e enviar 44.1 x 16 x 2 = 1.4Mbps + códigos de erro + cabeçalhos + etc.
POR QUE FAZ SENTIDO UMA CODIFICAÇÃO ESPECÍFICA PRA ÁUDIO? Teoria da Informação: Quanto maior o conhecimento sobre a mensagem, emissor e/ou receptor, melhor a compressão Mp3 usa a modelagem psicoacústica para remover informações da irrelevantes Conhecimento sobre o receptor e a mensagem FLAC usa a correlação entre os canais (E/D) e o comportamento do sinal para aumentar a compressão Conhecimento sobre o emissor e a mensagem
Exemplo *Taxa de Compressão(TC) = 1- (tamanho comprimido/tamanho original )
CODIFICAÇÃO DE ÁUDIO: HISTÓRICO 1988 : Criação Motion Pictures Expert Group (MPEG) Padronização da codificação para transmissão e gravação de filmes Imagem, seqüência de imagens (vídeo) e áudio Surgimento de novos conceitos e vocabulário Frame, Codec, Bitrate Padronização do processo de decodificação Apenas sugestão de compressão
CODIFICAÇÃO DE ÁUDIO: HISTÓRICO 1992: MPEG-1. O padrão de codificação de áudio consistia em 3 modos de operação de acordo com o taxa de compressão (complexidade do processo de codificação) As principais idéias foram sugeridas pela Fraunhofer Institut für Integrierte Schaltungen (IS 11172-3 e IS 13818-3).
CODIFICAÇÃO DE ÁUDIO: HISTÓRICO 1994: Surge Xiph.org: padrões aberto para transmissão e armazenamento de áudio e vídeo. 1996: Surge o ID3: Padrão de fato para de metadados no mp3 1997: MPEG-2: Advanced Audio Coding (AAC): Estado da arte em compressão de áudio (melhorado em Mpeg-4) 2003: Surge FLAC
Conceitos importantes Codec (COder–DECoder) Frames Estrutura de dados correspondente à unidade mínima de tempo em arquivos de áudio Mp3 => 1152 amostras PCM Bitrate (taxa de bits): Número de bits p/ codificar um frame Medida em kbps CBR (constant bitrate) - A mesma quantidade de bits para representar qualquer frame (WAV) ABR (average bitrate) - Frames menos complexos deixam bits para os próximos (MP3) VBR (variable bitrate) - O número de bits para cada frame deve garantir a qualidade definida no início da codificação (MP3, AAC, VORBIS)
Dados Frequências de amostragem previstas Bitrates previstos 32, 44.1 and 48 kHz Bitrates previstos 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbit/s
COMPRESSÃO COM PERDAS MP3
PROCESSO DE COMPRESSÃO MP3 Entrada no formato PCM Processa 1152 amostras por vez por canal Frames são codificados independentemente
Modelo Perceptual Objetivo Critérios Analisar o que pode ser considerado redundante ou irrelevante Critérios Limiar de audibilidade Mascaramento de sons Simultâneo Temporal Boa parte dos critérios são avaliados no domínio da freqüência Transformada de Fourier
Limiar de audibilidade Um codificador perceptual compara o sinal de entrada com o limiar de audição e descarta os sinais que estão abaixo ou acima
Mascaramento Quando dois sons ocorrem, o mais intenso pode ocultar o menos intenso Se estão próximos no espectro Baixas freqüências mascaram as altas mais facilmente
Mascaramento E se Se estão próximos no tempo (quase simultâneos) O mascaramento “antes” é menor do que o “depois”
Mascaramento Temporal e Espectral
PROCESSO DE COMPRESSÃO MP3
Análise de banco de filtros Objetivo: transformar o sinal para o domínio da freqüência para evidenciar as redundâncias Composto por 2 fases Filtragem em sub-bandas Transformada Discreta Modificada do Cosseno (MDCT)
Filtragem de sub-banda Supostamente baseado no conceito de banda-critica regiões da membrana basilar que estabelecem limites na percepção de freqüências Porém 32 subbandas de mesma largura Sem justificativa psicoacústica 36 amostras em cada sub-banda
Filtragem de sub-banda
Transforma Discreta Modificada do Cosseno As 36 amostras de cada banda são transformadas do domínio do tempo para o domínio da freqüência Esta transformada, que passa as amostras de cada banda do domínio do tempo para o da frequencia, agrupa nos primeiros elementos muita informação e depois vão ficando com valores pequenos... Segundo o bitrate escolhido a codificação, as informações vão sendo descartadas pela ordem de relevância
PROCESSO DE COMPRESSÃO MP3
QUANTIZAÇÃO E CODIFICAÇÃO As informações irrelevantes (detectadas na fase de modelagem perceptual) são efetivamente retiradas O número de bits para cada banda é determinado Codificação (joint stereo) Dissociação inter-canais (caso estéreo) Os Canais E e D são transformados em média (E+D)/2 e lado (E-D)/2, no domínio da frequência Codificação de Huffmann (E+D) /2 contém no máximo tanta info quanto E ou D. (E-D)/2 contém menos.
CODIFICAÇÃO DE HUFFMAN Mensagem: aaaaaabbbcdee 104 bits (ASCII) Mensagem comprimida 00000010101011101111110110 26 bits. TC = 75% Constroi a árvore de baixo para cima juntando os simbolos que tem menor ocorrência e colocando no nó soma das ocorrências. Depois, codifica para esquerda Zero e 1 para a direita. Este tipo de tecnica, em que se lê da esquerda para a direita, chama-se código de prefixo
CODIFICAÇÃO DE HUFFMAN É preciso conhecer a tabela (codebook) para decodificar Os decocers MP3 já tem um codebook prédefinido
PROCESSO DE COMPRESSÃO MP3
Encoding http://upload.wikimedia.org/wikipedia/commons/0/01/Mp3filestructure.svg http://www.mp3-tech.org/programmer/frame_header.html
Metadados ID3 Padrão não prevê metadados Solução: Usar 128 bytes antes do primeiro frame (v1.0)
AAC (Advanced Audio Coding) Evolução do mp3 Fim da retro-compatibilidade com Layer I e II Codificação para até 48 canais De 576 para 1024 amostras por canal por frame De 36 para 48 sub-bandas Padrão para iPhone, iPod, iPad, Nintendo DSi, iTunes, DivX Plus Web Player and PlayStation 3 Uso de codebooks Tem um dicionário mais amplo, sequencias muito mais longas de eventos que podem uma subbanda, várias, etc. Dissociação inter-frames Predição Surgimento dos modos A capacidade de processamento é melhor, então pode tratar mais amostras
AAC: curiosidade Diversos modos com complexidade variável MPEG-2 AAC LC / Low Complexity MPEG-2 AAC Main MPEG-2 AAC SSR / Scalable Sampling Rate MPEG-4 AAC LC / Low Complexity MPEG-4 AAC Main MPEG-4 AAC SSR / Scalable Sampling Rate MPEG-4 AAC LTP / Long Term Prediction MPEG-4 AAC HE / High Efficiency MPEG-4 AAC LD / Low Delay Low complexity – máquinas ruins Scalable – extratificação por níveis de bitrate. Coloca tudo em uma “arquivão” e depois extrai só o que quer..
COMPRESSÃO SEM PERDAS FLAC
COMPRESSÃO SEM PERDAS Os compressores sem perdas, em geral possuem os seguintes passos Exemplo: FLAC
Blocking Separação do conteúdo em partes contíguas Tamanho pode variar de 16 a 64k amostras valor fixo dependente da frequencia de amostragem e número de canais Blocos possuem Sub-bloco Informações sobre um canal específico Blocos são codificados em Frames Cabeçalho taxa de amostragem, resolução, CRC do frame etc. Os frames são independente entre si. Sub-frame: contém o dado codificado e um header que indica a predição usada na compressão
DISSOCIAÇÃO INTER-CANAIS Remoção redundância de informação causada pela correlação entre os canais Executa transformações e usa a melhor delas. Canais codificados independentemente Média-Lado (mid-side): Os Canais são transformados em média (média dos 2 canais) e lado (canal esquerdo menos direito) Esquerda-Lado/Direita-Lado: Codifica um canal (esquerda ou direita) e a diferença entre este e o canal não codificado. Geralmente, os melhores resultados
PREDIÇÃO Função matemática para tentar descrever o sinal 4 funções existentes Zero: prediz sempre zero. Resíduo = Entrada Constante: Usado quando todas as amostras de uma canal possuem o mesmo valor, e.g., valor médio. Preditor Linear Fixo: função linear com coeficientes fixos que prediz no máximo 4 amostras subseqüentes Predição FIR Linear: filtro de até 32 estágios. Acha a solução para o sistema de 32 equações 32 variáveis Algoritmo O(n2) Sistema de equações com 32 elementos com 32 variaveis. Vai mais finda na janela de tempo (elementos anteriores)
CODIFICAÇÃO RESIDUAL Codificação da diferença (resíduo) entre o que foi predito e a entrada Utiliza o código Rice para codificar os resíduos de predição (passo anterior) Dados um número N (de k bits) a ser codificado e um número M (potencia de 2) que divide N, a codificação M é um “numero mágico” Rice (R) é representada por A parte inteira é o número de uns e zero é separado e o resto é binário <Unário(N div M)><Binário(N mod M)> Ex.: N=23 (10111) , m=16 R= 10111 Depois de codificar com uma funcao, só manda a diferença que deu com relação ao previsto. Código rice = baseado em dois numeros N e M (m é numero magico) Unaria = codificacao da cadeia (preso) 23/16 = 1... Resultado 1 => 1 2 = > 11
CODIFICAÇÃO RESIDUAL Por que Rice? É ótimo para distribuições geométricas Huffman também é ótimo nessa distribuição, mas difícil de decodificar (encontrar onde começa e termina cada código) Para escolher M, FLAC utiliza 2 métodos Método 1: Baseando-se na variância do sinal residual. O bloco inteiro é codificado com esse M. Método 2: Um bloco é dividido em várias partes de tamanhos distintos. M é escolhido baseado na média do resíduo daquela parte específica