Tabla de contenido:

Sistema de cámara consciente del altavoz (SPACS): 8 pasos
Sistema de cámara consciente del altavoz (SPACS): 8 pasos

Video: Sistema de cámara consciente del altavoz (SPACS): 8 pasos

Video: Sistema de cámara consciente del altavoz (SPACS): 8 pasos
Video: Como Montar una Camara de Vision Trasera en el Coche (Por 20€) 2024, Noviembre
Anonim
Image
Image
Hardware - Impresión 3D
Hardware - Impresión 3D

Imagine una llamada de conferencia en la que varios oradores rodean una cámara. A menudo nos encontramos con situaciones en las que el ángulo de visión limitado de una cámara a menudo no logra mirar a la persona que habla. Esta limitación de hardware degrada significativamente la experiencia del usuario. Si la cámara puede mirar a los oradores activos, la audiencia remota estaría más involucrada en una conversación durante la llamada. En este proyecto, proponemos un sistema de cámara (prototipo) que detecta y sigue al hablante activo girando la cámara hacia el hablante. El sistema utiliza un enfoque basado en audio y visual. Cuando se detectan rostros desde la cámara, determina la persona que habla y calcula el ángulo para rotar. Cuando las caras no se detectan en el ángulo actual, el sistema busca al hablante en función de la dirección de las señales de audio de llegada.

Paso 1: Materiales

Pluma de Adafruit nRF52840 Express X 1

www.adafruit.com/product/4062

Amplificador de micrófono electret - MAX4466 X 2

www.adafruit.com/product/1063

Micro servomotor X 1

www.adafruit.com/product/169

Teléfono inteligente Android X 1

Paso 2: Hardware - Impresión 3D

Hardware - Impresión 3D
Hardware - Impresión 3D
Hardware - Impresión 3D
Hardware - Impresión 3D

