Table des matières:

Système de caméra compatible avec les haut-parleurs (SPACS) : 8 étapes
Système de caméra compatible avec les haut-parleurs (SPACS) : 8 étapes

Vidéo: Système de caméra compatible avec les haut-parleurs (SPACS) : 8 étapes

Vidéo: Système de caméra compatible avec les haut-parleurs (SPACS) : 8 étapes
Vidéo: Caméra de surveillance d'extérieur sur batterie - connectée & Full HD IPC-670 VisorTech [PEARLTV.FR] 2024, Novembre
Anonim
Image
Image
Matériel - Impression 3D
Matériel - Impression 3D

Imaginez une conférence téléphonique où plusieurs haut-parleurs entourent une caméra. Nous rencontrons souvent des endroits où l'angle de vue limité d'une caméra ne permet souvent pas de regarder la personne qui parle. Cette limitation matérielle dégrade considérablement l'expérience utilisateur. Si la caméra peut regarder les haut-parleurs actifs, le public distant serait plus engagé dans une conversation pendant l'appel. Dans ce projet, nous proposons un système de caméra (prototype) qui détecte et suit le locuteur actif en tournant la caméra vers le locuteur. Le système utilise à la fois une approche visuelle et audio. Lorsque des visages sont détectés par la caméra, celle-ci détermine la personne qui parle et calcule l'angle de rotation. Lorsque les visages ne sont pas détectés à l'angle actuel, le système recherche le locuteur en fonction de la direction des signaux audio d'arrivée.

Étape 1: Matériaux

Plume Adafruit nRF52840 Express X 1

www.adafruit.com/product/4062

Amplificateur Micro Electret - MAX4466 X 2

www.adafruit.com/product/1063

Micro servomoteur X 1

www.adafruit.com/product/169

Smartphone Android X 1

Étape 2: Matériel - Impression 3D

Matériel - Impression 3D
Matériel - Impression 3D
Matériel - Impression 3D
Matériel - Impression 3D

Pour une mise en œuvre rapide, nous avons décidé d'imprimer en 3D les boîtiers dont nous avons besoin. Il y a deux composants principaux pour les boîtiers; une platine et un support pour smartphone. Nous avons utilisé le plateau tournant de ce lien (https://www.thingverse.com/thing:141287), où il fournit un boîtier Arduino en bas et une table rotative pouvant être connectée à un servomoteur. Nous avons utilisé un support pour smartphone à partir de ce lien (https://www.thingverse.com/thing:2673050), qui est pliable et à angle réglable de manière à nous permettre de calibrer l'angle de manière pratique. La figure ci-dessous montre les pièces imprimées en 3D assemblées ensemble.

Étape 3: Matériel - Composants électroniques

Matériel - Composants électroniques
Matériel - Composants électroniques
Matériel - Composants électroniques
Matériel - Composants électroniques

Il y a quatre composants câblés; Adafruit Feather, deux microphones et un moteur. Pour le packaging compact, nous avons soudé (cercles gris) les fils sans utiliser de maquette. Ci-dessous décrit le schéma de circuit et l'artefact réel.

Étape 4: Logiciel

Notre système utilise principalement les informations visuelles de la reconnaissance faciale pour suivre le locuteur car elles sont plus précises. Pour que Feather obtienne des informations visuelles de l'application Android, nous utilisons Bluetooth Low Energy comme principale méthode de communication.

Lorsqu'un visage est détecté, l'application calcule l'angle dont le moteur a besoin pour tourner pour focaliser le haut-parleur au centre du cadre. Nous avons décomposé les scénarios possibles et traité comme suit:

  1. Si un ou plusieurs visages sont détectés et parlant, il calcule le point médian des haut-parleurs et renvoie l'angle relatif par rapport à la plume.
  2. Si des visages sont détectés et qu'aucun d'entre eux ne parle, il calcule également le milieu des visages et renvoie l'angle en conséquence.
  3. Si aucun visage n'est détecté, le système modifie la logique de suivi du locuteur du visuel à l'audio.

Le logiciel SPACS se trouve à l'adresse

Étape 5: Logiciel - Son

Logiciel - Son
Logiciel - Son

Son (YH)

