İçindekiler:

Konuşmacı Duyarlı Camara Sistemi (SPACS): 8 Adım
Konuşmacı Duyarlı Camara Sistemi (SPACS): 8 Adım

Video: Konuşmacı Duyarlı Camara Sistemi (SPACS): 8 Adım

Video: Konuşmacı Duyarlı Camara Sistemi (SPACS): 8 Adım
Video: Güvenlik Kamerası Sistemini Cep Telefonundan İzleme, Sabit İp Olmadan Güvenlik Kamerası Mobil İzleme 2024, Kasım
Anonim
Image
Image
Donanım - 3D Baskı
Donanım - 3D Baskı

Birden fazla hoparlörün bir kamerayı çevrelediği bir konferans görüşmesi hayal edin. Genellikle bir kameranın sınırlı görüş açısının konuşan kişiye bakmayı başaramadığı durumlarla karşılaşırız. Bu donanım sınırlaması, kullanıcı deneyimini önemli ölçüde düşürür. Kamera aktif konuşmacılara bakabiliyorsa, uzaktaki izleyici görüşme sırasında daha fazla konuşmaya dahil olur. Bu projede, kamerayı konuşmacıya doğru çevirerek aktif konuşmacıyı algılayan ve takip eden bir (prototip) kamera sistemi öneriyoruz. Sistem hem görsel hem de işitsel tabanlı bir yaklaşım kullanır. Kameradan yüzler algılandığında konuşan kişiyi belirler ve dönüş açısını hesaplar. Mevcut açıda yüzler algılanmadığında, sistem, gelen ses sinyallerinin yönüne göre hoparlörü arar.

Adım 1: Malzemeler

Adafruit Tüy nRF52840 Ekspres X 1

www.adafruit.com/product/4062

Elektret Mikrofon Amplifikatörü - MAX4466 X 2

www.adafruit.com/product/1063

Mikro Servo Motor X 1

www.adafruit.com/product/169

Android akıllı telefon X1

2. Adım: Donanım - 3D Baskı

Donanım - 3D Baskı
Donanım - 3D Baskı
Donanım - 3D Baskı
Donanım - 3D Baskı