Para una implementación rápida, decidimos imprimir en 3D los gabinetes que necesitamos. Hay dos componentes principales para envolventes; un tocadiscos y un soporte para teléfono inteligente. Usamos el tocadiscos de este enlace (https://www.thingiverse.com/thing:141287), donde proporciona una carcasa Arduino en la parte inferior y una mesa giratoria que se puede conectar con un servomotor. Usamos un soporte para teléfono inteligente de este enlace (https://www.thingiverse.com/thing:2673050), que es plegable y ajustable en ángulo, de modo que nos permite calibrar el ángulo convenientemente. La siguiente figura muestra las piezas impresas en 3D ensambladas.

Paso 3: Hardware - Componentes electrónicos

Hardware: componentes electrónicos
Hardware: componentes electrónicos
Hardware: componentes electrónicos
Hardware: componentes electrónicos

Hay cuatro componentes cableados; Adafruit Feather, dos micrófonos y un motor. Para el empaque compacto, soldamos (círculos grises) los cables sin usar una protoboard. A continuación se describe el diagrama del circuito y el artefacto real.

Paso 4: software

Nuestro sistema utiliza principalmente la información visual del reconocimiento facial para seguir al hablante, ya que es más preciso. Para que el Feather obtenga información visual de la aplicación de Android, usamos Bluetooth Low Energy como el principal método de comunicación.

Cuando se detecta cualquier rostro, la aplicación calcula el ángulo que el motor necesita para girar para enfocar el altavoz en el centro del encuadre. Descompusimos los posibles escenarios y los manejamos de la siguiente manera:

  1. Si se detectan rostros y hablan, calcula el punto medio de los altavoces y devuelve el ángulo relativo a la pluma.
  2. Si se detectan caras y ninguna de ellas habla, también calcula el punto medio de las caras y devuelve el ángulo en consecuencia.
  3. Si no se detecta ningún rostro, el sistema cambia la lógica de seguimiento del hablante de visual a audio.

El software SPACS se encuentra en

Paso 5: Software - Sonido

Software - Sonido
Software - Sonido

Sonido (YH)

Para localizar la fuente del sonido entrante, primero intentamos usar la diferencia de tiempo entre los dos micrófonos. Pero no fue tan preciso como esperábamos, ya que la frecuencia de muestreo (~ 900Hz) de Arduino Leopard, donde probamos las señales de sonido, era tan lenta que no puede captar la diferencia de tiempo entre micrófonos separados por 10 cm.

Cambiamos el plan para usar la diferencia de intensidad entre las dos señales de sonido de entrada. Como resultado, la pluma toma dos señales de sonido y las procesa para detectar de dónde venía el sonido. El procesamiento se puede describir mediante los siguientes pasos:

  1. Tome las entradas de dos micrófonos y reste el desplazamiento para obtener las amplitudes de las señales.
  2. Acumule los valores absolutos de las amplitudes por MIC para 500 pastillas.
  3. Guarde la diferencia de los valores acumulados en la cola que tiene 5 ranuras.
  4. Devuelve la suma de las colas como valor de diferencia final.
  5. Compare el valor final con los umbrales para decidir de dónde proviene el sonido.

Encontramos el umbral trazando el valor final en varias circunstancias, incluido el sonido procedente de izquierda y derecha. Además de los umbrales para el valor final, también establecemos otro umbral para la media de las amplitudes acumuladas en el paso 2 para filtrar los ruidos.

Paso 6: Software - Detección de rostro y habla

Para el reconocimiento facial, empleamos ML Kit para Firebase lanzado por Google (https://firebase.google.com/docs/ml-kit). ML Kit proporciona la API de detección de rostros que devuelve el cuadro delimitador de cada rostro y sus puntos de referencia, incluidos los ojos, la nariz, las orejas, las mejillas y diferentes puntos de la boca. Una vez que se detectan las caras, la aplicación rastrea el movimiento de la boca para determinar si la persona está hablando. Usamos un enfoque simple basado en umbrales que produce un rendimiento confiable. Aprovechamos el hecho de que el movimiento de la boca se hace más grande tanto horizontal como verticalmente cuando una persona habla. Calculamos la distancia vertical y horizontal de la boca y calculamos la desviación estándar para cada distancia. La distancia se normaliza al tamaño de la cara. La desviación estándar más grande indica hablar. Este enfoque tiene la limitación de que toda actividad que implique el movimiento de la boca, como comer, beber o bostezar, puede reconocerse como habla. Pero tiene una tasa baja de falsos negativos.

Paso 7: Software - Motor giratorio

Software - Motor giratorio
Software - Motor giratorio

La rotación del motor no fue tan sencilla como esperábamos debido al control de la velocidad de rotación. Para controlar la velocidad, declaramos una variable de contador global tal que permite que el motor gire solo cuando la variable alcanza un cierto valor. También declaramos otra variable global que indica si el motor se está moviendo para avisar a los micrófonos y evitar el sonido proveniente de la rotación del motor.

Paso 8: Mejoras futuras

Una de las limitaciones es que el motor se tambalea en ciertos ángulos. Parece que el motor no es lo suficientemente potente para superar el par generado al girar el teléfono inteligente. Puede resolverse utilizando un motor más potente o ajustando la posición del teléfono inteligente hacia el centro de la rotación para reducir el par.

La detección de la dirección del sonido basada en audio podría mejorarse con un método más sofisticado. Nos gustaría probar un enfoque de formación de haz acústico para determinar la dirección del sonido entrante. Lo hemos probado con la hora de llegada de las señales de audio. Pero, la frecuencia de muestreo del Feather está limitada para detectar la diferencia de tiempo cuando los micrófonos están a solo unos 10 cm de distancia.

La última pieza que falta de este prototipo es la evaluación de usabilidad. Una forma prometedora de evaluar es integrar el sistema con la plataforma de videollamadas existente y observar las respuestas de los usuarios. Esas respuestas ayudarán a mejorar el sistema y realizar la próxima iteración de este prototipo.

Recomendado: