-
Microfone de arranjo em fases
- Um microfone de arranjo em fases com 192 canais, oferecendo aquisição de dados via FPGA e funcionalidades de beamforming/visualização na GPU. O arranjo em fases permite aplicações impossíveis com microfones direcionais tradicionais, como alterar instantaneamente a direcionalidade após a gravação ou focar simultaneamente em centenas de milhares de pontos.
- Todos os projetos são disponibilizados como código aberto:
- Software do host
- Gateware do FPGA
- Layout da PCB e esquemáticos, componentes mecânicos
-
Hardware
- Para construir um microfone de arranjo em fases, é necessário organizar um grande número de microfones com espaçamento amplo. No caso de um arranjo linear, o espaçamento exponencial entre os microfones é ideal para sinais de banda larga.
- O custo total é de cerca de $700.
Braços
- O comprimento de cada braço é determinado pelas limitações de fabricação e montagem da PCB. Foi fabricado pela JLCPCB, e o comprimento máximo de uma PCB de 4 camadas é de 570 mm.
- O microfone escolhido é o MEMS com saída digital mais barato, sem grandes diferenças em suas características de desempenho.
- Ele usa PDM para saída de dados e oferece suporte a DDR, permitindo multiplexar dois microfones em um único fio.
- Cada braço tem 8 microfones compartilhando 4 linhas de saída, e inclui um buffer de saída na linha de entrada de clock.
- O rendimento da PCB não é bom, e o problema mais comum é a linha de clock entrar em curto com 3V3 ou terra.
Hub
- O FPGA é usado para aquisição de dados porque consegue coletar um grande número de IOs de baixa latência e se comunicar por interfaces de alta velocidade.
- A placa Colorlight i5 é utilizada por ter IO suficiente, preço baixo e dois PHYs Ethernet integrados.
- O hub inclui um circuito simples de gerenciamento de energia, além de conectores para as placas dos braços e Ethernet.
Projeto mecânico
- Os braços são fixados ao hub com parafusos M3 e montados usando espaçadores/porcas de fixação de PCB.
- O projeto inicial tinha slots na PCB dos braços para encaixe com uma PCB estrutural, mas o projeto final envolve o contorno com MDF e fixa com abraçadeiras plásticas.
- Como o arranjo de microfones montado na parede é sensível a reflexões, espuma acústica é usada para reduzi-las.
-
Gateware
- O principal objetivo do gateware é transmitir os dados brutos ao computador sem perdas.
- Fazer decimação e filtragem no FPGA reduz a taxa de transferência de dados, mas é possível transmitir os dados PDM brutos.
Interface PDM
- O módulo de entrada PDM divide o clock de sistema de 50 MHz por 16 para gerar um clock PDM de 3,125 MHz e faz latch de 96 pinos de entrada após cada borda de clock.
- A taxa de dados é de 600 Mbps e, com cabeçalhos, 700 Mbps.
Empacotamento
- O empacotamento é feito com um buffer FIFO, iniciando pacotes apenas quando há dados suficientes na fila, garantindo pacotes de tamanho constante.
- 48 blocos de saída PDM são incluídos em cada pacote, com taxa de transmissão de 715 Mbps.
Streamer UDP
- Graças ao projeto LiteEth, a complexidade da encapsulação UDP e IP é abstraída, tornando simples conectar uma FIFO a um stream UDP.
-
Software
Filtro CIC
- Cada microfone gera um sinal de 1 bit a 3,125 MHz, que precisa ser reduzido para uma taxa de amostragem e profundidade de bits mais razoáveis.
- É usado um filtro CIC de 4 estágios com decimação de 16x para reduzir a taxa de amostragem para 195 kHz.
Calibração
- Para calibrar o arranjo, um alto-falante reproduz ruído branco enquanto se move na frente do arranjo.
- Usa-se correlação cruzada baseada em FFT para calcular os atrasos relativos entre os microfones.
- A posição da fonte e a posição dos microfones são otimizadas para obter o modelo ideal do sistema.
Beamforming
- Beamforming é uma forma de processar as entradas brutas dos microfones para gerar uma resposta direcional.
- Os sinais são processados implementando atrasos no domínio da frequência.
- São implementados um beamformer 3D de campo próximo e um beamformer 2D de campo distante.
Beamforming 3D de campo próximo
- É executado em uma grade de voxels de 5 cm e atinge uma taxa de atualização de 12 Hz em uma RTX 4090.
- A visualização é feita com VisPy.
Beamforming 2D de campo distante
- Usa uma grade de 512x512 pixels e atinge uma taxa de atualização de 12 Hz.
Áudio direcional
- Um beamformer de atraso e soma no domínio do tempo é implementado para possibilitar gravação de áudio direcional.
Gravação
- Os dados do arranjo de microfones são pacotes UDP e podem ser gravados com ferramentas como
tcpdump.
- A desvantagem da implementação de gravação é que a taxa de dados de saída é muito alta.
-
Próximos passos
- Este projeto está essencialmente concluído, e não há planos de trabalho adicional no futuro, mas existem várias possibilidades de expansão.
- Uso de algoritmos de beamforming mais avançados
- Uma GUI melhor que combine todas as funcionalidades
- Combinação de beamforming diferenciável com modelos de rede neural
1 comentários
Comentários do Hacker News
Menciona-se que o processo de otimizar a velocidade do som para obter o modelo ideal do sistema funciona como um termômetro muito complexo
Foi realizado um projeto com 4 microfones para localizar morcegos e identificar a espécie
Foi feita uma pergunta sobre o motivo de usar PDM em vez de microfones TDM I2S
Foi apresentada a opinião de que seria interessante usar isso em aplicações médicas combinado com um arranjo de alto-falantes ultrassônicos
Menciona-se que é possível ver demos impressionantes de câmeras acústicas no YouTube
Deseja-se que recursos de áudio direcional de alta qualidade sejam introduzidos em dispositivos móveis
Menciona-se o sistema acústico esférico usado pela Boeing no protótipo do 787
Acha-se que um projeto para separar sons com base na localização seria legal
Expressa-se surpresa com o PCB longo em forma de 'braço'
Menciona-se que essa tecnologia está sendo usada cada vez mais em drones