Daftar Isi:

Sistem Camara Speaker-Aware (SPACS): 8 Langkah
Sistem Camara Speaker-Aware (SPACS): 8 Langkah

Video: Sistem Camara Speaker-Aware (SPACS): 8 Langkah

Video: Sistem Camara Speaker-Aware (SPACS): 8 Langkah
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Image
Image
Perangkat Keras - Pencetakan 3D
Perangkat Keras - Pencetakan 3D

Bayangkan sebuah panggilan konferensi di mana beberapa speaker mengelilingi satu kamera. Sering kita jumpai di mana sudut pandang kamera yang terbatas seringkali gagal menatap orang yang berbicara. Keterbatasan perangkat keras ini secara signifikan menurunkan pengalaman pengguna. Jika kamera dapat menatap speaker aktif, audiens jarak jauh akan lebih terlibat dalam percakapan selama panggilan berlangsung. Dalam proyek ini, kami mengusulkan sistem kamera (prototipe) yang mendeteksi dan mengikuti speaker aktif dengan memutar kamera ke arah speaker. Sistem ini menggunakan pendekatan berbasis visual dan audio. Ketika wajah terdeteksi dari kamera, itu menentukan orang yang berbicara dan menghitung sudut untuk memutar. Saat wajah tidak terdeteksi pada sudut saat ini, sistem akan mencari speaker berdasarkan arah sinyal audio kedatangan.

Langkah 1: Bahan

Adafruit Feather nRF52840 Express X 1

www.adafruit.com/product/4062

Amplifier Mikrofon Electret - MAX4466 X 2

www.adafruit.com/product/1063

Motor Servo Mikro X 1

www.adafruit.com/product/169

Ponsel pintar Android X1

Langkah 2: Perangkat Keras - Pencetakan 3D

Perangkat Keras - Pencetakan 3D
Perangkat Keras - Pencetakan 3D
Perangkat Keras - Pencetakan 3D
Perangkat Keras - Pencetakan 3D

