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.

返回網誌

發表留言

請注意,留言須先通過審核才能發佈。