Ingin array mikrofon mini USB. Apa itu mungkin?

13

Saya telah belajar banyak tentang pembentukan berkas adaptif, dan telah bermain-main dengan berbagai sim di MATLAB, dll.

Tapi apa cara yang lebih baik untuk memahami sesuatu - benar-benar memahaminya - selain bermain dengan seluruh sistem?

Untuk tujuan ini, saya ingin menemukan (membangun?) Array mikrofon yang terhubung USB, dengan katakanlah, 5 mics atau lebih. Mereka akan dapat memperoleh sinyal dari lingkungan, (alias, di mana pun laptop saya berada), dan saya kemudian dapat mengambil sinyal-sinyal itu dan memprosesnya dalam MATLAB atau apa pun.

Saya benar-benar lebih suka tidak membangun semuanya, jadi saya berharap seseorang telah menggunakan array mikrofon USB yang terhubung di masa lalu, dan dapat menunjuk ke arah yang benar?

Mikrofon tidak perlu sesuatu yang mewah ketika datang untuk menggigit resolusi A / D mereka, dll. KISS mikrofon dengan kualitas yang terhormat akan baik-baik saja.

Spacey
sumber

Jawaban:

8

The Playstation Eye kamera video memiliki 4-elemen linear Rangkaian mikrofon. Ini memberikan sampel 16-bit pada 48 KHz dengan SNR 90 dB. Sangat mudah digunakan: ini disebut sebagai perangkat audio USB standar dengan empat saluran terpisah.

Untuk contoh menggunakannya dengan cara ini, lihat: Tes Audio 4-channel PS3 Eye di Ubuntu Karmic

Jim Paris
sumber
1
@Mohammad Ini mungkin akan menjadi solusi yang baik jika Anda dengan senang hati membatasi diri hingga empat saluran. Empat saluran akan memberi Anda keuntungan beamforming sekitar 12dB. Kelemahannya adalah karena fakta bahwa jumlah total array cukup kecil, Anda akan memiliki titik fokus beamforming yang cukup besar: Anda tidak dapat memisahkan sumber suara yang terlalu berdekatan. Oleh karena itu aplikasi utama Anda untuk array ini mungkin bukan mengisolasi sumber suara melainkan melacak satu sumber suara melalui ruang. Yaitu tahu di mana seseorang berdiri dari suara mereka ...
ARF
1
@ArikRaffaelFunke Hmm, saya tidak cukup tahu tentang pembentukan balok adaptif untuk mengetahui apa itu focal spot. :-) Namun saya pikir saya masih bisa memisahkan sumber menggunakan ICA non-instan. (sebenarnya saya fokus pada ICA saat ini). Juga, ya 4 tidak sebanyak yang saya harapkan ... Tapi mungkin ini bisa menjadi permulaan..c
Spacey
3

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.

ARF
sumber
Terima kasih, Arik. Namun, saya tidak yakin mengapa Anda ingin mengkompensasi keterlambatan waktu di sini. Misalnya, beberapa bentuk berkas adaptif seperti yang Anda ketahui adalah penundaan-dan-jumlah, sehingga dibutuhkan masalah waktu-keterlambatan secara otomatis. Hal kedua (saya pikir ini adalah apa yang Anda katakan), adalah bahwa saya tidak ingin umum waktu-sync. (Yaitu, tekan tombol, semua mikrofon mulai merekam pada saat yang sama), tapi saya tidak ingin mereka memiliki penundaan waktu yang umum.
Spacey
Saya sebenarnya telah membangun laptop saya, sebuah array mikrofon, saya pikir ini hanya dua mic, tetapi ini mungkin merupakan titik awal, namun saya tidak tahu bagaimana cara mengakses data mereka dengan kerepotan minimal secara terpisah ...
Spacey
@Mohammad - masalah ini tidak mengkompensasi keterlambatan waktu yang diketahui , itu kompensasi untuk keterlambatan waktu yang tidak diketahui . Pada dasarnya, akan ada beberapa waktu pemrosesan untuk setiap kartu suara USB yang terpisah, dan mungkin berbeda dari perangkat ke perangkat (dalam hal ini dapat dikompensasi), atau bahkan tidak konstan / berubah tergantung pada pemuatan bus USB.
Connor Wolf
@Mohammad Apa yang FakeName katakan ... Untuk membuat segalanya lebih jelas: Basis waktu untuk bentuk berkas apa pun harus lebih baik daripada setengah periode komponen frekuensi tertinggi yang ingin Anda perhitungkan. Saya percaya ini tidak mungkin untuk mencapai ini dengan kartu suara independen dengan hanya memulai merekam pada saat yang sama. Masalahnya berbeda jika Anda memiliki kartu suara tunggal dengan beberapa saluran.
ARF
@ArikRaffaelFunke Saya mengerti maksud Anda tentang kalibrasi, saya salah mengerti pernyataan Anda. Namun, saya tidak melihat bagaimana seseorang dapat menghapus waktu tunda dari basis waktu yang tidak biasa, tanpa juga secara tidak sengaja menghapus waktu tunda dari saluran, (yang ingin Anda pertahankan). Satu-satunya cara adalah memastikan bahwa jarak ke masing-masing mik dari clap adalah sama, tetapi itu tidak mungkin untuk linear array> 2. Mungkin jika cukup jauh (dengan demikian gelombang depan planar) tidak masalah terlalu banyak?
Spacey