Hızlı uygulama için, ihtiyacımız olan muhafazaları 3D olarak yazdırmaya karar verdik. Muhafazalar için iki ana bileşen vardır; bir döner tabla ve bir akıllı telefon standı. Bu linkten (https://www.thingiverse.com/thing:141287), alt kısmında Arduino kasası ve servo motor ile bağlanabilen döner tablanın bulunduğu döner tablayı kullandık. Bu bağlantıdan (https://www.thingiverse.com/thing:2673050) bir akıllı telefon standı kullandık, bu da açıyı rahatça kalibre etmemizi sağlayacak şekilde katlanabilir ve açısı ayarlanabilir. Aşağıdaki şekil, bir araya getirilmiş 3D baskılı parçaları göstermektedir.

3. Adım: Donanım - Elektronik Bileşenler

Donanım - Elektronik Bileşenler
Donanım - Elektronik Bileşenler
Donanım - Elektronik Bileşenler
Donanım - Elektronik Bileşenler

Dört kablolu bileşen vardır; Adafruit Feather, iki mikrofon ve bir motor. Kompakt paketleme için telleri breadboard kullanmadan lehimledik (gri daireler). Aşağıda devre şeması ve gerçek eser anlatılmaktadır.

4. Adım: Yazılım

Sistemimiz, daha doğru olduğu için konuşmacıyı takip etmek için öncelikle yüz tanımadan gelen görsel bilgileri kullanır. Feather'ın Android uygulamasından görsel bilgi alabilmesi için ana iletişim yöntemi olarak Bluetooth Low Energy kullanıyoruz.

Herhangi bir yüz algılandığında uygulama, hoparlörü çerçevenin ortasına odaklamak için motorun dönmesi gereken açıyı hesaplar. Olası senaryoları ayrıştırdık ve aşağıdaki gibi ele aldık:

  1. Yüz(ler) algılanır ve konuşursa, hoparlörlerin orta noktasını hesaplar ve göreli açıyı Tüy'e döndürür.
  2. Yüz(ler) algılanır ve hiçbiri konuşmuyorsa, yüzlerin orta noktasını da hesaplar ve buna göre açıyı döndürür.
  3. Herhangi bir yüz algılanmazsa sistem, hoparlör izleme mantığını görselden sese değiştirir.

SPACS yazılımı https://github.com/yhoonkim/cse599h-fp adresinde bulunmaktadır.

Adım 5: Yazılım - Ses

Yazılım - Ses
Yazılım - Ses

Ses (YH)

Gelen sesin kaynağını bulmak için önce iki mikrofon arasındaki zaman farkını kullanmaya çalıştık. Fakat ses sinyallerini test ettiğimiz Arduino Leopard'ın örnekleme hızı (~900Hz) 10cm aralıklı mikrofonlar arasındaki zaman farkını algılayamayacak kadar yavaş olduğu için beklediğimiz kadar doğru çıkmadı.

İki giriş ses sinyali arasındaki yoğunluk farkını kullanmak için planı değiştirdik. Sonuç olarak, tüy iki ses sinyali alır ve sesin nereden geldiğini tespit etmek için bunları işler. İşleme aşağıdaki adımlarla açıklanabilir:

  1. Girişleri iki mikrofondan alın ve sinyallerin genliklerini elde etmek için ofseti çıkarın.
  2. 500 başlatma için MIC başına amplitüdlerin mutlak değerlerini toplayın.
  3. Biriken değerlerin farkını 5 slotlu kuyruğa kaydedin.
  4. Kuyrukların toplamını son fark değeri olarak döndürün.
  5. Sesin nereden geldiğine karar vermek için son değeri eşiklerle karşılaştırın.

Soldan ve sağdan gelen ses de dahil olmak üzere çeşitli durumlarda nihai değeri çizerek eşiği bulduk. Nihai değer için eşiklerin üzerine, gürültüleri filtrelemek için 2. adımda birikmiş genliklerin ortalaması için başka bir eşik de belirledik.

6. Adım: Yazılım - Yüz ve Konuşma Algılama

Yüz tanıma için Google tarafından yayınlanan Firebase için ML Kit'i kullandık (https://firebase.google.com/docs/ml-kit). ML Kit, gözler, burun, kulaklar, yanaklar ve ağızdaki farklı noktalar dahil olmak üzere her yüzün sınırlayıcı kutusunu ve işaretlerini döndüren yüz algılama API'sini sağlar. Yüzler algılandığında, uygulama kişinin konuşup konuşmadığını belirlemek için ağız hareketini takip eder. Güvenilir performans sağlayan basit bir eşik tabanlı yaklaşım kullanıyoruz. Bir kişi konuşurken ağız hareketinin hem yatay hem de dikey olarak büyüdüğü gerçeğinden yararlandık. Ağzın dikey ve yatay mesafesini hesaplıyoruz ve her mesafe için standart sapmayı hesaplıyoruz. Mesafe yüzün boyutuna göre normalleştirilir. Daha büyük standart sapma konuşmayı gösterir. Bu yaklaşım, yeme, içme veya esneme dahil olmak üzere ağız hareketini içeren her aktivitenin konuşma olarak algılanabilmesi gibi bir sınırlamaya sahiptir. Ancak, düşük bir yanlış negatif oranına sahiptir.

Adım 7: Yazılım - Dönen Motor

Yazılım - Döner Motor
Yazılım - Döner Motor

Motor dönüşü, dönüş hızının kontrolü nedeniyle beklediğimiz kadar basit değildi. Hızı kontrol etmek için, motorun yalnızca değişken belirli bir değere ulaştığında dönmesine izin verecek şekilde global bir sayaç değişkeni bildiririz. Ayrıca, motorun dönmesinden gelen sesi önleyebilmesi için mikrofonların bilmesini sağlamak için motorun hareket edip etmediğini gösteren başka bir global değişken tanımladık.

8. Adım: Gelecekteki İyileştirmeler

Sınırlamalardan biri, motorun belirli açılarda yalpalamasıdır. Görünüşe göre motor, akıllı telefonu döndürerek üretilen torku yenecek kadar güçlü değil. Torku azaltmak için daha güçlü bir motor kullanarak veya akıllı telefonun konumunu dönme merkezine doğru ayarlayarak çözülebilir.

Ses tabanlı ses yönü tespiti, daha karmaşık bir yöntemle geliştirilebilir. Gelen sesin yönünü belirlemek için akustik hüzmeleme yaklaşımını denemek istiyoruz. Ses sinyallerinin varış zamanı ile denedik. Ancak, Feather'ın örnekleme hızı, mikrofonlar yalnızca yaklaşık 10 cm uzaktayken zaman farkını algılamak için sınırlıdır.

Bu prototipin son eksik parçası kullanılabilirlik değerlendirmesidir. Değerlendirmenin umut verici bir yolu, sistemi mevcut görüntülü arama platformuyla entegre etmek ve kullanıcıların yanıtlarını gözlemlemektir. Bu yanıtlar, sistemi geliştirmeye ve bu prototipin bir sonraki yinelemesini yapmaya yardımcı olacaktır.

Önerilen: