Automate – Como criar frases customizadas para executar ações como o Google Now

Então pessoal no post da vez nós veremos como utilizar o Automate para executar ações utilizando comandos por voz. 

Atenção, para a construção desse fluxo é interessante que você saiba o básico de conceitos de programação, tais como:

O que é uma variável?

O que são comandos de Decisões e Operadores Lógicos?

O que é um Array (Arranjo)?

O que é uma String?

O que é uma API?

O que é um Json?

Então? Vamos lá?

O Automate nos disponibiliza um bloco de ação chamado “Speech Recognition”, que serve para nos disponibilizar a possibilidade de reconhecimento por voz e vincular ações a elas, dentro do Speech Recognition, nós podemos observar os seguintes parâmetros:

Language: Define qual a linguagem será processada, utilizaremos o Português Brasil.

Language Model: Possui duas opções, free-form e web search, onde o free form representa o modelo de linguagem de forma livre, ou seja, a maneira como nós falamos será a maneira cuja qual o interpretador de voz salvará o texto, já a opção web search buscará termos na internet, baseados nas palavras que nós pronunciamos.

Maximum Silence Duration: Representa o tempo que o microfone ficará ativo em modo silencioso e após esse tempo a ação será finalizada.

Prevent Network Requests: Será utilizado para decidir se trabalhará no modo offline ou não.

Output Variables: Utilizado para definir a saída dos valores de texto encontrados e do score para cada texto encontrado. O Score nada mais é que uma pontuação de qualidade do texto, onde a pontuação de valor 1 indica autoconfiança, 0 baixa confiança ou -1 para pontuação sem confiança.

imagem demonstrando os principais parametros do automate

Uma vez entendido como configurar o Speech Recognition, já podemos utilizá-lo para captar nossa e processar o texto que pronunciarmos, vamos testar?

Comece vinculando um bloco de ação Toast ao Speech Recognition:

 

imagem demonstrando 3 blocos de ações do automate para reconhecimento de voz como exemplo

Configure o Toast da seguinte maneira:

 

demonstração de como configurar um toast show

Atenção, selecione o FX para que seja possível selecionar a variável “textos” criada como output (saída dos elementos falados) do Speech Recognition.

Com isso poderemos executar o fluxo, falar alguma frase e após 5s (no máximo) em silêncio será exibido o Toast com o resultado das frases que

o Speech Recognition processou:

Repare que foram exibidas várias frases reconhecidas, sendo a primeira frase a selecionada como a mais bem avaliada em relação ao que foi falado.

Uma vez entendido na prática a utilidade do Speech Recognition, que tal, construirmos um fluxo que nos permita selecionar uma música de um cantor ou banda que gostamos no Deezer? (Como eu sou Tim beta, utilizo o Deezer).

demonstra o resultado do fluxograma final para automatização com o automate

Começaremos com o bloco “Speech Recognition”, configurado igualmente ao apresentado no início deste post:

Exibindo a configuração do speech recognition

Em seguida criaremos uma variável chamada “textobase“, utilizando o bloco de ação “Variable set“, está variável irá armazenar a primeira frase processada pelo Speech Recognition, pois como disse anteriormente a primeira frase é a que possui o maior Score e fidelidade com o que foi falado:

apresentação da utilização do lowerCase para compor o texto base

Reparem que estou pegando o primeiro elemento da lista de possibilidades “textos[0]” e utilizando uma função para deixar a informação obtida totalmente em minúsculo.

Em seguida, utilizaremos mais um “Variable Set” obter quantos caracteres foram ditos e processados pelo Speech Recognition:

contando os caracteres do texto base

O sinal de # dentro do Automate serve para contar o tamanho de uma frase, comumente chamadas de Strings” no mundo da programação.

Agora podemos passar para o próximo nível, verificar se a frase dita pela pessoa é o comando de voz que esperamos, no meu caso, para este post, irei verificar se a frase que foi dita contém a seguinte sequência de palavras (frase) “tocar uma música do”, em caso positivo irei seguir com o fluxo, caso contrário a ideia será cancelada.

Utilizando expression true? no automate

Utilizando a função contains é possível checar se um determinado valor contém outro valor.

Caso a pessoa diga a frase corretamente, poderemos seguir para o próximo passo:

Utilizando a função substr no automate

Utilizado a função substr é possível que seja “cortado” um texto a partir de quantos caracteres foram informados, em nosso caso utilizaremos o valor 20 que é justamente ao término da frase “tocar uma música do” e armazeno em uma variável chamada “textosaida”.

Agora que possuímos todos os parâmetros base, iremos fazer uma requisição através da API do deezer e solicitar uma música com o termo informado no áudio reconhecido, isso é possível de se fazer utilizando o bloco de ação HTTP REQUEST:

Como utilizar o HTTP Request dentro do automate

Preste bastante atenção nos itens marcados na imagem, pois eles são primordiais para o funcionamento. Neste bloco de ações, estamos efetuando um pedido de um JSON com as informações de músicas que puderam ser encontradas na plataforma do DEEZER.

Feito isso, iremos novamente utilizar o bloco de Variable Set, para processar os dados do JSON em um tipo que o Automate reconheça, utilizando a função jsonDecode:

Como setar uma variável de automate com jsonEncode

E iremos armazenar o resultado em uma variável chamada “datadeezer” (dados deezer).

Dentro das informações desse JSON processado, existe diversas músicas encontradas, com isso, podemos selecionar uma música e o seu link de maneira randomica, da seguinte maneira:

Apresentando como montar o link que o deezer consumira

Dessa maneira, estamos novamente utilizando o “Variable Set”, criando uma String (texto), armazenando o seu valor em uma variável chamada “urldeezer” e adicionando o parâmetro de URL “autoplay=true”, desta maneira, assim que nossa aplicação enviar ao deezer a URL com o parâmetro de autoplay a música selecionada irá tocar automaticamente.

O resultado ficará semelhante à esse https://www.deezer.com/br/playlist/4428710242?autoplay=true

A URL acima é meramente um exemplo.

Após tudo isso, podemos finalmente solicitar ao Deezer que execute a música encontrada, utilizando o bloco de ação “App start”, selecionando o Deezer em pick activity e em datauri, informarmos a nossa variável urldeezer:

Abertura de um app através do automate

Nosso fluxo ficará assim:

Apresentação do fluxo final com todos os blocos de ação

 

Basta executá-lo e dizer uma frase como “tocar uma música do Daft punk”, possuir o Deezer instalado e voala!

Veja a versão em vídeo com maiores detalhes:

Leave a Reply