App que fala: Como fazer seu app falar?

Um app que fala?? Exatamente. Com a ascensão das assistentes virtuais como Siri (Apple), Cortana (Microsoft), Google Now e Alexa (Amazon), somada a popularização de BOTs nos messengers e diversas outras ferramentas de comunicação, os desenvolvedores tem cada dia mais tentado incorporar recursos de voz dentro de seus próprios apps.

Se antes tais recursos eram extramemente complexos e possuiam um alto custo de implementação, hoje uma grande parte da funcionalidade já está disponível nos próprios SDKs das plataformas. E você pode incorporar no seu app com pouquíssimas linhas de código.

Nesse artigo, vamos ver de maneira muito direta e rápida, como fazer com que seu app seja capaz de “falar” alguns textos e alertas que podem ser úteis para os usuários.

O que vamos precisar para o app?

Para fazer nosso app falar, vamos precisar apenas do framework AVFoundation (que normalmente já vem pré-importado nos projetos do Xcode) e da classe AVSpeechUtterance junto das suas dependências.

Passo a passo

Vamos começar criando um novo projeto do zero. Você pode criar qualquer tipo de projeto base, mas para simplificar eu vou utilizar o template de Single View Application, ou seja, um app que tem apenas uma tela.

Imagem Xcode novo projeto

Seu projeto será criado com a estrutura base do app. Para esse exemplo, tudo que você precisa é acessar a classe ViewController.m

Imagem Xcode treeview das pastas
Agora vamos fazer algo que não é fundamental para a funcionalidade que fará seu app falar, mas vai nos ajudar a testar a implementação.

Basicamente, vou criar 2 componentes visuais na tela: Um campo de texto (onde você irá informar a frase que deve ser falada) e um botão (que irá iniciar a fala).

Como o objetivo aqui é manter a implementação simples e evitar explicar outros conceitos ou ferramentas do desenvolvimento iOS, vou criar os 2 componentes diretamente por código e direto dentro da ViewController mesmo! (Mas não faça isso no seu projeto sério! ⚠️)

Vamos criar o método que será chamado ao clicar o botão:

Vamos criar o método que irá disparar a fala em si:

O método acima recebe uma String e irá, em breve, sintetizar o conteúdo da string com a voz que vamos escolher.

Vamos garantir que esse método seja chamado certinho quando clicar no botão. Volte ao método talkButtonTapped e adicione a chamada ao método de fala.

Pronto! Temos o campo de texto, temos o botão, e ao clicar no botão passamos o conteúdo digitado no campo de texto para o método que irá iniciar a fala. Agora vamos para o código no qual esse artigo realmente se propõe a lhe ensinar. 😂

Como mencionado inicialmente, toda implementação que faz seu app falar está relacionada a pouquíssimas classes. Vamos precisar de uma instância de uma AVSpeechUtterance e uma instância de uma AVSpeechSynthesizer e ponto! Sim! É só isso!

A classe AVSpeechUtterance é responsável por definir a pronúncia de uma expressão. Um objeto/instância dessa classe guarda informações importantes como a voz, idioma e velocidade que seu texto será falado. Você cria um AVSpeechUtterance para cada frase que quiser falar.

A classe AVSpeechSynthesizer por sua vez, recebe um objeto do tipo AVSpeechUtterance e reproduz! Também é essa classe que é responsável em guardar informações de estado, como por exemplo, informar qual palavra da frase está sendo falada nesse exato momento. Você obtém essas informações através dos delegates.

Parece fácil né? E é! O código fica super simples.

É só rodar o app, digitar uma frase e apertar o botão: Seu app está falando!

Desconsiderando os comentários, são apenas 5 linhas de código. Isso porque estamos alterando a velocidade da fala. Você pode remover essa linha e manter a velocidade padrão (1.0). Mas para textos muito longos eu acho que fica meio entediante, então prefiro acelerar um pouquinho.

Ahh, visualmente o app fica assim:

Imagem do app em funcionamento

Não é exatamente o que podemos chamar de um app muito bonito, eu sei, mas a funcionalidade está ali. Agora você só precisar usar sua criatividade para aplicar essa funcionalidade em momentos especiais dos fluxos já existentes no seu app. É possível fazer muita coisa legal!

E antes de encerrar, é claro que você vai querer ver o app funcionando:

 

 

Caso queira baixar o código fonte já pronto, o projeto está disponível no Github da Abacomm: https://github.com/abacomm/TalkingApp

Gostou da dica? Acha que devemos postar mais conteúdos desse tipo? Deixe seu comentário abaixo. Também não esqueça de acompanhar a Abacomm no Twitter, onde estamos sempre compartilhando várias dicas.

Gostou? Compartilhe essa dica com seus amigos e até a próxima! 🙂

Compartilhe:

Sobre o Autor

Douglas Fischer

Facebook Twitter Google+

Writing and reading lover, music addicted and Mobile Tech Lead. Founder of XT3Studios, Adsvanced and Arapuka Antivirus. Partner at Abacomm.

Leave a Reply

Your email address will not be published. Required fields are marked *