Setelah bekerja secara ekstensif dalam beamforming adaptif, saya benar-benar akan menghindar dari meretas sesuatu untuk diri saya sendiri sampai saya memiliki pengalaman. (Catatan: Solusi profesional dengan sekitar 60 saluran berharga sekitar 100rb. Dengan banyak saluran, resolusi spasial Anda menjadi jauh lebih baik, tetapi Anda hanya mendapatkan sejumlah informasi terbatas melalui port USB ...)
Untuk beamforming yang andal, penting bahwa semua mikrofon menggunakan basis waktu yang sama. Cara termudah untuk mencapai ini adalah dengan kartu suara USB eksternal dengan beberapa saluran input. Itu tidak benar-benar murah sekalipun. Pernahkah Anda melihat apa yang dapat ditemukan di ebay?
Alternatifnya adalah mengorbankan basis waktu yang umum dengan menggunakan sejumlah kartu suara USB dengan misalnya masing-masing dua saluran. Namun Anda harus mengkalibrasi sistem akuisisi Anda. Ini sebenarnya tidak sesulit kedengarannya:
Untuk mengkalibrasi, Anda mengatur array Anda dan menghasilkan suara pendek (misalnya crack / clap / etc.) Pada jarak dari array Anda yang berada di urutan sejauh mana array Anda. Anda kemudian merekam suara ini dan menggunakan Matlab atau sejenisnya untuk menghitung korelasi silang antara tepukan / celah / dll. di berbagai saluran. Ini akan memberi Anda daftar offset waktu yang perlu Anda terapkan ke saluran Anda untuk menyelaraskannya sebelum mengumpankan data ke algoritma beamforming Anda.
Untuk menjelajahi beamforming adaptif, ini mungkin cara yang tepat kecuali Anda dapat melakukan tawar-menawar pada kartu suara multi-channel.
Edit 1
Suntingan ini untuk menjawab pertanyaan yang diajukan dalam komentar.
Ide dasar dari keterlambatan dan penjumlahan balok adalah untuk menerapkan penundaan ke saluran akuisisi yang berbeda sehingga suara yang berasal dari satu titik dalam ruang menyelaraskan dan "memperkuat" ketika sinyal dari saluran yang berbeda ditambahkan. Suara yang menyurati dari wilayah lain ruang tidak sejajar dan karenanya tidak "diperkuat".
Titik di ruang di mana suara menyelaraskan menggunakan serangkaian penundaan tertentu disebut fokus array mikrofon (atau titik fokus). Namun dalam kenyataannya, fokusnya bukanlah titik ideal melainkan wilayah kecil (ish) (tergantung pada larik) ruang tempat suara-suara tersebut bersesuaian dengan baik. Ukuran wilayah ini disebut ukuran titik fokus.
Geometri (ukuran, bentuk, dll) bergantung pada detail array yang tepat: jumlah mikrofon, jarak mikrofon, konten frekuensi dari sinyal yang menarik. Lihat misalnya artikel ini .
Untuk informasi lebih lanjut, cari teks tentang pemfokusan "array bertahap" atau "array linier" dalam ultrasonik. Beamforming dapat digunakan pada penerimaan (untuk memperkuat sinyal dari titik tertentu dalam ruang) atau pada emisi (untuk membuat tempat "keras" di sebuah ruangan). Prinsipnya identik: ganti saja "mikrofon" dengan "pengeras suara" dalam pemikiran Anda.
Mengenai prosedur kalibrasi: Anda benar. Prosedur yang saya uraikan terlalu sederhana. Ini hanya berfungsi dengan baik jika Anda dapat membuat tepukan kalibrasi dari jarak yang jauh lebih panjang daripada wilayah ruang yang Anda minati. (Yaitu untuk memastikan gelombang polos.)
Jika ini tidak memungkinkan, Anda harus mempertimbangkan posisi tepuk tangan. Dalam kasus ini, prosedur paling sederhana adalah untuk memperbaiki penundaan dengan korelasi silang seperti yang dijelaskan tetapi kemudian menambahkan kelengkungan muka gelombang kembali ke sinyal dengan menerapkan seperangkat penundaan "inverse beamforming" yang dihitung dengan posisi asal dari tepuk. (Yaitu jika Anda menggunakan variabel kedalaman + t0 (atau + z0) dalam algoritme beamforming "normal" Anda, Anda perlu menggunakan -t0 (atau -z0) untuk algoritme beamforming terbalik.)
Apa gunanya kalibrasi ini: menghilangkan kesalahan apa pun karena kartu suara yang berbeda memulai perekaman mereka pada waktu yang sedikit berbeda. Ini biasanya akan mencegah sinyal menyelaraskan dengan benar bahkan dengan penundaan yang benar dan karenanya mencegah efek amplifikasi yang Anda cari.