Pertama-tama, saya telah melihat utas yang serupa, namun sedikit berbeda dengan apa yang ingin saya capai. Saya membangun robot yang akan mengikuti orang yang memanggilnya. Ide saya adalah menggunakan 3 atau 4 mikrofon - yaitu dalam pengaturan berikut untuk menentukan dari arah mana robot itu dipanggil:
Di mana S adalah sumber, A, B dan C adalah mikrofon. Idenya adalah untuk menghitung fase korelasi sinyal yang direkam dari pasangan AB, AC, BC dan berdasarkan itu membangun vektor yang akan menunjuk pada sumber menggunakan semacam triangulasi. Sistem bahkan tidak harus bekerja secara real time karena akan diaktifkan suara - sinyal dari semua mikrofon akan direkam secara bersamaan, suara akan diambil sampelnya hanya dari satu mikrofon dan jika sesuai dengan tanda tangan suara, korelasi fase akan dihitung dari fraksi terakhir dari detik untuk menghitung arah. Saya sadar bahwa ini mungkin tidak berfungsi dengan baik yaitu ketika robot dipanggil dari ruangan lain atau ketika ada beberapa refleksi.
Ini hanya ide yang saya miliki, tetapi saya belum pernah mencoba hal seperti ini dan saya punya beberapa pertanyaan sebelum saya membangun perangkat keras yang sebenarnya yang akan melakukan pekerjaan:
- Apakah ini cara khas untuk melakukan ini? (Yaitu digunakan di telepon untuk pembatalan kebisingan?) Apa pendekatan lain yang mungkin?
- Bisakah korelasi fase dihitung antara 3 sumber sekaligus? (Yaitu untuk mempercepat perhitungan)
- Apakah laju sampel 22khz dan kedalaman 12bit cukup untuk sistem ini? Saya sangat peduli tentang kedalaman bit.
- Haruskah mikrofon ditempatkan di tabung terpisah untuk meningkatkan pemisahan?
sumber
Jawaban:
Untuk memperluas jawaban Muller,
Tindakan terbaik adalah membuat mereka menghadap ke atas, dengan cara ini mereka semua akan menerima suara yang sama dan satu-satunya hal yang unik tentang mereka adalah penempatan fisik mereka yang secara langsung akan mempengaruhi fase. Gelombang sinus 6 kHz memiliki panjang gelombang . Jadi, jika Anda ingin secara unik mengidentifikasi fase-fase gelombang sinus hingga 6 kHz, yang merupakan frekuensi tipikal untuk pembicaraan manusia, maka Anda harus mengatur jarak mikrofon paling banyak 5,71 mm. Ini satu item
Edit
Saya merasa bahwa pertanyaan nomor 2 ini tampak menyenangkan jadi saya memutuskan untuk mencoba menyelesaikannya sendiri.
Jika Anda tahu aljabar linier Anda, maka Anda dapat membayangkan bahwa Anda telah menempatkan mikrofon dalam segitiga di mana masing-masing mikrofon berjarak 4 mm dari satu sama lain membuat setiap sudut interior .60 °
Jadi mari kita asumsikan mereka ada dalam konfigurasi ini:
Aku akan...
Jadi hal-hal berikut ini benar:
Ini memberi kita:
Dan produk silang hanyalahA B¯¯¯¯¯¯¯¯× A C¯¯¯¯¯¯¯¯
Informasi Z, hanyalah sampah, tidak menarik bagi kami. Ketika sinyal input berubah, vektor silang akan berayun maju dan mundur ke arah sumber. Jadi setengah dari waktu itu akan mengarah langsung ke sumbernya (mengabaikan refleksi dan parasit lainnya). Dan separuh waktu lainnya akan menunjuk 180 derajat dari sumber.8 3-√
Yang saya bicarakan adalah yang dapat disederhanakan menjadi , lalu ubah radian menjadi derajat.Arktan( - 2 a - 2 b - 4 c2 3√( b - a )) Arktan( a + b + 2 c3√( a - b ))
Jadi yang Anda dapatkan adalah persamaan berikut:
Tetapi separuh dari waktu informasi tersebut benar-benar 100% salah, jadi bagaimana ... haruskah satu .... membuatnya benar 100% dari waktu?
Jika memimpin , maka sumbernya tidak boleh lebih dekat ke B.Sebuah b
Dengan kata lain, buat sesuatu yang sederhana seperti ini:
Dan mungkin Anda hanya ingin bereaksi jika sumber suara berasal dari sudut vertikal tertentu, jika orang berbicara di atas mikrofon => 0 perubahan fase => tidak melakukan apa-apa. Orang-orang berbicara secara horizontal di sebelahnya => beberapa perubahan fase => bereaksi.
Jadi, Anda mungkin ingin mengatur ambang itu ke sesuatu yang rendah, seperti 0,1 atau 0,01. Saya tidak sepenuhnya yakin, tergantung pada volume dan frekuensi serta parasitics, ujilah sendiri.
Alasan lain kapan menggunakan persamaan nilai absolut adalah untuk penyilangan nol, mungkin ada sedikit momen ketika arah akan menunjuk ke arah yang salah. Meskipun hanya untuk 1% dari waktu, bahkan jika itu. Jadi, Anda mungkin ingin melampirkan filter LP urutan pertama ke arah.
Dan jika Anda ingin bereaksi terhadap volume tertentu, maka jumlahkan ketiga mikrofon bersama-sama dan bandingkan dengan beberapa nilai pemicu. Nilai rata-rata mikrofon akan menjadi jumlah mereka dibagi dengan 3, tetapi Anda tidak perlu membaginya dengan 3 jika Anda meningkatkan nilai pemicu oleh faktor 3.
Saya mengalami masalah dengan menandai kode sebagai C / C # / C ++ atau JS atau yang lainnya, jadi sayangnya kode tersebut akan hitam putih, bertentangan dengan keinginan saya. Oh well, semoga sukses di usaha Anda. Terdengar menyenangkan.
Juga ada kemungkinan 50/50 bahwa arahnya akan jauh dari sumber 99% dari waktu. Saya ahli membuat kesalahan seperti itu. Koreksi untuk ini adalah hanya membalikkan pernyataan if untuk kapan 180 derajat harus ditambahkan.
sumber
sumber