33
Faculdade de Engenharia da Universidade do Porto Licenciatura em Engenharia Electrotécnica e de Computadores Ramo de Telecomunicações, Electrónica e Computadores Projecto final de Licenciatura – PD19 C C O O D D E E C C Á Á U U D D I I O O B B L L U U E E T T O O O O T T H H João Eduardo Soares de Sousa Ricardo Miguel Pereira da Silva Trabalho realizado sob a orientação de Professor Doutor Aníbal João de Sousa Ferreira Porto Maio de 2003

C COODDEECC ÁÁUUDDIIOO …ee98122/Rel_intermedio.pdf17 13 Sinal original e sinal reconstruído de um som pré-definido 18 14 FFT correspondente aos sinais da figura anterior 18 15

  • Upload
    doandat

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Faculdade de Engenharia da Universidade do Porto Licenciatura em Engenharia Electrotécnica e de Computadores

Ramo de Telecomunicações, Electrónica e Computadores

Projecto final de Licenciatura – PD19

CCOODDEECC ÁÁUUDDIIOO BBLLUUEETTOOOOTTHH João Eduardo Soares de Sousa

Ricardo Miguel Pereira da Silva

Trabalho realizado sob a orientação de

Professor Doutor Aníbal João de Sousa Ferreira

Porto

Maio de 2003

ii

iii

RReellaattóórriioo IInntteerrmmééddiioo

iv

v

Índice

1. Introdução 1

2. Fundamentos teóricos 2

2.1 Bancos de Filtros 3

2.2 Quantização e Desquantização 5

2.3 Alocação de bits 6

3. Implementação do projecto 7

3.1 Aplicação 7

3.2 Ambiente de trabalho 7

3.3 Descrição dos principais algoritmos realizados 7

3.4 Descrição das diferentes etapas 10

3.4.1 Implementação dos bancos de filtros 10

3.4.2 Implementação do bloco APCM e alocação de bits 14

4. Resultados obtidos 15

4.1 Implementação dos bancos de filtros de análise e síntese 15

5. Próximas etapas a desenvolver 20

6. Referências bibliográficas 21

Anexos

Anexo A Algoritmo de implementação do banco de filtros de análise 23

Anexo B Algoritmo de implementação do banco de filtros de sintese 24

Anexo C Aspecto visual da aplicação desenvolvida 25

vi

Lista de Tabelas

1 Coeficientes do filtro para 4 subbandas 10 2 Coeficientes do filtro para 8 subbandas 10 3 Energia das subbandas em função da frequência de som sintetizado para

4 subbandas

13 4 Energia das subbandas em função da frequência de som sintetizado para

8 subbandas

13

vii

Lista de Figuras

1 Sistema de codificação/descodificação de áudio 2 2 Banco de filtros de análise e síntese 3 3 Representação espectral de um banco de filtros 4 4 Esquema da quantização APCM 5 5 Algoritmo principal da aplicação 8 6 Algoritmo completo da aplicação desenvolvida 9 7 Resposta em amplitude e frequência dos filtros utilizados 11 8 Programa de teste dos bancos de filtros 12 9 Teste sinusoidal do banco de filtros 12 10 Teste sinusoidal do banco de filtros com frequência de amostragem de

44.1 kHz, frequência de som sintetizado de 5512.5 Hz e quatro subbandas

15 11 Teste sinusoidal do banco de filtros com características do anterior, mas

com subbandas de menor energia, colocadas a zero

16 12 Teste de codificação/descodificação de um sinal sinusoidal com

frequência de 5512.5 Hz e com subbandas de maior energia colocadas a zero

17 13 Sinal original e sinal reconstruído de um som pré-definido 18 14 FFT correspondente aos sinais da figura anterior 18 15 Erro entre FFT do sinal original e do sinal reconstruído 19 16 Algoritmo de implementação dos filtros de análise 23 17 Algoritmo de implementação dos filtros de síntese 24 18 Aspecto visual da aplicação desenvolvida 25

viii

Codec Áudio Bluetooth

Projecto final de curso 2003 1

1. Introdução Este projecto apresenta como principal objectivo a implementação eficiente em ambiente

em linguagem “C” de um codec áudio “Low Complexity Subband Coding” especificado na norma

Bluetooth [6].

Esta é dividida em vários grupos, sendo a parte que se encontra no âmbito do nosso

projecto designada por A2DP (Advanced Audio Distribution Profile ), onde se podem encontrar

definidos os protocolos e procedimentos da distribuição de conteúdos de alta qualidade, através

de canais, quer em modo mono como em stereo.

A norma especifica vários formatos de codificação de informação áudio, sendo um destes

formatos o SBC (Subband Coding), com compressão de baixa complexidade. Esta solução

baseia -se num codificador de 4 ou 8 subbandas através da utilização de bancos de filtros

polifásicos, numa estratégia de alocação dinâmica de bits, e em quantificadores APCM.

É portanto com base nesta especificação que estamos a desenvolver uma aplicação de

demonstração. Aplicação essa que permite em tempo real, capturar o sinal do line in ligado à

placa de som, tratá-lo de acordo com as especificações requeridas pela norma , colocando-o de

seguida no respectivo line out.

Além de testar a correcta funcionalidade do algoritmo, pretende-se também caracterizar o

seu desempenho e vocacionar a implementação para a sua realização num DSP de vírgula fixa.

Assim, todos os algoritmos desenvolvidos, antes de serem inseridos na aplicação

principal, elaborada em linguagem “C”, são primeiramente testados em ambiente MATLAB,

programa matemático, que pela sua forma simplista no modo de trabalhar com ferramentas de

processamento de sinal, nos permite de uma forma mais clara, testar e caracterizar o desempenho

dos algoritmos desenvolvidos.

É ainda de salientar que o facto de a aplicação ser em tempo real faz com que todos os

algoritmos desenvolvidos sejam mais complexos, dai necessitarem ser optimizados de forma a

que possam ser utilizados a uma maior velocidade.

Codec Áudio Bluetooth

Projecto final de curso 2003 2

2. Fundamentos teóricos Neste projecto, como já referido pretende-se implementar de uma forma eficiente um

codec áudio "Low Complexity Subband Coding" (SBC), especificado na norma Bluetooth .

SBC é um sistema de codificação áudio especialmente elaborado para aplicações

Bluetooth de áudio e vídeo, para que se possa obter áudio de alta qualidade, tendo por base uma

baixa complexidade computacional.

Nesta norma , este sistema trabalha com base num codificador de 4 ou 8 subbandas

através da utilização de bancos de filtros polifásicos, sendo ainda composto por um algoritmo de

alocação de bits adaptativo e um bloco simples de quantização APCM, conforme é mostrado de

uma forma generalizada na figura seguinte:

Figura 1: Sistema de codificação/descodificação de áudio Para que este sistema além de baixa complexidade apresente pequenos atrasos na

codificação e tenha uma elevada qualidade , foi necessário perder grande tempo da implementação

do projecto na escolha dos parâmetros mais adequados em cada um dos blocos do sistema

anterior, bem como analisar em bastante detalhe os compromissos existentes entre os parâmetros

dos diferentes blocos.

De seguida, faz-se uma análise mais detalhada de cada um dos blocos anteriores.

Banco Filtros de síntese APCM

Alocação de bits

Banco Filtros de análise APCM

Alocação de bits

Codificação do Bitstream

Line In

Line Out

Descodificação do Bitstream

Codec Áudio Bluetooth

Projecto final de curso 2003 3

2.1 Banco de Filtros São agrupamentos de filtros passa-banda que ocupam por completo a banda de

frequências audíveis, partilhando uma entrada s(n) ou contribuindo para uma dada saída s(n),

conforme se constata pela figura que se segue.

No primeiro caso, tem-se um banco de filtros de análise que decompõem o sinal de

entrada em várias subbandas. O sinal de entrada s(n) passa por cada um desses filtros sendo

decomposto num conjunto de sinais vk(n) onde cada sinal, irá ocupar uma porção da banda de

frequência original, daí a designação de subbanda.

Cada subbanda é depois quantizada com o número de bits mais apropriado, conforme se

explica no ponto 2.2.

Figura 2: Banco de filtros de análise e síntese

No segundo caso tem-se um banco de filtros de síntese.

Após a passagem pelo banco de filtros de análise anterior o sinal necessita de ser

reconstruído.

Assim, terá que ser realizada a operação inversa, onde os sinais provenientes dos

diferentes filtros wk(n) (tipicamente pertencentes a frequências de banda contíguas) são agrupados

dando origem ao sinal de saída s(n), que não é nada mais do que uma aproximação do sinal

original.

