Desculpe pela resposta prolongada, mas é difícil fazer uma boa medição acústica. Aqui estão algumas das etapas envolvidas (e, em algum momento, chegaremos à resposta direta da sua pergunta).
Primeiro, você precisa se certificar de que o sistema que você está medindo é linear e invariante no tempo (caso contrário, você não pode desconvolver). Isso pode ser complicado em um PC se você usar drivers de placa de som comuns. Isso encaminhará qualquer sinal através do Windows Kernel Mixer, que freqüentemente aplica a conversão da taxa de amostragem e arranca os buffers no tempo de maneira não determinística. Eu recomendo ignorar o mixer do Kernel.
Segundo, você precisa determinar a duração do impulso do seu sistema. Uma boa estimativa é o tempo de reverberação da sala que você está medindo. É mais conveniente escolher uma potência de 2; para a maioria dos quartos, isso significa 16384 ou 32768 a uma taxa de amostragem de 44,1 kHz ou 48 kHz.
Terceiro, crie uma excitação periódica desse tamanho. Pode ser uma varredura de log ou (melhor) um ruído pseudo-aleatório. O espectro do ruído deve ser escolhido para que você obtenha uma relação sinal / ruído aproximadamente constante na faixa de frequência de interesse. Isso depende da função de transferência e do espectro do ruído de fundo. Se você ainda não conhece um desses, o rosa é um bom começo. Vamos chamar um período desse sinal x [n].
Quarto, conecte seu sistema para que o canal esquerdo do seu D / A entre no alto-falante E no canal esquerdo do seu A / D. Conecte o microfone no canal direito do A / D.
Quinto, inicie a excitação (faça um loop ou crie um arquivo wave com muitas repetições do seu sinal de ruído). Monitore cuidadosamente todos os níveis: verifique se o A / D fica a cerca de 10 dB abaixo do recorte. Verifique se o pré-amplificador do microfone está cerca de 10 dB abaixo do recorte. Verifique se o amplificador de potência não está cortando e se o alto-falante não está sobrecarregado.
Sexto, verifique se a sala está o mais silenciosa possível. Feche portas e janelas. Desligue a maioria das coisas com um ventilador, incluindo qualquer sistema HVAC. Despeje todas as outras pessoas das instalações. Se houver loops de aterramento, use transformadores de isolamento e elevadores de aterramento, conforme necessário. Uma boa maneira de verificar o ruído é conectar um amplificador de fone de ouvido à saída do microfone e ouvi-lo através de fones de ouvido. Qualquer ruído, zumbido ou outro artefato que você possa ouvir também aparecerá na medição.
Sétimo, faça a aquisição real. Colete 12 períodos com o sinal de excitação em execução. Inspecione visualmente os resultados em busca de algo incomum (falhas, peças faltando, desistências, etc.) Jogue fora os dois primeiros períodos. Calcule a média sobre os outros 10. Vamos chamar o canal esquerdo y [n] (placa de som) e o canal direito m [n] (microfone).
Oitavo, calcule a Transformada de Fourier de y [n]. Isso deve ser bastante plano, sem zeros ou áreas de energia muito baixa. Pode não ser o caso, pois a maioria das placas de som tem entradas acopladas a CA, ou seja, existe algum filtro passa-alto e o valor em DC pode ser muito baixo. Da mesma forma, também pode haver um filtro anti-aliasing; portanto, novamente, você pode ter pouca energia ou apenas ruído em frequências muito altas. Se você pode consertar isso manualmente (adicionando uma pequena quantidade de energia de banda larga), faça. Se o espectro for muito plano na área de frequência de interesse, você pode simplesmente substituí-lo por um impulso unitário adequadamente atrasado. Se nada disso funcionar, as coisas ficam mais complicadas.
Nono: deconvoluto. Sua função de transferência pode ser simplesmente calculada como
onde denota a transformação de Fourier. Esta é a divisão espectral direta sem nenhum preenchimento zero ou janelas. Como estamos fazendo aquisições coerentes circulares, também estamos fazendo uma deconvolução circular.
H( ω ) = I { m ( t ) }Eu { y( t ) }
Eu { }
A equação mostra o problema discutido na etapa 8. Estamos dividindo por um espectro medido. Quaisquer zeros ou áreas de baixa energia ou alto ruído no espectro do divisor resultarão em lixo na função de transferência resultante. Os resultados nas frequências "boas" ainda serão bons, mas você não pode usá-lo para, por exemplo, calcular uma resposta de impulso. Uma versão simplificada seria apenas dividir pelo sinal de excitação, ou seja,
H( ω ) = I { m ( t ) }Eu { x ( t ) }
e escolha a excitação para que não haja zeros no espectro. No entanto, isso não permitirá que você deconvolva a resposta do sistema D / A e A / D e também perderá qualquer informação de atraso absoluto. Em muitos casos, isso é realmente aceitável e muitos sistemas de medição comercial fazem exatamente isso, portanto depende da sua aplicação.
Décimo: verifique se sua medição está boa. Vários testes devem ser realizados:
- Meça algumas vezes e verifique se o resultado é o mesmo.
- Meça com o alto-falante silenciado. Isso fornecerá uma boa estimativa do espectro do ruído de fundo. Como regra geral, você precisa de pelo menos 10 dB de relação sinal / ruído em todas as frequências de interesse.
- Teste de linearidade: meça com metade do ganho de excitação e confirme se a função de transferência resultante é a mesma.
- Um teste de ruído em linha útil é o seguinte: Faça seus 10 períodos e calcule a média 5 vezes em 2 períodos cada, e faça uma transformação de Fourier em 2 * N amostras. Se o seu sinal estiver livre de ruído, todos os compartimentos ímpares deverão ser zero. Você pode estimar diretamente a relação sinal / ruído em qualquer frequência como X {2 * N + 1} / X {2 * N}