Mikrofon Phased Array (2023)
(benwang.dev)- Mikrofon phased array 192 kanal dapat mengubah arah tangkapan bahkan setelah perekaman, atau memfokuskan pada ratusan ribu titik sekaligus, sehingga memungkinkan estimasi dan visualisasi lokasi sumber suara yang sulit dilakukan dengan mikrofon directional biasa
- Perangkat kerasnya terdiri dari lengan mikrofon radial dan hub pusat; dengan biaya sekitar $700, ia menggunakan 192 mikrofon MEMS, kartu FPGA Colorlight i5, dan struktur transmisi Gigabit Ethernet
- FPGA berfokus pada pengiriman data PDM mentah ketimbang prapemrosesan yang kompleks; ia memproses input 3,125 MHz dan menggunakan sekitar 70% bandwidth Gigabit Ethernet, kira-kira 715 Mbps
- Perangkat lunaknya menggabungkan filter CIC, kalibrasi berbasis FFT, optimisasi GPU, dan beamforming Triton untuk memvisualisasikan secara real time lokasi sumber suara 3D jarak dekat dan 2D jarak jauh
- Paket UDP dapat ditangkap dengan
tcpdumplalu diputar ulang, tetapi penyimpanan mentah mencapai 87,5 MB/dtk, sehingga perekaman 1 jam membutuhkan 315 GB
Konfigurasi mikrofon phased array 192 kanal
- Menggabungkan mikrofon phased array 192 kanal dengan akuisisi data FPGA serta beamforming dan visualisasi berbasis GPU
- Berbeda dari mikrofon directional biasa, phased array dapat mengubah arah tangkapan bahkan setelah perekaman, dan dapat memfokuskan pada ratusan ribu titik secara bersamaan secara real time
- Seluruh desain dirilis sebagai open source
Desain perangkat keras
-
Struktur array dan biaya
- Phased array dibentuk dengan menempatkan banyak mikrofon dalam distribusi jarak yang lebar
- Pada array linear, jarak eksponensial antar-mikrofon diketahui optimal untuk sinyal broadband
- Array 2D menempatkan lengan array linear simetris secara radial agar papan hub pusat tetap kecil
- Biaya keseluruhan array sekitar $700
-
Papan lengan
- Panjang setiap lengan disesuaikan dengan batas manufaktur dan perakitan PCB; panjang maksimum manufaktur dan perakitan PCB 4 lapis JLCPCB adalah 570 mm
- Mikrofon menggunakan mikrofon MEMS keluaran digital murah seharga sekitar $0,5 per unit
- Pada kisaran harga ini, perbedaan performa antar-mikrofon tidak besar
- Kebanyakan menunjukkan performa yang cukup baik hingga 10 kHz, tetapi delay fase dan pencocokan volume tidak dispesifikasikan
- Mikrofon mengeluarkan data dengan metode PDM (pulse density modulation)
- Menghasilkan keluaran 1-bit pada frekuensi hingga 4 MHz, jauh di atas rentang dengar
- Mengompensasi derau kuantisasi dengan laju sampling tinggi
- Mendukung DDR yang melakukan latch data pada tepi naik dan turun clock, sehingga dua mikrofon dapat dimultipleks pada satu jalur
- Setiap lengan memiliki 8 mikrofon dan 4 jalur keluaran, dengan buffer keluaran pada jalur input clock
- Dirancang agar rise time tetap pada tingkat yang wajar meskipun ratusan mikrofon berbagi sinyal clock yang sama
- Yield PCB lengan tidak bagus; papan yang berfungsi pada kondisi awal sekitar 50%
- Kegagalan paling umum adalah jalur clock mengalami short ke 3V3 atau GND
- Untuk mengatasi short, diperlukan trial-and-error dengan melepas mikrofon satu per satu
- Sebagian mikrofon tetap menghasilkan data keliru setelah rework, dan kode mengecualikannya dengan masking mikrofon tersebut
- Pada desain berikutnya, rework dapat dikurangi dengan resistor seri pada jalur clock, perbaikan panelisasi, dan perbaikan stensil solder paste
-
Papan hub
- Akuisisi data menggunakan FPGA, yang membutuhkan banyak I/O berlatensi rendah dan antarmuka berkecepatan tinggi seperti Gigabit Ethernet
- Secara spesifik, kartu Colorlight i5 dipilih
- Alasannya adalah I/O yang cukup, harga rendah, mudah didapat, dan dua Ethernet PHY terintegrasi
- Dalam proyek ini hanya satu Ethernet PHY yang digunakan
- Kartu ini awalnya adalah antarmuka Ethernet untuk panel LED, tetapi telah direkayasa balik sepenuhnya
- Sekitar 100 GPIO terekspos melalui konektor DDR2, sehingga fan-out lebih mudah dibanding BGA FPGA aslinya
- Selain FPGA, hub berisi rangkaian manajemen daya sederhana, konektor untuk papan lengan, dan konektor Ethernet dengan magnetik terintegrasi
-
Desain mekanis
- Lengan dipasang ke hub dengan standoff dan mur pemasangan PCB serta sekrup M3
- Koneksi antara lengan dan hub menggunakan konektor 8 pin pitch 2 mm
- Desain awal mengaitkan slot pada PCB lengan dengan PCB struktur melingkar, tetapi kekakuan puntir lengan rendah sehingga keseluruhan struktur mudah berubah bentuk
- Desain akhir menempatkan potongan MDF 1/4 inci hasil laser cutting di bagian luar array, lalu setiap lengan diikat ke MDF dengan cable tie
- Karena array mikrofon dipasang di dinding dan rentan terhadap pantulan, pantulan dikurangi dengan busa penyerap suara agar kalibrasi lebih mudah
Gateware FPGA
-
Tujuan desain
- Tujuan inti gateware adalah mengirim data mentah yang dikumpulkan ke komputer secara stabil tanpa kehilangan
- Decimation dan filtering di FPGA dapat mengurangi data rate, tetapi data PDM mentah pun dapat dikirim melalui Gigabit Ethernet
- Mengirim data mentah mengurangi kompleksitas kode FPGA dan mempercepat iterasi pengembangan
- Kompilasi kode lebih cepat daripada place-and-route, dan menggunakan debugger pada kode biasa lebih mudah daripada men-debug gateware
-
Antarmuka PDM
- Modul input PDM membagi clock sistem 50 MHz dengan 16 untuk menghasilkan clock PDM 3,125 MHz
- Setelah setiap tepi clock, 96 pin input di-latch, dan data 32-bit digeser pada tiap siklus clock
- Header integer naik 32-bit ditempelkan pada setiap chunk data 192-bit
- Data rate input antarmuka PDM adalah 3,125 MHz × 96 pin input × DDR 2 = 600 Mbps
- Data rate output termasuk header adalah 700 Mbps, dan utilisasi jalur data output 32-bit sekitar 40%
-
Paketisasi dan transmisi UDP
- Modul paketisasi mirip buffer FIFO dengan antarmuka input khusus
- Karena antarmuka Ethernet lebih cepat daripada output PDM, jika berperilaku seperti FIFO standar yang langsung mengeluarkan data meski hanya ada satu item, paket yang lebih kecil dari permintaan dapat terbentuk
- Modul paketisasi menunggu sampai data sebanyak satu paket terkumpul di antrean, lalu mulai mengirim untuk menjamin paket berukuran tetap
- Setiap paket berisi 48 blok output PDM 224-bit
- Satu blok terdiri dari data 192-bit dan header 32-bit
- Data per paket adalah 1344 byte
- Header IPv4 20 byte dan header UDP 8 byte ditambahkan
- Laju paket sekitar 65 kpps, menghasilkan line rate 715 Mbps, dengan utilisasi Gigabit Ethernet sekitar 70%
- LiteEth digunakan untuk streaming UDP
- Mengabstraksikan kompleksitas tingkat bawah seperti enkapsulasi UDP/IP dan tabel ARP
- Menyediakan antarmuka yang memudahkan koneksi FIFO ke stream UDP
- Latensi sesekali diserap oleh ruang buffer pada FIFO paketisasi
-
Penggunaan resource FPGA
- FPGA pada Colorlight i5 adalah
LFE5U-25F-6BG381Cdan memiliki 25k LUT - Desain ini di-place-and-route dengan toolchain open source Project Trellis
- Karena gateware dijaga tetap sederhana, penggunaan resource rendah dan masih banyak ruang untuk fitur tambahan
- DP16KD: 16/56, 28%
- TRELLIS_FF: 1950/24288, 8%
- TRELLIS_COMB: 3701/24288, 15%
- Clock maksimum lolos pada 73,17 MHz dari target 50 MHz
- Peringatan timing pada clock Ethernet RX adalah false positive yang terkait dengan gray counter LiteEth
- FPGA pada Colorlight i5 adalah
Pipeline pemrosesan perangkat lunak
-
Filter CIC
- Setiap mikrofon mengeluarkan sinyal 1-bit 3,125 MHz, yang perlu diturunkan ke laju sampling dan bit depth lebih rendah untuk pemrosesan lanjutan
- Untuk tugas ini digunakan filter CIC yang membutuhkan sedikit operasi aritmetika
- Seri Moving Average and CIC Filters dari Tom Verbeure dijadikan referensi
- Pilihan akhir adalah filter CIC 4 tahap dengan decimation 16×
- Menurunkan laju sampling menjadi 195 kHz
- Outputnya 32-bit
- Untuk menerima data 3,125 MHz, satu bundel sampel harus diproses dalam 320 ns
- Implementasi Rust sederhana tidak cukup cepat pada satu core, sehingga implementasi akhir mengurangi abstraksi agar auto-vectorization lebih efektif
- Implementasi SIMD intrinsic jauh lebih cepat, tetapi menemui masalah alignment ketika digunakan bersama kode lain
- Hasil benchmark:
bench_cic: 574 ns/iter, 41 MB/dtkbench_fast_cic: 181 ns/iter, 132 MB/dtkbench_simd_cic: 36 ns/iter, 666 MB/dtk
-
Kalibrasi
- Kalibrasi array dilakukan dengan memutar white noise dari speaker sambil menggerakkannya di ruangan di depan array
- Cross-correlation berbasis FFT dihitung di antara semua pasangan mikrofon untuk mendapatkan delay relatif
- Karena ada lebih dari 18.000 pasangan mikrofon, beban komputasinya besar
- Pada ukuran window 16k–64k, FFT menjadi bottleneck memori, sehingga IFFT dan pencarian puncak digabung agar hasil tidak ditulis ke memori, menghasilkan percepatan 15×
- Pada Ryzen 7950X, proses ini berjalan secara real time
- Setelah itu, posisi sumber suara pada tiap waktu dan posisi setiap mikrofon dioptimalkan dengan gradient descent
- Fungsi loss mengurangi selisih antara korelasi terukur dan korelasi ideal
- Menjaga agar posisi mikrofon tidak menyimpang terlalu jauh dari posisi awal
- Mengurangi jerk pada lintasan sumber suara juga
- Dalam proses kalibrasi, kecepatan suara juga dimasukkan sebagai parameter optimisasi, sehingga seluruh prosedur bertindak seperti termometer yang terlalu rumit
- Setelah ratusan iterasi, konstanta seperti posisi sumber suara, posisi mikrofon, dan kecepatan suara konvergen ke solusi yang wajar
- Masalah ini mudah divektorisasi di GPU dan konvergen dalam beberapa detik
- Galat posisi rata-rata akhir sekitar 1 mm
- Distorsi sistematis skala besar seperti cekungan akibat kurangnya kekakuan struktur juga dikalibrasi
- Galat maksimum antara posisi desain dan posisi terkalibrasi sekitar 5 mm
- Panjang gelombang suara 10 kHz sekitar 3,4 cm, sehingga tanpa kalibrasi dapat muncul galat fase yang signifikan pada frekuensi tinggi
Beamforming dan visualisasi
-
Metode beamforming
- Beamforming adalah proses mengolah input mikrofon mentah untuk membuat respons directional
- Metode yang diimplementasikan adalah yang paling sederhana: delay-and-sum, atau DAS
- Setiap sinyal ditunda sesuai perbedaan jarak ke sumber suara lalu dijumlahkan
- Dalam proyek ini, beamforming dilakukan di domain frekuensi
- Di domain frekuensi, delay diimplementasikan sebagai perkalian kompleks sinyal dengan komponen fase linear yang sebanding dengan delay yang dibutuhkan
- Delay yang bukan kelipatan bilangan bulat dari periode sampling juga ditangani secara alami
- Beberapa sub-array bertumpuk dari array asli digunakan untuk tiap rentang frekuensi
- Tidak perlu melakukan beamforming dengan semua mikrofon pada semua frekuensi, sehingga throughput berkurang dan ini juga membantu menyamakan gain beamforming di semua frekuensi
-
Implementasi GPU berbasis Triton
- Beamformer diimplementasikan sebagai kernel Triton
- Triton adalah Python DSL yang dikompilasi untuk berjalan di GPU Nvidia
- Saat melakukan beamforming pada ratusan ribu titik, paralelisme masif GPU memungkinkan hasil real time
- Karena batasan saat ini terkait dukungan indexing array shared memory dalam bahasa Triton, performanya sedikit kurang optimal, tetapi CUDA C++ tidak dipilih
-
Beamforming 3D jarak dekat
- Beamforming 3D jarak dekat dilakukan pada grid voxel 5 cm
- Ukuran grid adalah 64×64×64
- Pada RTX 4090, kecepatan pembaruan 12 Hz tercapai
- Kecepatan yang lebih tinggi dibatasi overhead sinkronisasi CPU-GPU yang belum optimal pada unit kerja kecil
- Grid voxel divisualisasikan dengan library visualisasi berkinerja tinggi berbasis OpenGL, VisPy
- Rendering 250 ribu voxel semitransparan bukan masalah pada frame rate interaktif jika dibandingkan dengan jumlah poligon pada game modern
-
Beamforming 2D jarak jauh
- Untuk sumber suara jarak jauh, wavefront hampir planar, sehingga seberapa jauh sumber suara berada tidak mengubah sinyal array secara bermakna
- Sumber suara dekat memiliki kelengkungan wavefront yang besar, sehingga posisi 3D dapat ditentukan
- Beamforming jarak jauh tidak memiliki dimensi kedalaman, sehingga dapat dilakukan dengan resolusi lebih tinggi
- Grid 512×512 piksel digunakan, dan kecepatan pembaruan yang sama, 12 Hz, tercapai
- Beamforming jarak jauh menggunakan pendekatan dengan menempatkan titik jauh, bukan asumsi gelombang planar sebenarnya
- Karena banyak pantulan dan multipath di dalam ruangan, demo visualisasi 2D dipengaruhi oleh lingkungan akustik
-
Audio directional
- Dua implementasi beamforming sebelumnya menghitung energi suara di tiap lokasi, tetapi tidak membuat audio hasil beamforming di memori
- Untuk perekaman audio directional, beamformer delay-and-sum di domain waktu diimplementasikan
- Menerima koordinat 3D relatif terhadap pusat array sebagai input
- Menghasilkan sampel audio
- Beamformer ini dapat didiferensiasikan terhadap posisi pada outputnya
- Posisi sumber audio dapat dioptimalkan dengan fungsi loss yang dapat didiferensiasikan
- Aplikasi yang mungkin adalah menggunakan model forced alignment pada transkripsi multipihak untuk menemukan posisi fisik tiap pembicara
- Efeknya dibandingkan dengan cara satu speaker memutar audio di depan array, sementara speaker lain memutar white noise pada jarak yang sama, sekitar 45 derajat dari pusat array
- Efek beamforming ditunjukkan dengan membandingkan audio mentah dari satu mikrofon dan audio hasil beamforming
Metode perekaman dan keterbatasan
- Data array mikrofon berupa paket UDP, sehingga dapat direkam dengan alat seperti
tcpdump - File packet capture dapat dibaca untuk menyuntikkan kembali paket ke listener
- Program-program sebelumnya dirancang untuk operasi real time, tetapi dengan metode ini juga dapat bekerja pada data rekaman
- Kekurangannya adalah data mentah disimpan apa adanya, sehingga data rate output sangat tinggi
- Bahkan derau kuantisasi pun disimpan secara utuh
- Data rate adalah 87,5 MB/dtk
- Perekaman 1 jam membutuhkan 315 GB
- Implementasi yang lebih optimal dapat menerapkan kompresi, atau merekam pada laju sampling lebih rendah setelah filter CIC
Kemungkinan pengembangan
- Proyek ini pada dasarnya sudah selesai, dan tidak ada rencana untuk mengerjakannya lebih lanjut dalam waktu dekat
- Meski begitu, masih ada ruang pengembangan bagi orang yang ingin membuatnya sendiri
- Menggunakan algoritme beamforming yang lebih canggih seperti DAMAS
- GUI yang lebih baik yang menggabungkan fitur-fitur yang ada, misalnya melihat dari mana suara berasal lalu merekam audio dari posisi tersebut
- Menggabungkan beamforming yang dapat didiferensiasikan dengan model neural network; aplikasi seperti contoh forced alignment juga dimungkinkan
1 komentar
Komentar Hacker News
Menarik bahwa dalam proses kalibrasi, kecepatan suara juga menjadi parameter yang dioptimalkan untuk mendapatkan model sistem yang optimal, sehingga seluruh prosedurnya bertindak seperti termometer yang dirancang secara konyol berlebihan
Ini mengingatkan pada pepatah elektronika, “semua sensor adalah sensor suhu, dan sebagian juga mengukur hal lain”
Ternyata dengan cara itu suhu juga bisa diukur, dan dengan mengekstrapolasi grafiknya kita juga bisa menemukan nol mutlak
Seingat saya hasilnya meleset sekitar 20K, tapi untuk proyek garasi anak SMA, menurut saya itu cukup hebat
Contoh yang terutama saya sukai adalah bahwa inertial measurement unit (IMU) yang cukup akurat bahkan bisa mengukur bujur dengan cukup presisi menggunakan efek Coriolis
https://youtu.be/zsA3X40nz9w?si=oGg2wdUlLXSDxpsN
Dulu saya mengerjakan proyek multilaterasi kelelawar dengan array 4 mikrofon yang diletakkan di lantai dalam bentuk Y besar
Dengan menggunakan perbedaan waktu kedatangan pada keempat mikrofon, kami bisa menemukan posisi tiap kelelawar yang terbang di atas array dan juga mengidentifikasi spesiesnya
Ini dipakai dalam penelitian untuk menilai dampak lingkungan dari pemasangan turbin angin, dan cukup menyenangkan
Perangkat itu dikembangkan untuk melacak dan membunuh nyamuk dengan pulsa laser pendek
Karena harus menangkap posisi spasial nyamuk secara presisi, sebagai efek samping ia bisa membedakan target berdasarkan jenis kelamin dan spesies dengan mendeteksi perbedaan frekuensi kepakan sayap
Tentu saja kemampuan hardware dan software saya kurang, jadi algoritma TDOA saya implementasikan dalam bentuk paling naif, dan cara memperkirakan selisih waktu dengan korelasi silang juga sangat tidak efisien
Tapi saya belajar banyak, dan akhirnya itu berujung pada program doktoral di bidang sistem SAR
Menurut saya SAR pada dasarnya lebih mirip beamformer yang menggunakan gerakan platform alih-alih array sungguhan
Saya pernah dengar bahwa paru-paru kelelawar sangat sensitif, sehingga jika mereka terbang melintasi perbedaan tekanan dari turbin besar, kapilernya pada dasarnya pecah
Akan bagus kalau ada referensi tentang dari mana sebaiknya mulai
Mereka menaruh array mikrofon di bawah kalajengking dan menunjukkan bagaimana kelelawar menggerakkan berkas ultrasoniknya untuk memindai kalajengking
Hasilnya benar-benar menakjubkan [0]
[0]: https://www.youtube.com/watch?v=57ScSPWhGqU
Saya penasaran kenapa array itu memakai PDM, bukan mikrofon I2S TDM
ICS-52000 relatif murah, sekitar 2 dolar untuk pembelian 100 unit, ada juga breakout board dengan 4 mikrofon, dan setahu saya bisa dirangkai berantai hingga 8 atau 16 unit
https://www.cdiweb.com/datasheets/notwired/ds-nw-aud-ics5200...
Dengan Jetson atau hardware ber-DSP/GPU yang mendukung I2S, 16 mikrofon bisa dirangkai berantai per port I2S, sehingga perakitan dan pemrogramannya terlihat jauh lebih mudah daripada konfigurasi FPGA
Kalau mikrofonnya 192 unit, perbedaan antara 2 dolar/unit dan 0,5 dolar/unit menjadi cukup besar
Bahkan dengan daisy chain 16 unit, sulit menemukan perangkat dengan cukup banyak antarmuka I2S, dan kebanyakan perangkat tidak memilikinya sebanyak yang dibutuhkan
FPGA dan hardware kustom itu sendiri juga bagian dari keseruannya
Untuk mendengar suara desisan gas bocor atau pelepasan korona dari busur listrik, frekuensi yang lebih tinggi berguna
Orin secara internal punya 6 port I2S, jadi 16*6 = 96 mikrofon tampaknya memungkinkan, dan itu angka yang cukup bagus
Namun dalam praktiknya sepertinya hanya 3 yang dibawa keluar dari board, dan berada di konektor development board yang berbeda-beda [1]
Dalam desain, detail selalu menjadi masalah, jadi kalau membutuhkan lebih dari 96 unit, FPGA mungkin lebih mudah dikonfigurasi
Komponen yang saya catat adalah ICS-52000 $3.50 20kHz, ICS-41350 $1.05 40kHz, SPH0641LU4H-1 $1.45 80kHz+
[1] https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide...
Ada kira-kira dua alasan mengapa I2S bukan pilihan terbaik
I2S membutuhkan 3 pin, bukan 2 pin seperti PDM
Namun jika mikrofonnya bisa di-daisy-chain seperti pada datasheet yang Anda berikan, itu cukup keren, dan meski bukan I2S standar, poin ini jadi hilang
PDM bisa mencapai laju sampling yang jauh lebih tinggi, sehingga memberi fleksibilitas lebih besar dalam memilih delay pada operasi delay-and-sum
Misalnya, jika clock PDM 2MHz, secara teori delay bisa dibuat dengan presisi 0,5µs
Dalam praktiknya tentu presisinya akan lebih rendah, tetapi clock I2S biasanya maksimum sekitar 192kHz
Mikrofon PDM juga lebih murah
Jika mencari kamera akustik di YouTube, ada cukup banyak demo yang mengesankan yang menunjukkan performanya
Salah satu perusahaan yang sudah cukup lama saya pantau ada di sini, dan tampaknya pemain besar seperti FLIR juga mulai masuk: https://www.youtube.com/@gfaitechgmbh
Contoh penggunaan yang menarik tetapi menyeramkan adalah merekam tempat umum, lalu belakangan “memperbesar” ke percakapan antara orang-orang tertentu
Setelah berbicara dengan teman yang memakai implan koklea, sepertinya dengan pemrosesan sinyal yang tepat, ini bisa sangat membantu pendengaran
Saya ingin kembali menjadi mahasiswa pascasarjana dan mencoba aplikasi medis dengan menggabungkannya dengan array speaker ultrasonik
Pada dasarnya ini seperti HIFU (ultrasonografi terfokus intensitas tinggi) yang sangat kuat dengan umpan balik waktu nyata
https://en.wikipedia.org/wiki/Focused_ultrasound
Frekuensinya jauh lebih tinggi, jadi bukan 40kHz melainkan sekitar 1–10MHz yang harus dipikirkan, dan rangkaian elektronik umum pada dasarnya tidak bisa dipakai
Kalau ingin berdiskusi, hubungi saya lewat email di profil
Saya berharap teknologi seperti ini hadir dalam bentuk yang dikemas rapi di berbagai perangkat mobile
Menurut saya salah satu alasan asisten, penerjemah universal, dan sejenisnya tersendat adalah kualitas audio yang buruk
Jika bisa mengurangi noise dan mendeteksi arah, potensinya sangat besar untuk membantu
Misalnya, saya ingin menerjemahkan percakapan kelompok di meja makan secara waktu nyata
Pertama-tama, akan bagus jika ponsel dan headphone bisa menggabungkan mikrofon masing-masing untuk keperluan seperti ini
Lebih jauh lagi, bagaimana jika semua ponsel di sekitar dapat bekerja sama untuk menyediakan audio terarah berkualitas tinggi
Tentu saja dengan asumsi masalah privasi bisa diselesaikan
Itu bisa mengubah hidup
Live Transcribe di Android saat ini sudah sangat bagus, tetapi bahkan tidak mencoba memisahkan kata mana berasal dari pembicara yang mana
Ternyata otak melakukan pemrosesan luar biasa agar kita dapat memahami apa yang dikatakan seseorang kepada kita di ruangan yang bising
https://en.wikipedia.org/wiki/Cocktail_party_effect?wprov=sf...
Kira-kira di level 10 kali frekuensi akustik tertinggi yang ingin dikumpulkan, yaitu dalam sepersepuluh ribu detik
Selain itu, jika posisi mikrofon array bukan berupa garis lurus, lingkaran, atau geometri sederhana lainnya, kode—alias matematikanya—untuk mengekstrak sinyal yang lebih baik menjadi sangat sulit
Boeing membuat versi berbentuk bola dari perangkat seperti ini dan menggunakannya pada prototipe 787 untuk mencari kandidat material peredam suara
Katanya, di lingkungan bising seperti pesawat, ilusi pendengaran bisa membuat suara terasa berasal dari tempat yang berbeda dari lokasi sebenarnya
Jika bobot untuk material peredam suara sudah dibatasi, penting untuk menempatkannya tepat pada titik 80/20
Jika ingin bermain-main dengan Zynq 7010, board EBAZ4205 layak dilihat
Bisa dibeli di AliExpress seharga 20–30 euro, dan dulunya merupakan controller penambangan Bitcoin
Beberapa orang telah merekayasa balik seluruhnya dan mengunggahnya ke GitHub, dan ada juga papan adaptor untuk mengakses GPIO
Jika ingin memulai dengan sesuatu yang tidak terlalu rumit, ada juga FPGA buatan China seperti board “Sipeed” yang memakai GoWin FPGA
Cukup layak dipakai dan IDE-nya juga gratis
Tadi malam saat melakukan riset, saya sampai persis di halaman ini
Saya penasaran apakah ada yang tahu cara memasang mikrofon di ruangan untuk merekam hanya audio dari area tertentu
Kebutuhan saya adalah merekam area sofa saat menonton TV dengan teman online, sambil menghapus suara teman dan noise siaran dari audio
Sepertinya ini mungkin jika membuat array mikrofon dan memakai beam steering, tetapi saya tidak menemukan banyak contoh kode di GitHub yang berjalan secara waktu nyata
https://obsproject.com/
https://voicemeeter.com/
Yang dibutuhkan bukan mikrofon atau teknologi beamforming, melainkan echo cancellation seperti yang dipakai semua perangkat lunak konferensi video
Masukkan audio siaran dan audio teman sebagai input, lalu terapkan echo cancellation pada masing-masing
Ukur jarak dari satu titik, yaitu sofa, ke setiap mikrofon, lalu tunda sinyal di domain waktu sebesar waktu yang dibutuhkan suara untuk bergerak dari sofa ke mikrofon, kemudian jumlahkan
Pada dasarnya, tujuannya adalah menyelaraskan mikrofon agar seolah-olah menerima sinyal dari sofa pada waktu yang sama meskipun jaraknya berbeda
Agar metode ini efektif, perbedaan jarak mikrofon harus cukup besar