A implementação destes dois bancos de filtros pode ser feita de diferentes formas:

Bancos de filtros baseados numa estrutura em árvore;

Bancos de filtros baseados numa estrutura paralela ;

Bancos de filtros baseados numa estrutura de coseno modulado.

Codec Áudio Bluetooth

Projecto final de curso 2003 4

No primeiro caso, além de serem complexos, introduzem muito atraso; os segundos por

utilizarem subbandas independentes, introduzem pouco atraso, no entanto são de implementação

muito complexa.

Por último os terceiros são os filtros por nós utilizados neste projecto, filtros estes que são

de baixa complexidade e introduzem pouco atraso, logo os mais indicados para projectos de áudio

que se pretende que seja de baixa complexidade e apresente mínimo atraso, com alta qualidade.

Cada subbanda deste tipo de banco de filtros deriva de um filtro protótipo h(n) através da

seguinte modulação:

1,...,0,1,...,0),()()( −∈−∈= LnMknhncnh kk

onde M é o número de subbandas e L representa o comprimento do filtro.

Ck(n), é uma função de modulação que para o codificador é definida como:

))2

)(21

(cos()(M

nkM

nCk −+=π

e para o descodificador Ck(n) é dado por:

))2

)(21

(cos()(M

nkM

nCk ++=π

No ponto 3.4.1, encontram-se definidos os coeficientes dos bancos de filtros vem como a

respectiva representação gráfica quer em amplitude como em frequência, para M = 4 e M = 8.

A figura seguinte representa o espectro de frequências de um banco de filtros onde M

representa o número de subbandas em estudo enquanto que, H0, H1, H2,…,HM representa cada

uma dessa subbandas.

.

Figura 3: Representação espectral de um Banco de Filtros

Codec Áudio Bluetooth

Projecto final de curso 2003 5

Dever-se-á verificar que a subbanda que contem a frequência do sinal de entrada,

apresenta energia superior a todas as outras subbandas.

2.2 Quantização APCM A quantização elaborada neste projecto teve por base os seguintes requisitos:

O atraso introduzido pela quantização tem que ser o mínimo possível;

A complexidade de implementação do quantizador deve ser tão baixa quanto

possível;

A distorção introduzida pelo quantizador tem que ser imperceptível.

Assim para que estes requisitos fossem possíveis, foi implementado o quantizador

descrito pela figura seguinte, o qual opera da seguinte forma:

Do lado do codificador, as amostras da entrada são divididas em vectores X de tamanho

fixo. Para cada vector X, é calculado o máximo absoluto, sendo este em seguida quantificado ,

representado na figura por R.

O valor obtido, será o factor de escala usado para normalizar os elementos de X num

intervalo entre [-1,1].

Figura 4: Esquema da quantização APCM

Sub-sequentemente, o vector resultante é quantificado usando uma alocação dinâmica

dependendo do número de bits atribuídos em função do factor de escala que determina o número

de níveis.

No lado do descodificador as amostras normalizadas e o factor de escala, são recebidos de

modo a reconstruir a entrada para um vector Y.

No ponto seguinte, descreve -se o procedimento de alocação de bits adaptativo que é

usado para que se possa efectuar a distribuição dos bits disponíveis pelos diferentes elementos de

X, de tal maneira que a distorção introduzida seja menos perceptível.

Codec Áudio Bluetooth

Projecto final de curso 2003 6

2.3 Alocação de bits

A alocação de bits pode ser realizada usando uma alocação fixa ou dinâmica, sendo em

geral a última a que melhores resultados apresenta.

De modo a reduzir a complexidade o factor de escala é calculado como sendo uma

potência de base dois, pelo que as operações de quantização se resumem a operações de

deslocamento ou truncatura.

O número de bits necessário para a representação de cada subbanda depende do factor de

escala de modo a que os bits disponíveis sejam distribuídos equitativamente pelas diferentes

subbandas.

Codec Áudio Bluetooth

Projecto final de curso 2003 7

3. Implementação do projecto

3.1 Aplicação A implementação do programa por nós desenvolvido foi elaborado numa máquina

Pentium 4 a 1.7 GHz com 256 Mb de memória RAM onde nos é apresentado como principal

sistema operativo, o Windows XP.

É ainda composta por uma placa de som de 16 bits que inclui duas entrada de som (Line

In e microfone) e uma saída (Line Out), características fundamentais para que o projecto possa ser

concretizado.

3.2 Ambiente de trabalho O projecto em termos de ambiente de trabalho, pode-se dividir em duas partes. Uma

primeira onde se faz a aplicação da interface gráfica propriamente dita através de funções API do

Windows e uma segunda onde se elaboram os algoritmos que funcionarão a partir dessa mesma

interface.

A maior parte desses algoritmos desenvolvidos, foi primeiramente testado em MATLAB,

programa matemático, que pela sua forma simplista no modo de trabalhar com ferramentas de

processamento de sinal, nos permite de uma forma mais clara, testar os algoritmos desenvolvidos.

Posteriormente são passados para linguagem “C” onde necessitam de ser optimizados, de

forma a que possam ser utilizados a uma maior velocidade em qualquer ambiente.

O programa utilizado para o desenvolvimento da aplicação final, (interface gráfica), foi o

Visual C++ 6.0, programa este que de uma forma não muito simples, nos permite fazer a interface

gráfica, típica do Windows.

3.3 Descrição do principal algoritmo realizado

A aplicação desenvolvida tem como base fundamental o diagrama que se apresenta na

figura 5, e apresenta como principal característica o facto de trabalhar em tempo-real.

Quando se dá inicio à aplicação, (ver anexo C), são inicializados todos os procedimentos

responsáveis pela interface gráfica com o utilizador.

A partir desta interface, quando se pressiona no botão Play dá-se inicio a um processo

que consiste na captura do sinal áudio a partir do line in da placa de som do computador. Após a

captura, o sinal áudio é armazenado em buffers de modo a ser possível o tratamento destes de

acordo com a norma bluetooth, colocando-o de seguida no line out.

Codec Áudio Bluetooth

Projecto final de curso 2003 8

O programa entra então num ciclo infinito das operações que só termina quando se faz

paragem do procedimento descrito anteriormente, através do pressionar do botão Stop da

aplicação desenvolvida.

Como dito o sinal áudio após ser capturado é armazenado em buffers à espera de ser

tratado, passaremos então a explicar de uma forma mais pormenorizada as operações realizadas

quer pelo codificador como pelo descodificador.

Assim o modo de operação é o seguinte:

1. O áudio é capturado e armazenado em buffers;

2. Através de um banco de filtros polifásico de análise com estrutura de coseno

modulado, a entrada de áudio é dividida em subbandas;

3. Para cada uma das subbandas, é calculado um factor de escala;

4. Com base no factor de escala e no bitpool é determinado o número de bits que será

atribuído a cada subbanda e consequentemente o número de níveis usado para

quantificar as subbandas;

Ínicio Inicialização dos procedimento

Captura de som

Espera por trama com amostra de

áudio

Tratamento dos dados

Saída das amostras tratadas

Captura do som tratado

Nova trama

Figura 5: Algoritmo principal da aplicação

Codec Áudio Bluetooth

Projecto final de curso 2003 9

5. De seguida o valor das subbandas é normalizado (dividindo todas as amostras pelo

factor de escala) e quantificado de acordo com o número de níveis calculado

obtendo-se assim as subbandas quantificadas;

6. Finalmente é gerado um bitstream que é depois passado para o descodificador;

7. No descodificador as operações processam-se de modo inverso, o valor das

subbandas quantificadas e do factor de escala é reposto do bitstream;

8. A partir do factor de escala e das amostras quantificadas gera-se um valor

aproximado das subbandas iniciais;

9. Aplicando um banco de filtros de síntese reconstrói-se o sinal de entrada;

10. Em seguida é colocado no line out;

Ínicio Inicialização dos procedimento

Captura de som

Espera por trama com amostra de

áudio

Banco de Filtros de Análise

Saída das amostras tratadas

Captura do som tratado

Nova trama

APCM

Codificação/ Descodificação

do Bitstream

APCM Banco de Filtros

de Sintese

Figura 6: Algoritmo completo da aplicação desenvolvida

Alocação de bits

Alocação de bits

Codec Áudio Bluetooth

Projecto final de curso 2003 10

3.4 Descrição das diferentes etapas

3.4.1 Implementação dos Bancos de Filtros Os bancos de filtros, quer de análise como de sintese, foram feitos com base nos

algoritmos que se encontram respectivamente no anexo A e anexo B , sendo estes os algoritmos

que se podem encontrar na própria norma. Para que a realização desses algoritmos fosse possivel,

é necessário saber quais os coeficientes dos filtros a utilizar, os quais passamos a apresentar:

4 4 Sub-bandas

0.00000000E+00 5.36548976E-04 1.49188357E-03 2.73370904E-03 3.83720193E-03 3.89205149E-03 1.86581691E-03 -3.06012286E-03 1.09137620E-02 2.04385087E-02 2.88757392E-02 3.21939290E-02 2.58767811E-02 6.13245186E-03 -2.88217274E-02 -7.76463494E-02 1.35593274E-01 1.94987841E-01 2.46636662E-01 2.81828203E-01 2.94315332E-01 2.81828203E-01 2.46636662E-01 1.94987841E-01

-1.35593274E-01 -7.76463494E-02 -2.88217274E-02 6.13245186E-03 2.58767811E-02 3.21939290E-02 2.88757392E-02 2.04385087E-02

-1.09137620E-02 -3.06012286E-03 1.86581691E-03 3.89205149E-03 3.83720193E-03 2.73370904E-03 1.49188357E-03 5.36548976E-04

Tabela 1: Coeficientes dos filtros para 4 subbandas

8 Sub-bandas

0.00000000E+00 1.56575398E-04 3.43256425E-04 5.54620202E-04 8.23919506E-04 1.13992507E-03 1.47640169E-03 1.78371725E-03 2.01182542E-03 2.10371989E-03 1.99454554E-03 1.61656283E-03 9.02154502E-04 -1.78805361E-04 -1.64973098E-03 -3.49717454E-03 5.65949473E-03 8.02941163E-03 1.04584443E-02 1.27472335E-02 1.46525263E-02 1.59045603E-02 1.62208471E-02 1.53184106E-02 1.29371806E-02 8.85757540E-03 2.92408442E-03 -4.91578024E-03

-1.46404076E-02 -2.61098752E-02 -3.90751381E-02 -5.31873032E-02 6.79989431E-02 8.29847578E-02 9.75753918E-02 1.11196689E-01 1.23264548E-01 1.33264415E-01 1.40753505E-01 1.45389847E-01 1.46955068E-01 1.45389847E-01 1.40753505E-01 1.33264415E-01 1.23264548E-01 1.11196689E-01 9.75753918E-02 8.29847578E-02

-6.79989431E-02 -5.31873032E-02 -3.90751381E-02 -2.61098752E-02 -1.46404076E-02 -4.91578024E-03 2.92408442E-03 8.85757540E-03 1.29371806E-02 1.53184106E-02 1.62208471E-02 1.59045603E-02 1.46525263E-02 1.27472335E-02 1.04584443E-02 8.02941163E-03

-5.65949473E-03 -3.49717454E-03 -1.64973098E-03 -1.78805361E-04 9.02154502E-04 1.61656283E-03 1.99454554E-03 2.10371989E-03 2.01182542E-03 1.78371725E-03 1.47640169E-03 1.13992507E-03 8.23919506E-04 5.54620202E-04 3.43256425E-04 1.56575398E-04

Tabela 2: Coeficientes dos filtros para 8 subbandas

Codec Áudio Bluetooth

Projecto final de curso 2003 11

Através destes coeficientes, foi-nos possível traçar a resposta em amplitude e em

frequência, para cada uma das tabelas, obtendo-se os resultados que passamos a apresentar:

a) Coeficientes do filtro para 4 subbandas b) Coeficientes do filtro para 8 subbandas

c) Resposta em frequência para 4 subbandas

Para que de uma forma mais simples fosse possivel caracterizar o desempenho dos

bancos de filtros, projectamos dois programas em MATLAB. Programas estes que permitem

fazer a codificação/descodificação com implementação através dos bancos de filtros atrás

referido, de um sinal por meio de um algoritmo SBC de 4 ou 8 subbandas com base na norma

bluetooth.

No primeiro caso, conforme se pode visualizar pela figura seguinte, esse sinal pode ser

um som predefinido ou então um som a gravar, tendo para isso que ligar ao line in da placa de

som um leitor de cds ou um microfone.

d) Resposta em frequência para 8 subbandas

Figura 7: Resposta em amplitude e frequência dos filtros utilizados

Codec Áudio Bluetooth

Projecto final de curso 2003 12

Figura 8: Programa de teste dos bancos de filtros

Figura 9: Teste sinusoidal do banco de filtros

Codec Áudio Bluetooth

Projecto final de curso 2003 13

No segundo caso, figura anterior, esse sinal é uma sinusoide na qual se pode variar a

frequência do som sintetizado e a frequência de amostragem. Permite também retirar subbandas

ao sinal e ver o que se sucede.

Neste caso e para que se possa compreender melhor, fizemos duas tabelas, para 4 e 8

subbandas, onde se mostra a relação entre a frequência do som sintetizado e a energia das

