Incluindo Reconhecimento de Fala em seu App Flutter

 Incluindo Reconhecimento de Fala em seu App Flutter






A inclusão de reconhecimento de fala em aplicações móveis pode aprimorar significativamente a experiência do usuário, tornando a interação mais intuitiva e acessível. Neste artigo, vamos explorar como implementar o reconhecimento de fala em uma aplicação Flutter utilizando a biblioteca speech_to_text. Abordaremos desde a configuração inicial até a integração completa com exemplos de código. Mostraremos, também, como configurar  para reconhecer a fala no idioma português brasileiro. O aplicativo que vamos desenvolver é bem simples e a tela pode ser vista abaixo:



Neste aplicativo o usuário pressiona o símbolo do microfone e fala algo. O que o usuário falar será mostrado na tela. 

Pré-requisitos

Antes de começarmos, certifique-se de ter o seguinte:

  • Flutter instalado: Verifique se você possui o Flutter SDK instalado e configurado no seu ambiente de desenvolvimento. Instruções neste link.
  • Dispositivo ou Emulador Android: Para testar a funcionalidade de reconhecimento de fala no Android.


Passo 1: Criando o Projeto Flutter

Primeiro, crie um novo projeto Flutter ou abra um existente onde você deseja adicionar a funcionalidade de reconhecimento de fala.


$ flutter create stt

$ cd stt


Passo 2: Adicionando a Dependência speech_to_text

Execute os seguintes comandos para adicionar as bibliotecas necessárias:


$ flutter pub add speech_to_text

$ flutter pub get


Passo 3: Configurando Permissões no Android

Para que o reconhecimento de fala funcione no Android, é necessário adicionar permissões no arquivo AndroidManifest.xmlLocalize o Arquivo AndroidManifest.xml:

<projeto>/android/app/src/main/AndroidManifest.xml

Adicione as Permissões Necessárias. Insira as seguintes linhas dentro da tag <manifest>:

<uses-permission android:name="android.permission.RECORD_AUDIO" />


O início do arquivo pode ficar assim:



Passo 4: Implementando o Reconhecimento de Fala

Vamos criar uma interface simples com um botão para iniciar/parar o reconhecimento de fala e exibir o texto reconhecido na tela.


Na linha 1  importamos o pacote principal do Flutter que contém widgets de Material Design. Esse pacote é essencial para criar a interface do usuário do aplicativo. 
Na linha 2 importamos a biblioteca speech_to_text, que permite o reconhecimento de fala. O uso de um alias permite que você se refira à biblioteca como stt ao longo do código.
Na linha 4  temos  a função principal que é o ponto de entrada do aplicativo. Quando o aplicativo é iniciado, essa função é chamada. Ela chama a função runApp, que inicia o aplicativo Flutter e o renderiza na tela. Passamos uma instância de MyApp (linhas de 6 a 19), que é um widget que representa a aplicação.  Esse widget tem como widget filho o widget HomePage que é onde a "mágica" acontece. Ele é descrito a seguir.




Neste bloco de código definimos uma classe chamada HomePage, que estende StatefulWidget, indicando que é um widget que pode mudar seu estado ao longo do tempo, o que é necessário para aplicações que utilizam interatividade. O controle do estado do widget é feito através da classe _HomePageState que é definida a partir da linha 28. Neste seguimento de código os trechos relevantes são os seguintes: na linha 29 é criada um objeto da classe SpeechToText. Esse objeto é inicializado na linha 37, no método que inicia o estado do widget.


Nas linhas de 40 a 54 realizamos a inicialização do reconhecimento de fala por meio da função initSpeech(). A função initSpeech() é assíncrona e inicializa o reconhecimento de fala verificando se ele está habilitado e listando as localidades disponíveis. Ela armazena o resultado da inicialização na variável _speechEnabled e verifica se o idioma Português Brasileiro (pt-BR) está disponível na lista de localidades. Se o idioma não estiver disponível, uma SnackBar é exibida para o usuário, informando que o Português Brasileiro não está disponível, e essa mensagem é exibida somente se o widget estiver montado na árvore de widgets.



O trecho de código das linhas 56 a 71 define três métodos relacionados ao reconhecimento de fala: _escuta(), _paraEscuta() e _capturaFala(result). O método _escuta() inicia a escuta do reconhecimento de fala e define o método _capturaFala como o callback que processará os resultados reconhecidos, chamando setState() para atualizar a interface do usuário. O método _paraEscuta() interrompe a escuta do reconhecimento de fala, também chamando setState() para garantir que a interface do usuário seja atualizada. Por fim, o método _capturaFala(result) recebe os resultados do reconhecimento de fala e atualiza a variável _fala com as palavras reconhecidas, novamente chamando setState() para refletir essa mudança na interface do usuário.



Nas linhas de 72 a 109 temos a definição da interface com o usuário. O método build constrói a interface do usuário do aplicativo, retornando um widget Scaffold que contém uma barra de aplicativo (AppBar) com o título centralizado e um fundo azul. No corpo da tela, há uma coluna centralizada que exibe um texto que varia conforme o estado do reconhecimento de fala: se está escutando, se está habilitado ou se a escuta não está disponível. Abaixo, uma linha divisória é seguida por um texto que exibe as palavras reconhecidas armazenadas na variável _fala, em verde. Um botão flutuante (FloatingActionButton) permite ao usuário iniciar ou parar a escuta, mudando seu ícone e função com base no estado do reconhecimento de fala.

Chegamos ao final de nosso Post. O código fonte pode ser obtido no Github. Se esse Post foi útil para você, por favor, considere deixar um comentário.

Comentários

Postagens mais visitadas