Table des matières:
- Étape 1: Matériaux
- Étape 2: Matériel - Impression 3D
- Étape 3: Matériel - Composants électroniques
- Étape 4: Logiciel
- Étape 5: Logiciel - Son
- Étape 6: Logiciel - Détection de visage et de parole
- Étape 7: Logiciel - Moteur rotatif
- Étape 8: Améliorations futures
Vidéo: Système de caméra compatible avec les haut-parleurs (SPACS) : 8 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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
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
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:
- 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.
- 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.
- 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
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:
- Prenez les entrées de deux microphones et soustrayez le décalage pour obtenir les amplitudes des signaux.
- Accumulez les valeurs absolues des amplitudes par MIC pour 500 micros.
- Enregistrez la différence des valeurs accumulées dans la file d'attente comportant 5 emplacements.
- Renvoie la somme des files d'attente comme valeur de différence finale.
- 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
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é:
Routeur WIFI sécurisé - Protection et confidentialité contre les virus, les logiciels malveillants et les ransomwares : 5 étapes
Routeur WIFI sécurisé - Protection et confidentialité contre les virus, les logiciels malveillants et les ransomwares : Protection des points de terminaison à faible coût à l'aide de RaspBerryPI 4 et de l'open source. Bloque les éléments suivants AVANT qu'ils n'atteignent votre ordinateur ou votre téléphone : via la publicité
IoT APIS V2 - Système d'irrigation de plantes automatisé autonome compatible IoT : 17 étapes (avec photos)
IoT APIS V2 - Autonomous IoT-enabled Automated Plant Irrigation System : Ce projet est une évolution de mon précédent instructable : APIS - Automated Plant Irrigation System surveiller l'usine à distance. C'est ainsi
Carte de déploiement néopixel modulaire compatible avec les planches à pain open source : 4 étapes (avec images)
Carte de dérivation néopixel modulaire compatible avec les planches à pain Open Source : cette instructable concerne une minuscule planche de dérivation (8 mm x 10 mm) compatible avec les planches à pain pour les LED Neopixel qui peuvent être empilées et soudées les unes aux autres, elle fournit également beaucoup plus de rigidité structurelle qu'un mince Bande LED dans une forme beaucoup plus petite facto
Gérez 100 appareils dans les applications, les organisations, les rôles et les utilisateurs Ubidots : 11 étapes
Gérer 100 appareils dans les applications, les organisations, les rôles et les utilisateurs d'Ubidots : à cette occasion, j'ai décidé de tester la fonctionnalité de la plate-forme IoT Ubidots pour la gestion des utilisateurs dans le cas où elle aurait de nombreux appareils pour plusieurs organisations ou entreprises sous la même Plateforme Ubidots. Information du maire : vous
Bandeaux lumineux de couronne de fleurs pour les festivals de musique d'été, les mariages, les occasions spéciales : 8 étapes (avec photos)
Bandeaux lumineux à couronne de fleurs pour les festivals de musique d'été, les mariages et les occasions spéciales : illuminez la nuit avec un magnifique bandeau à fleurs LED ! Parfait pour tous les mariages, festivals de musique, bals de finissants, costumes et occasions spéciales ! Kits avec tout ce dont vous avez besoin pour créer le vôtre bandeau lumineux sont maintenant disponibles dans le magasin Wearables Workshop