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
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
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
�
�
�
