Índice:
- Etapa 1: Materiais
- Etapa 2: Hardware - Impressão 3D
- Etapa 3: Hardware - Componentes eletrônicos
- Etapa 4: Software
- Etapa 5: Software - Som
- Etapa 6: Software - Detecção de rosto e fala
- Etapa 7: Software - Motor Rotativo
- Etapa 8: melhorias futuras
Vídeo: Sistema de câmara com reconhecimento de palestrante (SPACS): 8 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Imagine uma chamada em conferência em que vários alto-falantes cercam uma câmera. Muitas vezes encontramos situações em que o ângulo de visão limitado de uma câmera muitas vezes falha em olhar para a pessoa que fala. Essa limitação de hardware degrada significativamente a experiência do usuário. Se a câmera puder focalizar alto-falantes ativos, o público remoto ficará mais envolvido em uma conversa durante a chamada. Neste projeto, propomos um (protótipo) sistema de câmeras que detecta e segue o alto-falante ativo girando a câmera em direção ao alto-falante. O sistema usa uma abordagem baseada em áudio e visual. Quando rostos são detectados pela câmera, ela determina a pessoa que fala e calcula o ângulo para girar. Quando os rostos não são detectados no ângulo atual, o sistema procura o alto-falante com base na direção dos sinais de áudio de chegada.
Etapa 1: Materiais
Adafruit Feather nRF52840 Express X 1
www.adafruit.com/product/4062
Amplificador de microfone de eletreto - MAX4466 X 2
www.adafruit.com/product/1063
Micro Servo Motor X 1
www.adafruit.com/product/169
Smartphone Android X 1
Etapa 2: Hardware - Impressão 3D
Para uma implementação rápida, decidimos imprimir em 3D os gabinetes de que precisamos. Existem dois componentes principais para gabinetes; uma plataforma giratória e um suporte para smartphone. Usamos o toca-discos deste link (https://www.thingiverse.com/thing:141287), onde ele fornece a caixa Arduino na parte inferior e uma mesa giratória que pode ser conectada a um servo motor. Usamos um suporte de smartphone a partir deste link (https://www.thingiverse.com/thing:2673050), que é dobrável e com ângulo ajustável de modo que nos permite calibrar o ângulo de forma conveniente. A figura abaixo mostra as peças impressas em 3D montadas juntas.
Etapa 3: Hardware - Componentes eletrônicos
Existem quatro componentes com fio; Adafruit Feather, dois microfones e um motor. Para a embalagem compacta, soldamos (círculos cinza) os fios sem usar uma placa de ensaio. Abaixo descreve o diagrama de circuito e o artefato real.
Etapa 4: Software
Nosso sistema usa principalmente as informações visuais do reconhecimento de rosto para seguir o falante, pois são mais precisas. Para que o Feather obtenha informações visuais do aplicativo Android, usamos o Bluetooth Low Energy como principal meio de comunicação.
Quando qualquer rosto é detectado, o aplicativo calcula o ângulo que o motor precisa para girar para focar o alto-falante no centro do quadro. Decompomos os cenários possíveis e tratamos da seguinte forma:
- Se rosto (s) for detectado e falando, ele calcula o ponto médio dos alto-falantes e retorna o ângulo relativo à Pena.
- Se face (s) for detectada e nenhuma delas estiver falando, ele também calcula o ponto médio das faces e retorna o ângulo de acordo.
- Se algum rosto não for detectado, o sistema altera a lógica de rastreamento do alto-falante de visual para áudio.
O software SPACS está localizado em
Etapa 5: Software - Som
Som (YH)
Para localizar a fonte do som de entrada, primeiro tentamos usar a diferença de tempo entre os dois microfones. Mas não foi tão preciso quanto esperávamos, já que a taxa de amostragem (~ 900Hz) do Arduino Leopard, onde testamos os sinais de som, era lenta de forma que não consegue captar a diferença de tempo entre microfones de 10 cm de distância.
Mudamos o plano para usar a diferença de intensidade entre os dois sinais de som de entrada. Como resultado, a pena pega dois sinais sonoros e os processa para detectar de onde o som estava vindo. O processamento pode ser descrito pelas seguintes etapas:
- Pegue as entradas de dois microfones e subtraia o deslocamento para obter as amplitudes dos sinais.
- Acumule os valores absolutos das amplitudes por MIC para 500 captadores.
- Salve a diferença dos valores acumulados para a fila de 5 slots.
- Retorna a soma das filas como o valor da diferença final.
- Compare o valor final com os limiares para decidir de onde veio o som.
Encontramos o limite traçando o valor final em várias circunstâncias, incluindo som vindo da esquerda e da direita. Além dos limites para o valor final, também definimos outro limite para a média das amplitudes acumuladas na etapa 2 para filtrar os ruídos.
Etapa 6: Software - Detecção de rosto e fala
Para o reconhecimento facial, empregamos o ML Kit para Firebase lançado pelo Google (https://firebase.google.com/docs/ml-kit). O kit de ML fornece a API de detecção de rosto que retorna a caixa delimitadora de cada rosto e seus pontos de referência, incluindo olhos, nariz, orelhas, bochechas e diferentes pontos em uma boca. Assim que os rostos são detectados, o aplicativo rastreia o movimento da boca para determinar se a pessoa está falando. Usamos uma abordagem simples baseada em limite que produz um desempenho confiável. Aproveitamos o fato de que o movimento da boca fica maior tanto horizontal quanto verticalmente quando uma pessoa fala. Calculamos a distância vertical e horizontal da boca e calculamos o desvio padrão para cada distância. A distância é normalizada para o tamanho do rosto. Desvio padrão maior indica fala. Essa abordagem tem a limitação de que toda atividade que envolve o movimento da boca, incluindo comer, beber ou bocejar, pode ser reconhecida como fala. Mas tem uma baixa taxa de falsos negativos.
Etapa 7: Software - Motor Rotativo
A rotação do motor não foi tão direta quanto esperávamos devido ao controle da velocidade de rotação. Para controlar a velocidade, declaramos uma variável de contador global de forma que permita que o motor gire apenas quando a variável atingir um determinado valor. Também declaramos outra variável global que indica se o motor está se movendo para avisar os microfones para evitar o som proveniente da rotação do motor.
Etapa 8: melhorias futuras
Uma das limitações é que o motor oscila em certos ângulos. Parece que o motor não tem potência suficiente para superar o torque gerado pela rotação do smartphone. Isso pode ser resolvido usando um motor mais potente ou ajustando a posição do smartphone em direção ao centro da rotação para reduzir o torque.
A detecção da direção do som baseada em áudio pode ser melhorada com um método mais sofisticado. Gostaríamos de tentar uma abordagem de formação de feixe acústico para determinar a direção do som de entrada. Tentamos com o tempo de chegada dos sinais de áudio. Porém, a taxa de amostragem do Feather é limitada para detectar a diferença de tempo quando os microfones estão a apenas cerca de 10 cm de distância.
A última peça que falta neste protótipo é a avaliação de usabilidade. Uma forma promissora de avaliar é integrar o sistema à plataforma de videochamada existente e observar as respostas dos usuários. Essas respostas ajudarão a melhorar o sistema e fazer a próxima iteração deste protótipo.
Recomendado:
Abellcadabra (sistema de travamento de porta com reconhecimento facial): 9 etapas
Abellcadabra (Sistema de Trava de Porta de Reconhecimento de Rosto): Durante a quarentena, tentei encontrar uma maneira de matar o tempo construindo um sistema de reconhecimento de rosto para a porta da casa. Eu chamei de Abellcadabra - que é a combinação entre Abracadabra, uma frase mágica com campainha que eu só pego a campainha. LOL
Sistema de reconhecimento e extintor de incêndio baseado em processamento de imagem: 3 etapas
Sistema de reconhecimento e extintor de incêndio baseado em processamento de imagem: Olá amigos, este é um sistema de detecção e extintor de incêndio baseado em processamento de imagem usando Arduino
Sistema De Reconhecimento Facial: 5 etapas
Sistema de Reconhecimento Facial: O sistema de reconhecimento facial possui um funcionamento bem simples, operando na placa Dragonboard 410c em linux utilizando apenas dois scripts em python e um banco de dados local criado por de pacotes do linux, possui uma precisão ã o co
Sistema de segurança de reconhecimento facial para geladeira com Raspberry Pi: 7 etapas (com fotos)
Sistema de reconhecimento facial de segurança para geladeira com Raspberry Pi: navegando na internet descobri que os preços dos sistemas de segurança variam de 150 $ a 600 $ e acima, mas nem todas as soluções (mesmo as muito caras) podem ser integradas com outras ferramentas inteligentes em sua casa! Por exemplo, você não pode definir
Adicionando um microfone ao sistema Omnitech GPS para reconhecimento de voz: 4 etapas
Adicionando um microfone ao sistema Omnitech GPS para reconhecimento de voz: Enquanto mexia na minha unidade, descobri uma maneira fácil e rápida de adicionar um microfone a esta unidade para surdos. Com um microfone, você poderá aproveitar as vantagens do reconhecimento de voz para navegação. Isso envolverá uma pequena quantidade de solda, mas quase qualquer coisa