Pour localiser la source du son entrant, nous avons d'abord essayé d'utiliser la différence de temps entre les deux microphones. Mais ce n'était pas aussi précis que prévu car le taux d'échantillonnage (~ 900 Hz) d'Arduino Leopard, où nous avons testé les signaux sonores, était lent, de sorte qu'il ne peut pas détecter la différence de temps entre des microphones distants de 10 cm.

Nous avons modifié le plan pour utiliser la différence d'intensité entre les deux signaux sonores d'entrée. En conséquence, la plume prend deux signaux sonores et les traite pour détecter d'où venait le son. Le traitement peut être décrit par les étapes suivantes:

  1. Prenez les entrées de deux microphones et soustrayez le décalage pour obtenir les amplitudes des signaux.
  2. Accumulez les valeurs absolues des amplitudes par MIC pour 500 micros.
  3. Enregistrez la différence des valeurs accumulées dans la file d'attente comportant 5 emplacements.
  4. Renvoie la somme des files d'attente comme valeur de différence finale.
  5. Comparez la valeur finale avec des seuils pour décider d'où vient le son.

Nous avons trouvé le seuil en traçant la valeur finale dans diverses circonstances, y compris le son provenant de la gauche et de la droite. En plus des seuils pour la valeur finale, nous avons également défini un autre seuil pour la moyenne des amplitudes accumulées à l'étape 2 pour filtrer les bruits.

Étape 6: Logiciel - Détection de visage et de parole

Pour la reconnaissance faciale, nous avons utilisé le ML Kit for Firebase publié par Google (https://firebase.google.com/docs/ml-kit). ML Kit fournit l'API de détection de visage qui renvoie la boîte englobante de chaque visage et ses points de repère, y compris les yeux, le nez, les oreilles, les joues et différents points sur une bouche. Une fois les visages détectés, l'application suit le mouvement de la bouche pour déterminer si la personne parle. Nous utilisons une approche simple basée sur des seuils qui donne des performances fiables. Nous avons tiré parti du fait que le mouvement de la bouche s'agrandit à la fois horizontalement et verticalement lorsqu'une personne parle. Nous calculons la distance verticale et horizontale de la bouche et calculons l'écart type pour chaque distance. La distance est normalisée à la taille du visage. Un écart type plus grand indique qu'il parle. Cette approche a la limitation que chaque activité implique le mouvement de la bouche, y compris manger, boire ou bâiller, peut être reconnue comme parler. Mais, il a un faible taux de faux négatifs.

Étape 7: Logiciel - Moteur rotatif

Logiciel - Moteur rot-t.webp
Logiciel - Moteur rot-t.webp

La rotation du moteur n'était pas aussi simple que prévu en raison du contrôle de la vitesse de rotation. Pour contrôler la vitesse, nous déclarons une variable de compteur globale telle qu'elle permet au moteur de ne tourner que lorsque la variable atteint une certaine valeur. Nous avons également déclaré une autre variable globale indiquant si le moteur est en mouvement pour informer les microphones afin qu'il puisse éviter le son provenant de la rotation du moteur.

Étape 8: Améliorations futures

L'une des limitations est que le moteur vacille à certains angles. Il semble que le moteur ne soit pas assez puissant pour vaincre le couple généré par la rotation du smartphone. Il peut être résolu en utilisant un moteur plus puissant ou en ajustant la position du smartphone vers le centre de la rotation pour réduire le couple.

La détection de la direction du son basée sur l'audio pourrait être améliorée avec une méthode plus sophistiquée. Nous aimerions essayer une approche de formation de faisceau acoustique pour déterminer la direction du son entrant. Nous avons essayé avec l'heure d'arrivée des signaux audio. Mais, le taux d'échantillonnage du Feather est limité pour détecter la différence de temps lorsque les microphones ne sont qu'à environ 10 cm.

La dernière pièce manquante de ce prototype est l'évaluation de l'utilisabilité. Une façon prometteuse d'évaluer consiste à intégrer le système à la plate-forme d'appel vidéo existante et à observer les réponses des utilisateurs. Ces réponses aideront à améliorer le système et à faire la prochaine itération de ce prototype.

Conseillé: