Como controlar aparelhos domésticos ou de escritório usando reconhecimento de voz

Como controlar aparelhos domésticos ou de escritório usando reconhecimento de voz

Assistentes controlados por voz que respondem à fala e aos comandos humanos não são mais uma novidade. Estima-se que um em cada quatro adultos na América possui um alto-falante inteligente, como o Google Home ou o Echo da Amazon. Esses dispositivos oferecem um ponto de comunicação entre você e seus dispositivos conectados, proporcionando comodidade e suporte ao automatizar determinadas funções.

Neste tutorial, abordaremos como você pode controlar aparelhos domésticos ou de escritório usando reconhecimento de voz e o protocolo Message Queuing Telemetry Transport (MQTT). MQTT é um protocolo de mensagens padrão OASIS para a Internet das coisas (IoT).

Para este projeto, usamos a API Speech do Google na linguagem de programação Python para garantir que o que é falado seja compreendido e que os comandos de voz correspondam a condições específicas. Também usaremos o MQTT para enviar sinais de controle ao dispositivo.

Componentes necessários

Ferramentas

  • IDE do Arduino
  • Phyton 2.7

Bibliotecas

Diagrama de circuito

A placa é conectada a um interruptor de luz usando um circuito de relé. Também é possível usar a placa Arduino UNO em vez de uma customizada.

Considerações técnicas
Usamos Python 2.7 para escrever o código e o microfone do nosso computador para gravar o que é dito para este projeto.

O ideal é que a fala seja facilmente convertida em texto em Python usando a biblioteca Speech_recoginition. O texto é convertido para a “voz” do computador usando a biblioteca ttysx. E a biblioteca paho-mqtt do Python suporta a comunicação para o MQTT.

Diagrama de bloco

Observação: O sistema do computador recebe a fala por meio de seu microfone e a converte, para que possa reconhecer adequadamente qualquer comando. O computador envia sinais para o MQTT com o suporte de um roteador, que está conectado a uma corretora online. O dispositivo de controle também está conectado a este mesmo broker MQTT.

Como funciona

  • O dispositivo de controle, que fica dentro da placa, primeiro deve ser conectado ao roteador Wi-Fi de sua casa ou escritório. Ele aguardará qualquer sinal de comando no tópico “ts/light”.
  • Quando iniciamos o script do reconhecedor, o dispositivo começa a “escutar”. Qualquer coisa falada será gravada e convertida em texto.
  • Essa fala é salva dentro de uma string e essa string é comparada com um conjunto de comandos específicos. Se os comandos corresponderem, os sinais de controle serão enviados ao MQTT. Por exemplo, se um locutor disser “luzes acesas”, a fala será convertida em string. Essa string é, então, analisada em busca das palavras “luzes acesas”. Quando as palavras são encontradas e combinadas, o dispositivo envia um sinal “ON” para o corretor MQTT.
  • Outro aparelho – aquele que fica dentro da tomada do quadro – recebe o comando e acende a luz.

O código
O código pode ser dividido em duas partes.

1. Reconhecimento de voz

Ao ser ligado o sistema cria a conexão com o broker MQTT: “broker.hivemq.com”.

cliente.connect(mqtt_broker, mqtt_port, 60)

Uma função começa a gravar quaisquer palavras captadas pelo microfone e as converte em texto.

enquanto 1:
dados = registroÁudio
dados = r.recognize_google(áudio)

Uma sequência de dados (que inclui as palavras faladas) é passada dentro da função “assti(data)”, onde a fala é analisada para quaisquer comandos específicos.

if (“luzes acesas” nos dados):
enviar(“LIGADO”)
falar(“a luz está acesa!”);
imprima “A luz está acesa!”
if (“luzes apagadas” nos dados):
enviar(“DESLIGADO”)

Se a condição for correspondida (ou seja, as palavras correspondem aos comandos), um sinal é enviado usando a função “send(msg)” para o MQTT.

def enviar(mensagem):
publicar.single(mqtt_publish_topic, msg, hostname=mqtt_broker)

2. Comunicação em rede
Uma assinatura comum é criada e publicada no ESP.

const char* tópicoSubscribe = “ts/light”;
const char* topicPublish = “ts/relatório”;

Para acessar a rede, usamos o chip WiFi ESP8266 e o ​​ATmega328 é um microcontrolador de chip único. Qualquer coisa enviada do ATmega328 via serial é publicada diretamente como um sinal de controle para o tópico “ts/light”.

if (Serial.disponível ) {
String recivedData = Serial.readString ;
temp_str = dados recebidos;
char temp(temp_str.length + 2);
temp_str.toCharArray(temp, temp_str.length + 1);
cliente.publish(topicPublish, temp);
}

Observe o trecho de código do ESP8266. Qualquer coisa recebida pelo MQTT é enviada para a porta serial do ESP e para o ATmega328p.

void Received_data(char* tópico, byte* carga útil, comprimento interno não assinado) {
dados_r_in_string = “”;
for (int i = 0; i < comprimento; i++) {

data_r_in_string = String(data_r_in_string + (char)carga útil(i));
//Serial.print((char)carga útil(i));
}
Serial.print(data_r_in_string);}

Este é um pequeno script Python que converte voz em texto. É possível incluir comandos ou funcionalidades adicionais, como IA nos scripts. Isso significaria que eles trabalhariam como assistentes virtuais pessoais.

Tillbaka till blogg

Lämna en kommentar

Notera att kommentarer behöver godkännas innan de publiceras.