-
Micrófono de arreglo en fase
- Un micrófono de arreglo en fase de 192 canales ofrece adquisición de datos con FPGA y funciones de beamforming/visualización en GPU. Los arreglos en fase permiten aplicaciones que no son posibles con los micrófonos direccionales tradicionales, y permiten cambiar la directividad inmediatamente después de grabar o enfocar simultáneamente en cientos de miles de puntos.
- Todos los diseños se ofrecen como open source:
- Software host
- Gateware de FPGA
- Layout de PCB y esquemáticos, componentes mecánicos
-
Hardware
- Para construir un micrófono de arreglo en fase, se necesita disponer una gran cantidad de micrófonos con un espaciamiento amplio. En el caso de un arreglo lineal, el espaciamiento exponencial entre micrófonos es óptimo para señales de banda ancha.
- El costo total es de aproximadamente $700.
Brazos
- La longitud de cada brazo está determinada por los límites de fabricación y ensamblaje de PCB. Se fabricó en JLCPCB, y la longitud máxima de una PCB de 4 capas es de 570 mm.
- El micrófono elegido es el MEMS de salida digital más barato, sin grandes diferencias en sus características de rendimiento.
- Usa PDM para sacar los datos y soporta DDR, lo que permite multiplexar dos micrófonos en un solo cable.
- Cada brazo tiene 8 micrófonos que comparten 4 líneas de salida, e incluye un buffer de salida en la línea de entrada de reloj.
- El rendimiento de fabricación de la PCB no es bueno, y el problema más común es que la línea de reloj quede en corto con 3V3 o tierra.
Hub
- Se usa un FPGA para la adquisición de datos porque puede recolectar una gran cantidad de IO de baja latencia y comunicarse por una interfaz de alta velocidad.
- Se usa una tarjeta Colorlight i5, que tiene suficientes IO, un precio bajo y dos PHY Ethernet integrados.
- El hub incluye un circuito simple de administración de energía, además de las placas de los brazos y conectores Ethernet.
Diseño mecánico
- Los brazos se fijan al hub con tornillos M3, y se ensamblan usando standoffs/tuercas de montaje para PCB.
- El diseño inicial tenía ranuras en la PCB de los brazos para encajar con una PCB estructural, pero el diseño final rodea el contorno con MDF y se fija con cinchos.
- Como el arreglo de micrófonos montado en pared es sensible a las reflexiones, se usa espuma acústica para reducirlas.
-
Gateware
- El objetivo principal del gateware es transmitir los datos sin procesar a la computadora sin pérdidas.
- Hacer diezmado y filtrado en el FPGA reduce la velocidad de transferencia de datos, pero es posible transmitir los datos PDM crudos.
Interfaz PDM
- El módulo de entrada PDM divide entre 16 el reloj del sistema de 50 MHz para generar un reloj PDM de 3.125 MHz, y captura 96 pines de entrada después de cada flanco de reloj.
- La tasa de datos es de 600 Mbps y, con encabezado, es de 700 Mbps.
Packetización
- La packetización es un buffer FIFO que solo inicia paquetes cuando hay suficientes datos en la cola, garantizando paquetes de tamaño constante.
- Cada paquete incluye 48 bloques de salida PDM, con una velocidad de transmisión de 715 Mbps.
Streamer UDP
- Gracias al proyecto LiteEth, la complejidad del encapsulado UDP e IP se abstrae, por lo que conectar un FIFO a un stream UDP es sencillo.
-
Software
Filtro CIC
- Cada micrófono genera una señal de 1 bit a 3.125 MHz, y esto debe reducirse a una frecuencia de muestreo y profundidad de bits más razonables.
- Se usa un filtro CIC de 4 etapas con diezmado de 16x para reducir la frecuencia de muestreo a 195 kHz.
Calibración
- Para calibrar el arreglo, un altavoz reproduce ruido blanco mientras se mueve frente al arreglo.
- Se usa correlación cruzada basada en FFT para calcular el retardo relativo entre micrófonos.
- Se optimizan la posición de la fuente y las posiciones de los micrófonos para obtener el mejor modelo del sistema.
Beamforming
- El beamforming es una forma de procesar las entradas crudas de los micrófonos para generar una respuesta direccional.
- La señal se procesa implementando retardos en el dominio de la frecuencia.
- Se implementan un beamformer 3D de campo cercano y un beamformer 2D de campo lejano.
Beamforming 3D de campo cercano
- Se ejecuta sobre una cuadrícula de vóxeles de 5 cm y alcanza una tasa de actualización de 12 Hz en una RTX 4090.
- Se visualiza con VisPy.
Beamforming 2D de campo lejano
- Usa una cuadrícula de 512x512 píxeles y alcanza una tasa de actualización de 12 Hz.
Audio direccional
- Se implementa un beamformer de retardo y suma en el dominio del tiempo para permitir grabación de audio direccional.
Grabación
- Los datos del arreglo de micrófonos se envían como paquetes UDP y pueden grabarse con herramientas como
tcpdump.
- La desventaja de esta implementación de grabación es que la tasa de datos de salida es muy alta.
-
Próximos pasos
- Este proyecto está esencialmente terminado y no hay planes de seguir trabajando en él, pero hay varias posibilidades de expansión.
- Uso de algoritmos de beamforming más avanzados
- Una mejor GUI que combine todas las funciones
- Combinar beamforming diferenciable con modelos de redes neuronales
1 comentarios
Comentarios de Hacker News
Se menciona que el proceso de optimizar la velocidad del sonido para obtener el modelo óptimo del sistema funciona como un termómetro muy complejo.
Hizo un proyecto con 4 micrófonos para localizar murciélagos e identificar la especie.
Le preguntaron por qué usó PDM en lugar de micrófonos TDM I2S.
Plantea que le gustaría usarlo en aplicaciones médicas combinado con un arreglo de altavoces ultrasónicos.
Menciona que en YouTube se pueden ver demos impresionantes de cámaras acústicas.
Espera que se incorporen funciones de audio direccional de alta calidad en dispositivos móviles.
Menciona el sistema acústico esférico que Boeing usó en el prototipo del 787.
Cree que sería genial un proyecto que separe sonidos según la ubicación.
Expresa sorpresa por la PCB larga en forma de “brazo”.
Menciona que esta tecnología se está usando cada vez más en drones.