-
Mikrofon phased array
- Mikrofon phased array 192 kanal ini menyediakan fungsi akuisisi data berbasis FPGA serta beamforming/visualisasi di GPU. Phased array memungkinkan aplikasi yang tidak dapat dilakukan mikrofon directional tradisional, seperti langsung mengubah arah setelah perekaman atau memfokuskan secara bersamaan pada ratusan ribu titik.
- Semua desain tersedia sebagai open source:
- perangkat lunak host
- gateware FPGA
- layout PCB dan skematik, komponen mekanis
-
Perangkat keras
- Untuk membuat mikrofon phased array, diperlukan banyak mikrofon yang disusun dengan jarak lebar. Untuk array linear, jarak eksponensial antar mikrofon optimal untuk sinyal broadband.
- Total biayanya sekitar $700.
Lengan
- Panjang setiap lengan ditentukan oleh batas manufaktur dan perakitan PCB. Dibuat di JLCPCB, dan panjang maksimum PCB 4 lapis adalah 570mm.
- Mikrofon yang dipilih adalah mikrofon MEMS output digital termurah, dengan perbedaan karakteristik performa yang tidak besar.
- Data dikeluarkan menggunakan PDM, dan mendukung DDR sehingga dua mikrofon dapat dimultipleks pada satu kabel.
- Setiap lengan memiliki 8 mikrofon yang berbagi 4 jalur output, dan mencakup output buffer pada jalur input clock.
- Yield PCB kurang baik, dan masalah yang paling umum adalah jalur clock mengalami short ke 3V3 atau ground.
Hub
- FPGA digunakan untuk akuisisi data karena dapat mengumpulkan banyak IO latensi rendah dan berkomunikasi melalui antarmuka berkecepatan tinggi.
- Kartu Colorlight i5 digunakan karena memiliki IO yang cukup, harga murah, dan dua Ethernet PHY terintegrasi.
- Hub mencakup rangkaian manajemen daya sederhana serta konektor papan lengan dan Ethernet.
Desain mekanis
- Lengan dipasang ke hub menggunakan sekrup M3, dan dirakit memakai standoff/nut pemasangan PCB.
- Desain awal memiliki slot pada PCB lengan agar saling mengunci dengan PCB struktural, tetapi desain akhir membungkus bagian luar dengan MDF dan dipasang menggunakan cable tie.
- Array mikrofon yang dipasang di dinding sensitif terhadap pantulan, sehingga digunakan acoustic foam untuk mengurangi refleksi.
-
Gateware
- Tujuan utama gateware adalah mengirim data mentah ke komputer tanpa kehilangan.
- Melakukan decimation dan filtering di FPGA memang mengurangi kecepatan transfer data, tetapi pengiriman data PDM mentah tetap dimungkinkan.
Antarmuka PDM
- Modul input PDM membagi clock sistem 50MHz dengan 16 untuk menghasilkan clock PDM 3.125MHz, lalu melatch 96 pin input setelah setiap edge clock.
- Kecepatan datanya 600Mbps, atau 700Mbps jika termasuk header.
Paketisasi
- Paketisasi menggunakan buffer FIFO, dan hanya memulai paket saat ada cukup data di antrean sehingga ukuran paket tetap konstan.
- Sebanyak 48 blok output PDM disertakan di setiap paket, dengan kecepatan transfer 715 Mbps.
UDP streamer
- Berkat proyek LiteEth, kompleksitas enkapsulasi UDP dan IP diabstraksikan sehingga mudah menghubungkan FIFO ke stream UDP.
-
Perangkat lunak
Filter CIC
- Setiap mikrofon menghasilkan sinyal 1-bit pada 3.125MHz, yang perlu dikurangi ke sample rate dan bit depth yang lebih masuk akal.
- Filter CIC 4 tahap dengan decimation 16x digunakan untuk menurunkan sample rate menjadi 195kHz.
Kalibrasi
- Untuk kalibrasi array, speaker memutar white noise sambil digerakkan di depan array.
- Relative delay antar mikrofon dihitung menggunakan cross-correlation berbasis FFT.
- Posisi sumber dan posisi mikrofon dioptimalkan untuk memperoleh model sistem terbaik.
Beamforming
- Beamforming adalah metode untuk memproses input mikrofon mentah guna menghasilkan respons directional.
- Sinyal diproses dengan mengimplementasikan delay di domain frekuensi.
- Diimplementasikan beamformer 3D near-field dan beamformer 2D far-field.
Beamforming 3D near-field
- Dilakukan pada grid voxel 5cm, dan mencapai kecepatan pembaruan 12Hz di RTX 4090.
- Divisualisasikan menggunakan VisPy.
Beamforming 2D far-field
- Menggunakan grid piksel 512x512, dan mencapai kecepatan pembaruan 12Hz.
Audio directional
- Beamformer delay-and-sum domain waktu diimplementasikan untuk memungkinkan perekaman audio directional.
Perekaman
- Data dari array mikrofon berupa paket UDP, dan dapat direkam dengan alat seperti
tcpdump.
- Kekurangan implementasi perekaman ini adalah laju data output sangat tinggi.
-
Langkah berikutnya
- Proyek ini pada dasarnya sudah selesai, dan meskipun tidak ada rencana pekerjaan tambahan ke depan, masih ada beberapa kemungkinan pengembangan.
- Menggunakan algoritma beamforming yang lebih maju
- GUI yang lebih baik yang menggabungkan semua fungsi
- Menggabungkan beamforming yang dapat didiferensiasikan dengan model jaringan saraf
1 komentar
Opini Hacker News
Disebutkan bahwa proses mengoptimalkan kecepatan suara untuk mendapatkan model optimal sistem bekerja seperti termometer yang sangat kompleks
Pernah mengerjakan proyek menggunakan 4 mikrofon untuk menemukan lokasi kelelawar dan mengidentifikasi spesiesnya
Ada pertanyaan mengapa menggunakan PDM alih-alih mikrofon TDM I2S
Mengemukakan keinginan untuk menggabungkannya dengan array speaker ultrasonik untuk penggunaan medis
Disebutkan bahwa demo kamera akustik yang mengesankan bisa dilihat di YouTube
Berharap fitur audio terarah berkualitas tinggi hadir di perangkat mobile
Menyebut sistem akustik berbentuk bola yang digunakan Boeing pada prototipe 787
Berpikir bahwa proyek untuk memisahkan suara berdasarkan lokasi akan sangat keren
Mengungkapkan keterkejutan pada PCB berbentuk "lengan" yang panjang
Menyebut bahwa teknologi seperti ini makin banyak digunakan pada drone