subbandas.

Relação esta que pode ser compreendida tendo em atenção o que foi exposto no ponto

2.1.

Energia das subbandas / frequência do som sintetizado Subbanda 1 2 3 4

p/4 2p/4 3p/4

p 5p/4 6p/4 7p/4 2p

Tabela 3: Energia das subbandas em função da frequência do som sintetizado para 4 subbandas

Energia das subbandas / frequência do som sintetizado

Subbanda 1 2 3 4 5 6 7 8

p/8 2p/8 3p/8 4p/8 5p/8 6p/8 7p/8

p 9p/8

10p/8 11p/8 12p/8 13p/8 14p/8 15p/8

2p Tabela 4: Energia das subbandas em função da frequência do som sintetizado para 8 subbandas

Codec Áudio Bluetooth

Projecto final de curso 2003 14

Como exemplo se a sinusoide tiver uma frequência de som sintetizado de 5512.5 Hz (p/4)

e trabalhar a uma frequência de amostragem de 44.1 kHz (2p) para quatro subbandas, a energia

estará toda alocada na subbanda um e dois.

Caso a frequência de som sintetizado esteja abaixo desse valor então essa energia apenas

se concentrará na primeira subbanda, se estiver no intervalo de ]5512.5;11025[ Hz, estará

principalmente na segunda subbanda.

3.4.2 Implementação do bloco APCM e alocação de bits Estes dois blocos foram implementados através de algoritmos já existentes na norma [6].

Codec Áudio Bluetooth

Projecto final de curso 2003 15

4. Resultados obtidos

4.1 Implementação dosBancos de filtros de análise e síntese Apresentam-se de seguida alguns dos resultados produzidos pelos programas já referidos

no ponto 3.4.1.

Figura 10: Teste sinusoidal do banco de filtros com frequência de amostragem de 44.1 kHz, frequência de som sintetizado de 5512.5 Hz e quatro subbandas

Nesta aplicação, foram escolhidos, os seguintes parâmteros: frequência de amostragem a

44.1 kHz, frequência de som sintetizado a 5512.5 Hz e 4 subbandas.

Como se pode reparar, estes parâmetros são iguais aos já referidos no ponto anterior, e a

conclusão a que se tinha chegado teoricamente é que as subbandas com maior energia seriam a

subbanda um e dois.

Este resultado teórico confirma-se pela imagem anterior.

Codec Áudio Bluetooth

Projecto final de curso 2003 16

O que se pode constatar nas duas imagens seguintes é a comprovação teórica através da

nossa implementação de que colocando as subbandas do sinal que contem menos energia a zero ,

o sinal é recuperado em quase toda a sua totalidade.

Enquanto que, no caso de serem colocadas a zero as subbandas com maior energia, o

sinal de saída, apresenta erro máximo.

Como é de esperar, se todas as subbandas forem colocadas a zero então o sina l é zero e a

relação SNR também.

Figura 11: Teste sinusoidal do banco de filtros com características do anterior, mas com subbandas de menor energia, colocadas a zero

Esta aplicação só vem provar que os filtros desenvolvidos estão a trabalhar em perfeitas

condições, fazendo uma reconstrução do sinal sem quaisquer perturbações.

Codec Áudio Bluetooth

Projecto final de curso 2003 17

Figura 12: Igual à figura dez, mas com subbandas de maior energia, colocadas a zero

O que se segue são os resultados do primeiro programa, onde é dado o exemplo de um

sinal a passar através dos bancos de filtros e análise do erro produzido. Os gráfico seguintes

dizem respeito a uma pequena amostra de um sinal.

O primeiro representa o sinal original no dominio dos tempos e o segundo o sinal

reconstruido também no dominio dos tempos.

Repare-se que o sinal reconstruido, apresenta um pequeno desfazamento em relação ao

sinal original, tal como já visto na aplicação anterior, devido ao atraso existente, proveniente do

preenchimento dos buffers, uma vez que o programa só começa a processar após o preenchimento

dos mesmos.

No entanto este atraso não provoca qualquer tipo de erro ou perturbação no decorrer

normal do programa.

Codec Áudio Bluetooth

Projecto final de curso 2003 18

Figura 13: Sinal original e sinal reconstruído de um som pré-definido

Em baixo, encontram-se os respectivos sinais, mas no dominio das frequências.

Sinais estes que nos permitem efectuar o cálculo do erro entre o sinal original e

reconstruido.

Figura 14: FFT correspondente aos sinais da figura anterior

Codec Áudio Bluetooth

Projecto final de curso 2003 19

Neste, pode-se verificar que o erro é muito pequeno, quase zero, o que só prova mais uma

vez que a reconstrução do sinal está a ser quase perfeita e o banco de filtros projectados não

introduzem qualquer distorção perceptível.

Figura 15: Erro entre FFT do sinal or iginal e do sinal reconstruído

Codec Áudio Bluetooth

Projecto final de curso 2003 20

5. Próximas etapas a desenvolver

Desenvolvimento de alguns testes relativos ao quantizador, nomeadamente no que

diz respeito ao seu bom funcionamento, aquando da utilização de diferentes

parâmetros (diferentes blocos, tipos de canais, frequências,…);

Conclusão do estudo da norma, através da realização da codificação/descodificação

do bitstream;

Melhoramentos a nível da interface gráfica;

Codec Áudio Bluetooth

Projecto final de curso 2003 21

6. Referências bibliográficas Livros [1] Alan V.Oppenheim, Ronald W. Schafer, with John R. Buck. Discrete -Time Signal Processing, Prentice-Hall, 2nd edition, 1999. [2] Emmanuel C. Lfeachor and Barrie W. Jervis, Digital Signal Processing – A pratical approach, Addison-Wesley, 1993. [3] P. P. Vaidyanathan, Multirate Systems and Filter Banks, Prentice Hall, 1993. [4] William H. Murray and Chris H. Bappas, Windows programming – An introduction, Osborne McGraw-Hill, 1990. [5] Herbert Schildt, Windows 95 programming nuts & bolts for experienced programmers, Osborne McGraw-Hill, 1995. Papers [6] Bluetoooth SIG groups, Advanced Áudio Distribution Profile, versão 0.95b, 2002. [7] Bluetooth SIG, Specification of the Bluetooth System, Core, Version 1.1, Part B (Baseband). [8] J.Audio Eng. Soc., “Bluetooth and wireless networking a primer for audio engineers”,Vol. 50, Nº 11, 2002 November. [9] Karine Grosse, Tanja Karp, Pierre Duhamel and Alfred Mertins, “Modulated Filter banks with minimum output distortion in presence of subband quantization”, 1996 Asilomar Conference on Signals. [10] Frans de Bont, Marc Groenewegen, Werner Oomen, “A High Quality Audio – Coding system at 128 kb/s”, 98th AES Convention, Febr. 25-28, 1995. [11] Joseph H. Rothweiler, “Polyphase Quadrature Filters – A New Subband Coding

Technique”, IEEE Proc. ICCASP, pp 1280-1283, 1983. [12] Aníbal J. S. Ferreira, “Perceptual Audio Coding and the Choice of an Analysis/Synthesis

Filter Bank and Psychoacoustic Model”,104th Convention of the Audio Engineering ASociety, May 1998.

Links [13] Stephan Weiss, Filter Banks, [http://www.ecs.soton.ac.uk/~sw1/software/software.html], 2001 [14] Open Mash Cross Reference, [http://www.openmesh,org/lxr/source/?C=srm]

Codec Áudio Bluetooth

Projecto final de curso 2003 22

[15] Sokolovsky Mark and Gershikov Evgeny, Simultaneous filtering and comparision of images and audio signal, [http://visl.technian.ac.il/projects/2001s16/MATLAB], 1996 [16] Phiplips, [http://www.semiconductors.philips.com/technologies/bluetooth/index.html] [17] Miguel Pimenta Monteiro, Algumas notas sobre programação em C, [http://www.fe.up.pt/~apm/c_tut/welcome.html], 1996 [18] Viktor Toth, Visual C++ 4 Unleashed, [http://docs.rinet.ru:8083/VidimyyC/index.htm], 1996 [19] Alex Chen, Nader Slrehad, Erik Welsh, W.A.V.S Compression, [http://is.rice.edu/~welsh/elec431/index. html] [20] Arizon State University (ASU), Speech and Audio Processing Lab, [http://www.esu.asu.edu/~speech/], 2001 [21] Palowireless, Bluetooth Resource Centre, [http://www.palowireless.com/Bluetooth], 2002

Codec Áudio Bluetooth

Projecto final de curso 2003 23

Anexo A Algoritmo de Implementação dos Bancos de Filtros de Análise

Figura 16: Algoritmo de implementação dos filtros de análise

Início

Entrada de 4 novas amostras de áudio de i=39 até 4 fazer X[i] = X[i-4] de i=3 até 0 fazer X[i] = próxima_nova_amostra_áudio

Janela de 40 coeficientes Produzir Vector Z de i=0 até 39 fazer Zi=Ci*Xi (Ci: coef. Do filtro da tabela …)

Cálculo Parcial de i=0 até 7 fazer Yi = sum(Z[i+k*8]) k=0..4

Cálculo de 4 amostras da subbanda através da matriz de i=0 até 3 fazer Si = sum(Mik * Yk) de k=0 até 8 Mik = cos[(i+0.5)*(k-2)*pi/4]

Saída de 4 amostras das subbandas

Fim

Início

Entrada de 8 novas amostras de áudio de i=79 até 8 fazer X[i] = X[i-8] de i=7 até 0 fazer X[i] = próxima_nova_amostra_áudio

Janela de 80 coeficientes Produzir Vector Z de i=0 até 79 fazer Zi=Ci*Xi (Ci: coef. Do filtro da tabela …)

Cálculo Parcial de i=0 até 15 fazer Yi = sum(Z[i+k*16]) k=0..4

Cálculo de 8 amostras da subbanda através da matriz de i=0 até 7 fazer Si = sum(Mik * Yk) de k=0 até 15 Mik = cos[(i+0.5)*(k-4)*pi/8]

Saída de 8 amostra s das subbandas

Fim

Codec Áudio Bluetooth

Projecto final de curso 2003 24

Anexo B Algoritmo de Implementação dos Bancos de Filtros de Síntese

Figura 17: Algoritmo de implementação dos filtros de síntese

Início

Entrada de 4 novas amostras Si i = 0….3

Deslocamento de i=79 até 8 fazer V[i] = V[i-8]

Matriz de k=0 até 7 fazer V[k] = sum(Nki*Si) i=0..3 Nki = cos[(i+0.5)(k+2)pi/4)]

Construção de um vector U de 40 elementos de i=0 até 4 fazer de j=0 até 3 fazer U[i*8+j] = V[i*16+j] U[i*8+4+j] = V[i*16+12+j]

Saída de 4 amostras reconstruídas

Fim

Janela de 40 coeficientes Produzir vector W de i=0 até 39 fazer Wi = Ui*Di (onde Di: coeficientes do filtro da tabela… multiplicados por -4)

Cálculo de 4 amostras de áudio de j=0 até 3 fazer Xj = sum(W[j+4i]) com i=0 to 9

Início

Entrada de 8 novas amostras Si i = 0….7

Deslocamento de i=159 até 16 fazer V[i] = V[i-16]

Matriz de k=0 até 15 fazer V[k] = sum(Nki*Si) i=0..7 Nki = cos[(i+0.5)(k+4)pi/8)]

Construção de um vector U de 80 elementos de i=0 até 4 fazer de j=0 até 7 fazer U[i*16+j] = V[i*32+j] U[i*16+8+j] = V[i*32+24+j]

Saída de 4 amostras reconstruídas

Fim

Janela de 80 coeficientes Produzir vector W de i=0 até 79 fazer Wi = Ui*Di (onde Di: coeficientes do filtro da tabela… multiplicados por -4)

Cálculo de 8 amostras de áudio de j=0 até 7 fazer Xj = sum(W[j+8i]) com i=0 to 9

Codec Áudio Bluetooth

Projecto final de curso 2003 25

Anexo C Aspecto visual da aplicação desenvolvida

Figura 18: Aspecto visual da aplicação desenvolvida

� Possibilidade de escolha de alguns parâmetros;

� Inicializa procedimento que consiste na captura do sinal no line in, tratamento do mesmo,

colocando-o de seguida no line out;

� Paragem do procedimento descrito em dois.

� Parâmetros utilizados como defeito pela aplicação