Untuk implementasi yang cepat, kami memutuskan untuk mencetak 3D enklosur yang kami butuhkan. Ada dua komponen utama untuk enklosur; meja putar dan dudukan smartphone. Kami menggunakan meja putar dari tautan ini (https://www.thingiverse.com/thing:141287), di mana ia menyediakan kasing Arduino di bagian bawah dan meja putar yang dapat dihubungkan dengan motor servo. Kami menggunakan dudukan smartphone dari tautan ini (https://www.thingiverse.com/thing:2673050), yang dapat dilipat dan disesuaikan sudutnya sehingga memungkinkan kami untuk mengkalibrasi sudut dengan nyaman. Gambar di bawah ini menunjukkan bagian cetakan 3D yang dirakit bersama.

Langkah 3: Perangkat Keras - Komponen Elektronik

Perangkat Keras - Komponen Elektronik
Perangkat Keras - Komponen Elektronik
Perangkat Keras - Komponen Elektronik
Perangkat Keras - Komponen Elektronik

Ada empat komponen kabel; Adafruit Feather, dua microphone, dan sebuah motor. Untuk kemasan kompak, kami menyolder (lingkaran abu-abu) kabel tanpa menggunakan papan tempat memotong roti. Di bawah ini menjelaskan diagram sirkuit dan artefak yang sebenarnya.

Langkah 4: Perangkat Lunak

Sistem kami terutama menggunakan informasi visual dari pengenalan wajah untuk mengikuti pembicara karena lebih akurat. Agar Feather mendapatkan informasi visual dari aplikasi Android, kami menggunakan Bluetooth Low Energy sebagai metode komunikasi utama.

Saat ada wajah yang terdeteksi, aplikasi menghitung sudut yang perlu diputar motor untuk memfokuskan speaker di tengah bingkai. Kami menguraikan skenario yang mungkin dan menangani seperti berikut:

  1. Jika wajah terdeteksi dan berbicara, ia menghitung titik tengah speaker dan mengembalikan sudut relatif ke Bulu.
  2. Jika wajah terdeteksi dan tetapi tidak satu pun dari mereka yang berbicara, itu juga menghitung titik tengah wajah dan mengembalikan sudut yang sesuai.
  3. Jika ada wajah yang tidak terdeteksi, sistem akan mengubah logika pelacakan speaker dari visual ke audio.

Perangkat lunak SPACS terletak di

Langkah 5: Perangkat Lunak - Suara

Perangkat Lunak - Suara
Perangkat Lunak - Suara

Suara (YH)

Untuk menemukan sumber suara yang masuk, pertama-tama kami mencoba menggunakan perbedaan waktu antara kedua mikrofon. Tapi itu tidak seakurat yang kami harapkan karena laju pengambilan sampel (~900Hz) Arduino Leopard, tempat kami menguji sinyal suara, lambat sehingga tidak dapat menangkap perbedaan waktu antara mikrofon yang berjarak 10cm.

Kami mengubah rencana untuk menggunakan perbedaan intensitas antara dua sinyal suara input. Akibatnya, bulu mengambil dua sinyal suara dan memprosesnya untuk mendeteksi dari mana suara itu berasal. Prosesnya dapat dijelaskan dengan langkah-langkah berikut:

  1. Ambil input dari dua mikrofon dan kurangi offset untuk mendapatkan amplitudo sinyal.
  2. Akumulasi nilai absolut dari amplitudo per MIC untuk 500 pickup.
  3. Simpan selisih nilai akumulasi ke antrian yang memiliki 5 slot.
  4. Kembalikan jumlah antrian sebagai nilai selisih akhir.
  5. Bandingkan nilai akhir dengan ambang batas untuk memutuskan dari mana suara itu berasal.

Kami menemukan ambang batas dengan memplot nilai akhir dalam berbagai keadaan termasuk suara yang datang dari kiri dan kanan. Di atas ambang batas untuk nilai akhir, kami juga menetapkan ambang batas lain untuk rata-rata akumulasi amplitudo pada langkah 2 untuk menyaring kebisingan.

Langkah 6: Perangkat Lunak - Deteksi Wajah dan Bicara

Untuk pengenalan wajah, kami menggunakan ML Kit for Firebase yang dirilis oleh Google (https://firebase.google.com/docs/ml-kit). ML Kit menyediakan API deteksi wajah yang mengembalikan kotak pembatas setiap wajah dan tengaranya, termasuk mata, hidung, telinga, pipi, dan titik berbeda pada mulut. Setelah wajah terdeteksi, aplikasi melacak gerakan mulut untuk menentukan apakah orang tersebut berbicara. Kami menggunakan pendekatan berbasis ambang batas sederhana yang menghasilkan kinerja yang andal. Kami memanfaatkan fakta bahwa gerakan mulut menjadi lebih besar baik secara horizontal maupun vertikal ketika seseorang berbicara. Kami menghitung jarak vertikal dan horizontal mulut dan menghitung standar deviasi untuk setiap jarak. Jarak dinormalisasi dengan ukuran wajah. Standar deviasi yang lebih besar menunjukkan berbicara. Pendekatan ini memiliki batasan bahwa setiap aktivitas yang melibatkan gerakan mulut, termasuk makan, minum, atau menguap, dapat dikenali sebagai berbicara. Tapi, ia memiliki tingkat negatif palsu yang rendah.

Langkah 7: Perangkat Lunak - Motor Berputar

Perangkat Lunak - Motor Berputar
Perangkat Lunak - Motor Berputar

Putaran motor tidak semudah yang kami harapkan karena kontrol kecepatan putaran. Untuk mengontrol kecepatan, kami mendeklarasikan variabel penghitung global sedemikian rupa sehingga memungkinkan motor berputar hanya ketika variabel mencapai nilai tertentu. Kami juga mendeklarasikan variabel global lain yang menunjukkan jika motor bergerak untuk memberi tahu mikrofon sehingga dapat menghindari suara yang berasal dari putaran motor.

Langkah 8: Perbaikan di Masa Depan

Salah satu keterbatasannya adalah motor menjadi goyang pada sudut-sudut tertentu. Sepertinya motor tersebut tidak cukup bertenaga untuk mengatasi torsi yang dihasilkan dengan memutar smartphone. Hal ini dapat diatasi dengan menggunakan motor yang lebih bertenaga atau mengatur posisi smartphone ke arah tengah putaran untuk mengurangi torsi.

Deteksi arah suara berbasis audio dapat ditingkatkan dengan metode yang lebih canggih. Kami ingin mencoba pendekatan akustik beamforming untuk menentukan arah suara yang masuk. Kami telah mencoba dengan waktu kedatangan sinyal audio. Namun, sampling rate Feather terbatas untuk mendeteksi perbedaan waktu ketika mikrofon hanya berjarak sekitar 10cm.

Bagian terakhir yang hilang dari prototipe ini adalah evaluasi kegunaan. Salah satu cara yang menjanjikan untuk mengevaluasi adalah mengintegrasikan sistem dengan platform panggilan video yang ada dan mengamati tanggapan pengguna. Tanggapan tersebut akan membantu untuk meningkatkan sistem dan membuat iterasi berikutnya dari prototipe ini.

Direkomendasikan: