Simulação Acústica - Relatório Final

Simulação Acústica - Relatório Final

(Parte 1 de 2)

Relatorio Final

Programa de Iniciacao cientıfica da Universidade de Sao Paulo, Bolsa de Iniciacao Cientıfica: PIBIC-CNPq

Processo numero 123742/2010-2

Bolsa vigente do segundo semestre de 2010 ao primeiro de 2011

Bolsista: Miguel Mendes Ruiz∗- IF-USP Orientador: Marcelo Gomes de Queiroz - IME-USP

30 de agosto de 2011

∗ miguel.ruiz@usp.br

Resumo do projeto inicial com os objetivos iniciais

E ste projeto de pesquisa e parte do projeto tematico MOBILE/FAPESP, que trata de processos musicais iterativos e engloba a continuacao do desenvolvimento do software livre AcMus [1] para medicao, analise e simulacao acusticas. O escopo deste sub-projeto refere-se ao modulo de simulacao acustica e auralizacao atraves de tecnicas de acustica geometrica, mais especificamente a tecnica do tracado de raios (Ray Tracing Technique) [9].

As informacoes fornecidas pela simulacao acustica de um espaco virtual de escuta, tais como sua resposta impulsiva e parametros acusticos dela extraıdos (tempo de reverberacao, equilıbrio de graves e agudos, etc.), podem ser utilizadas para se criar uma impressao audıvel deste espaco virtual (atraves da tecnica de auralizacao [1]), ou mesmo para identificar possıveis problemas de projeto acustico e sugerir modificacoes estruturais, de acordo com o uso que se pretende fazer do espaco.

Os objetivos deste trabalho consistem em estudar e implementar algoritmos de auralizacao e otimizacao, como ferramentas do software livre AcMus, baseado em trabalhos anteriores [13, 14, 17]. Esta implementacao, feita na linguagem Java, visa melhorar a eficiencia do modulo de simulacao, adaptando-o a um sistema multi-thread, alem de integrar as diversas partes do sistema de maneira coerente.

Introducao

A custica de salas [1] e um campo de estudos inter-disciplinar importante para diversas areas do conhecimento. E base de projetos arquitetonicos, materia-prima para musicos e preocupacao para engenheiros.

Auralizacao e o processo de renderizacao audıvel, por modelagem fısica ou matematica, do campo sonoro emitido por uma fonte sonora num espaco de escuta, de tal forma a simular a experiencia binaural auditiva numa determinada posicao do espaco modelado [8].

Descreve-se a seguir a implementacao do processo de auralizacao no software livre

AcMus [1]. Para tal foram utilizados apenas processamento e/ou sıntese digital de sinais [15], ou seja, tratou-se da auralizacao de um espaco virtual ou modelo de sala de escuta. Levou-se tambem em conta os efeitos de refracao, reflexao e difracao de uma cabeca pela utilizacao de suas funcoes de transferencia (Head-Related Transfer Functions), o que se provou ser muito importante no resultado final da auralizacao [8, 10].

Material e Metodos utilizados

D escreve-se aqui os metodos utilizados no aperfeicoamento, expansao e aplicacao da tecnica do tracado de raios para simulacao de um ambiente acustico.

Paralelismo e re-estruturacao da simulacao acustica

N um primeiro momento focou-se no entendimento e em melhorias da tecnica do tracado de raios ja implementada[17], que se baseia no artigo sobre a tecnica do tracado de raios (Ray Tracing Technique)[9].

Um princıpio que ajudou a melhorar a versatilidade do codigo e possibilitou sua expansao foi seguir o padrao de desenvolvimento Strategy[6], que consiste em definir uma famılia de algoritmos, encapsulados como objetos, e torna-los intercambiaveis, permitindo futuramente a adicao de outros componentes e outras tecnicas de simulacao sem a necessidade de re-estruturacao do codigo.

Implementou-se um sistema multi-threads para melhor aproveitamento dos recursos computacionais. Para tal, foram analisados os possıveis benefıcios de utilizar o framework fork-join[7], que automatiza decisoes referentes ao grau de paralelismo na execucao dos algoritmos.

Decidiu-se, porem, pela simples abordagem de distribuir uma parte da simulacoes para cada para nucleo de processamento a ser utilizada, pois por uma analise a priori do que seria dispendioso em nosso problema concluiu-se que o gasto computacional e estavel e so depende das dimensoes do problema sendo possıvel chegar a uma distribuicao otima das funcoes computacionais sem utilizar as decisoes automaticas do framework estudado.

De qualquer maneira, para poder distribuir o problema computacional, a classe simuladora deve prover em seu codigo implementacoes alternativas para a execucao sequencial ou paralela (por exemplo, usando divisao-e-conquista), para depois distribuı-los para os varios nucleos de processamento.

Com esse objetivo e seguindo o padrao de desenvolvimento Strategy criou-se uma classe que representa o raio a ser tracado com um metodo que leva em conta o espaco geometrico e suas caracterısticas acusticas e o receptor, tambem representados por classes.

A classe que representa o raio encapsula os calculos devidos a geometria do problema, que tem o maior custo computacional, e permite facilmente distribuir o processamento com a criacao de diversos objetos da classe raio num mesmo espaco geometrico em nucleos de processamento diferentes sendo que eles so concorrerao aos recursos geridos pelo objeto receptor, o que foi levado em conta no desenvolvimento do algoritmo do mesmo.

Observa-se que a concorrencia pelos recursos do receptor e escassa e esse resultado corrobora com a decisao pela simples abordagem de distribuicao pelos nucleos de processamento.

Simulacao acustica para diversas faixas de frequencia

P ara melhorar a representacao fısica da acustica de uma sala simulada pela tecnica do tracado de raios, substituiu-se o modelo simplificado baseado no uso de um coeficiente medio de absorcao das superfıcies que limitam o espaco, adotando-se coeficientes de absorcao como funcoes da frequencia sonora. Especificamente, sao utilizados valores tabelados de absorcao para diversos materiais e diversas faixas de frequencia. Tal re-estruturacao do modelo de simulacao traz maior fidelidade a auralizacao, e permite o tratamento computacional das simulacoes para cada faixa de frequencia de forma paralela.

Atraves da criacao de varias respostas impulsivas energeticas, especıficas para cada faixa de frequencia, por meio da simulacao geometrica [17, 9], pode-se obter as respostas impulsivas completas (em valores de pressao) [1, 10]. Explica-se a seguir tal processamento, baseado parcialmente no artigo [10].

Processando as simulacoes para diversas faixas de frequencia

C om o sinal de audio dividido em ν valores de frequencia, obtem-se a partir de simulacao acustica energetica os valores

Eik onde i denota o ındice do intervalo de tempo ∆ti e k o ındice correspondente a faixa de frequencia. Assim, a sequencia

Ei1, Ei2, Ei3,, Eiν

representa o espectro energetico (discreto) no intervalo de tempo ∆ti. O espectro (discreto) de pressao no intervalo de tempo ∆ti e definido como

Eik, k = 1,, ν.

Utilizando uma interpolacao polinomial, obtem-se a partir desse espectro discreto uma funcao contınua Pi(f), definida para todos os valores de frequencia f e para cada ındice i associado ao intervalo de tempo ∆ti. Uma alternativa a interpolacao dos valores de pressao como exposto acima e a in- terpolacao dos valores originais de energia, definindo uma funcao contınua Ei(f) para o intervalo de tempo ∆ti, e posterior conversao em valores interpolados de pressao

lores interpolados diferentes, esta ultima esta sujeita a possibilidade de se encontrar um numero Ei(f) negativo como argumento da raiz quadrada na conversao Pi(f) = √ Ei(f), definindo um valor Pi(f) complexo. Escolheu-se a primeira por sua simplicidade.

Obtencao do espectro contınuo por interpolacao polinomial

P ara obter o espectro contınuo e realizada uma interpolacao polinomial. Por con- vencao fixa-se um nıvel p0 = 0 de pressao para a frequencia f0 = 0, que corresponde a componente DC; isso porque espera-se que apos a transformada inversa de Fourier (ver a secao seguinte) a media do sinal de audio obtido seja zero.

Depois constroi-se o polinomio Yi(f) de forma que{

o que se reduz a resolver um sistema linear. Assim, representa o espectro contınuo em valores de pressao no intervalo de tempo ∆ti centrado no instante τ.

Na implementacao em Java este sistema foi resolvido usando o metodo solve da classe Matrix disponibilizada no pacote Jama [2].

Obtencao da resposta impulsiva no domınio do tempo

P ara se obter uma resposta em pressao no domınio do tempo constroi-se as funcoes

onde F−1f [h(f)](t) denota a transformada inversa de Fourier da funcao h(f). No sistema AcMus esta transformada e calculada atraves do algoritmo FFT, baseado em uma implementacao aberta1 [16]. O espectro de fases, que nao e construıdo na simulacao geometrica, e tratado como nulo.

Kuttruff [10] sugere que, em cada intervalo ∆ti centrado no instante τ, seja gerada uma sequencia de instantes aleatorios tn distribuıdos conforme uma distribuicao de Poisson com media τ, para entao se obter a resposta equivalente em pressao ζi no intervalo ∆ti somando copias de gi centradas em cada tn:

sendo que a densidade media de instantes sorteados tn deve ser de 5000 valores por segundo. Finalmente, a resposta impulsiva em pressao equivalente a resposta impulsiva energetica obtida na simulacao e dada pela soma:

O contexto de aplicacao do metodo de Kuttruff, no entanto, considera que ∆ti e muito grande comparado com o intervalo entre duas amostras sucessivas no sinal de audio, que corresponde ao inverso da taxa de amostragem. Ao usar um ∆ti comparavel a distancia entre as amostras, ou mesmo igual a esse valor, e razoavel utilizar:

A implementacao atual utiliza esta ultima versao. Seria interessante em trabalhos futuros fazer testes comparativos entre estas duas abordagens para determinar quais sao as vantagens e desvantagens de cada tecnica em relacao a eficiencia computacional e a fidelidade acustica do resultado gerado.

1disponıvel em http://www.cs.princeton.edu/introcs/97data/FFT.java.html

Auralizacao

O processo de renderizacao audıvel do campo sonoro de uma fonte sonora num espaco de escuta, dada uma resposta impulsiva em valores de pressao, se da por meio da convolucao do sinal da fonte com a resposta impulsiva.

O algoritmo de convolucao implementado no sistema AcMus [16, 12] utiliza-se do metodo de FFT e foi desenvolvida em conjunto com o aluno de I.C. Caio Braz (IME/USP), orientando do Prof. Fernando Iazzetta (ECA/USP).

Para a recriacao da impressao espacial do resultado sonoro auralizado com maior fidelidade, e interessante computar a auralizacao independentemente para cada ouvido do usuario. Como as posicoes dos ouvidos em relacao a fonte sao distintas, duas abordagens sao possıveis: a construcao de respostas impulsivas separadas para os dois ouvidos, ou a utilizacao de uma resposta impulsiva media e posterior convolucao com filtros especializados, chamados de HRTFs (Head-Related Transfer Functions).

HRTFs podem ser medidas experimentalmente ou serem simuladas de acordo com a geometria de uma dada cabeca. Nenhuma destas tecnicas esta no escopo deste trabalho, mas existem bancos de HRTFs disponıveis e utilizou-se um, o banco de dados de HRTFs do CIPIC[3, 4].

Com a finalidade de recriar a ambiencia do local com sua nocao de direcionalidade sonora implementou-se uma meneira de acessar o banco de dados do CIPIC e convoluiuse o resultado das simulacoes nas diversas bandas de frequencia ja em seu formato em funcao do tempo (resposta impulsiva) com a funcao de transferencia da cabeca para cada ouvido, chegando a um arquivo de audio estereo, correspondente a audicao do sinal original na sala simulada por acustica geometrica.

Resultados obtidos

C om os testes obteve-se um resultado para o processamento das respostas impulsivas energeticas quantitativa e qualitativamente de acordo com o esperado. Tal apreciacao esta baseada no processo de depuracao do codigo, em propriedade quantitativas da operacao de convolucao que foram verificadas e em avaliacoes qualitativas atraves da audicao da auralizacao de um sinal com um trecho de voz gravada e a resposta impulsiva de uma sala de dimensoes moderadas observou-se o efeito de reverberacao tıpico deste tipo de ambiente. Investigou-se quantitativamente os resultados da auralizacao no que se refere a eficiencia computacional dos metodos e possibilidades de aplicacao em tempo-real comparando com solucoes alternativas e concluiu-se que para aplicacoes em tempo-real seria necessario fazer mais simplificacoes no modelo e no codigo, como considerar sempre uma sala cuboide para assim poder utilizar-se do Metodo das Imagens [15, 5] e diminuir a quantidade de bandas de frequencia consideradas no problema.

Objetivos atingidos Em ordem cronologica:

Leitura dos artigos [9, 15, 13] e da dissertacao de mestrado [17]. Familiarizacao com os codigos pre-existentes no arcabouco de simulacao do AcMus.

Re-estruturacao do projeto orientado a objetos referente a simulacao acustica no AcMus.

Paralelizacao dos trechos mais dispendiosos do codigo de simulacao.

Leitura dos artigos [8, 10] e de trechos dos livros [16, 12].

Elaboracao de codigo para processamento das respostas impulsivas energeticas e obtencao da resposta impulsiva completa em pressao.

Implementacao da operacao de convolucao entre sinais com base no codigo presente em [16] e [12] e aplicacao da mesma na auralizacao.

Possibilitar o acesso e utilizacao integrada do banco de dados de HRTFs do CIPIC, dando melhor ambiencia e direcionalidade a auralizacao.

Discussao dos resultados obtidos Diminuicao do tempo de simulacao

P ara diminuir o tempo de simulacao fez-se possıvel aproveitar os multiplos nucleos de processamento paralelizando os trechos mais dispendiosos do codigo de simulacao, multiplicando, em via de regra, a velocidade original da simulacao pelo numero de nucleos disponıveis. Alem dessa, outras melhorias contribuıram em conjunto para uma melhor utilizacao dos recursos computacionais como a diminuicao do uso de metodos estaticos, a criacao dos raios em tempo de simulacao e nao como um pre-processamento, programacao voltada a interface e outras praticas recomendadas em Orientacao a Objetos.

Segue uma tabela comparando o tempo medio para realizar uma simulacao com cem mil raios numa sala de mil metros cubicos na ultima versao feita antes do inıcio desse programa de iniciacao cientıfica, do dia 29 de marco de 2010, com a versao atual, do dia 19 de julho de 2011 em duas configuracoes.

Processador (Nucleos x velocidade do relogio) - SO Versao antiga Versao atual

Tabela 1: Tempo decorrido numa simulacao com 100000 raios (em segundos).

Observa-se entao que as melhorias no codigo referentes a re-estruturacao do projeto orientado a objetos sao responsaveis por uma diminuicao do tempo necessario para a simulacao de cerca de 10% e ao aproveitar os multiplos nucleos de processamento dividese ainda o tempo que era antes necessario pelo numero de nucleos disponıveis.

Avaliacao da resposta impulsiva completa em pressao

U ma maneira qualitativa de avaliar a resposta impulsiva completa em pressao gerada a partir de respostas impulsivas energeticas e compara-las graficamente. A figura 1 mostra num intervalo que o resultado esperado e obtido e esse e um teste geral que valida as operacoes utilizadas no processamento dos resultados da simulacao.

(Parte 1 de 2)

Comentários