Skip to content

Latest commit

 

History

History
120 lines (100 loc) · 6.08 KB

README.md

File metadata and controls

120 lines (100 loc) · 6.08 KB

🤖 SEMEADA

O que é o projeto?

O projeto, desenvolvido pela ADA em parceria com o SEMEAR, se trata de um robô de mesa capaz de captar comandos de fala e interpretá-los, por meio de processamento de linguagem natural, para realizar ações. Até o momento, o robô é capaz de obedecer aos seguintes comandos:

  • Dançar
  • Acordar
  • Dormir
  • Girar
  • Levantar os braços
  • Contar uma piada
  • Falar sobre seu atual estado emocional
  • Se apresentar
  • Falar sobre a ADA
  • Falar sobre o SEMEAR
  • Tocar uma música
  • Soletrar uma palavra
  • Falar sobre o projeto

Além disso, o robô, através de máquinas de estado, possui a habilida de simular sentimentos, tendo assim um "estado de espírito".

A seguir descrevemos mais detalhadamente o funcionamento do projeto.

Funcionamento

Quando o robô é inicializado, o mesmo fica em estado de espera, aguardando o acionamento. Quando recebe a mensagem "Ouvir", inicia a captação de áudio (posteriormente será utilizado um botão para iniciar a captação). O áudio é armazenado em uma faixa de som (audio.wav) posteriormente enviada para processamento_voz.py, que utiliza a biblioteca speech_recognition para transformar o áudio captado em texto. O texto então é submetido

Fluxo

Executando o projeto

Treinando o modelo

Para treinar o modelo utilizar as instruções contidas nesse guia

Rodando o código

Para rodar o projeto, executar o comando:
python Esqueleto/main.py

Estrutura de pastas do projeto

  • 📁 Codigo ➡️ contém arquivos de estudo do início do projeto
  • 📁 Esqueleto ➡️ contém todo o código do robô
    • 🐍comandos.py ➡️ mapemaneto dos comandos em números, chamado pelo PLN
    • 🐍commSerial.py ➡️ faz a comunicação do código python com o Arduino, chamada pela máquina de estados
    • 🐍main.py ➡️ coordena todas as funções do robô
      • inicializa o robô
      • chama o processamento de áudio
      • recebe o texto de volta
      • envia o texto para o processamento
      • recebe o número do comando
      • envia para a máquina de estados
    • 🐍olhos.py ➡️ mapeamento dos olhos para cada estado de humor
    • 🐍PLN.py ➡️ recebe o texto da main, faz o pré processamento do texto, submete ao modelo, retorna o valor do comando para a main
    • 🐍processamento_voz.py ➡️ chamada pela main, capta o áudio, transforma em texto e retorna para a main
    • 🐍rostos.py ➡️ faz a conexão com o arduino (não sei se está sendo utilizada, verificar remoção)
    • 🐍sintese_voz.py ➡️ usado para repetir o comando de voz de volta (verificar remoção)
    • 🐍state_machine.py ➡️ controla o estado de humor do robô, gerencia execução dos comandos (recebe da main o comando e envia para commSerial)
  • 📁 Falhas_treinamento_PLN ➡️ contém o histórico de tentativas de treinamento do modelo
  • 📁 Gravar ➡️ armazena o arquivo de áudio captado
  • 📁 Maquina_Estados ➡️ contém as imagens das máquinas de estados desenvolvidas no JFLAP
  • 📁 Olhos ➡️ contém os arquivos com as imagens usada para teste das telas LCD
  • 📁 PCB ➡️ contém o projeto das placas do robô
  • 📁 Testes Arduino ➡️ contém os arquivos comunicação com os componentes físicos do robô
  • 📁 Treinamento_PLN ➡️ contém os arquivos de treinamento do modelo de processamento de linguagem natural

O hardware

Tecnologias Usadas

Bibliotecas utilizadas

A seguir uma lista das bibliotecas utilizadas e como fazer sua instalação, além de dicas para contornar possíveis erros durante a instalação. (Todas as instalações foram feitas utilizando o pip, não usar o WSL)

  • Pandas
    pip install pandas
  • SpaCy
    pip install spacy
  • Seaborn
    pip install seaborn
  • SpaCy Language Detector
    pip install spacy-langdetect
  • SpaCy pt_core_news_sm
    python -m spacy download pt_core_news_sm
  • gTTS
    pip install gTTS
  • SpeechRecognition [Caso não dê certo, tente rodar “pip3 install SpeechRecognition”]
    pip install SpeechRecognition
  • PlaySound [Caso não dê certo, tente dar um downgrade para a versão 1.2.2 (pip install playsound==1.2.2)]
    pip install playsound==1.2.2
  • PyDub
    pip install pydub
  • SoundDevice
    pip install sounddevice
  • SoundFile
    pip install SoundFile
  • Pyserial
    pip install pyserial
  • PyAudio
    pip install pyaudio

Máquina de Estados

Para realizar o projeto, fizemos algumas máquinas de estados modificadas que indicam o estado do robô após realizar os comandos. Um exemplo disso é a maquina de estado desenvolvida para vários comandos diversos, mostrada abaixo. Nela, após realizar um comando como dançar, ele fica automaticamente no estado de "feliz".

Máquina de Estados - Diversos

Além disso, nota-se na imagem que alguns comandos não serão obedecidos se o robô estiver em determinado estado emocional, como o comando "dançar" também, que só pode ser realizado quando este está "feliz", "neutro" ou "triste".

Alguns comentários foram adicionados aos desenhos, para facilitar compreensão e auxiliar no entendimento na hora de construir o código em Python. Um exemplo de comentário pode ser visto na imagem abaixo, referente à máquina de estados "Tocar música".

Máquina de Estados - Tocar Música

Membros

Agradecimentos