Xamarin Forms - Parla Xamarin Parla...
Neste artigo veremos como podemos converter texto em fala em aplicações Xamarin Forms usando a classe TextToSpeech do plugin Xamarin Essentials. |
Se você não conhesse o Xamarin Essentials leia o meu artigo: Introdução ao Xamarin Essentials e veja também as referências em: Get Start with Xamarin Essentials
O template de projeto padrão da versão atual Visual Studio 2019 (16.4.5) já inclui o pacote do Xamarin Essentials(1.3.1) instalado e a versão atual do Xamarin Forms (v4.3.0908765) não necessita nenhum ajuste para a plataforma Android.
A classe TextToSpeech permite que um aplicativo utilize os mecanismos internos de conversão de texto em fala para repetir o texto do dispositivo e, também, consultar os idiomas disponíveis, compatíveis com o mecanismo.
Para poder fazer a conversão do texto em fala basta referenciar o Xamarin.Essentials no projeto e usar o método SpeakAsync da classe TextToSpeech.
Exemplo:
public async Task TesteFala()
{
await TextToSpeech.SpeakAsync("Hello World");
//O método será bloqueado até o enunciado terminar
}
|
Podemos usar o recurso opcional CancellationToken para interromper o enunciado após ele ser iniciado:
CancellationTokenSource cts;
public async Task TesteFala()
{
cts = new CancellationTokenSource();
await TextToSpeech.SpeakAsync("Hello World", cancelToken: cts.Token);
//O método será bloqueado até o enunciado terminar
}
// Cancela a fala se o token de cancelamento
// existir e ainda não foi invocado
public void CancelaFala()
{
if (cts?.IsCancellationRequested ?? true)
return;
cts.Cancel();
}
|
Podemos definir o volume, o tom e a localidade usando a enumeração SpeechOptions:
public async Task FalarAgora()
{
await TextToSpeech.SpeakAsync("Hello World", settings);
}
|
Os valores suportados por Volume e Pitch são:
Parâmetro | Mínimo | Máximo |
Pitch | 0 | 2.0 |
Volume | 0 | 1.0 |
É muito importante destacar que o recurso Text-to-Speech enfileira automaticamente as requisições de fala do mesmo segmento.
As limitações API:
Agora vamos ao exemplo...
Recursos usados:
Criando o projeto no VS 2019
Abra o VS 2019 Community e clique em Create New Project e a seguir escolha:
Clique em Next e informe o nome XF_Parla1;
A seguir clique no botão Create :
A seguir selecione o template Blank e a plataforma Android (eu não tenho ambiente para o projeto iOS) e clique no botão OK:
Pronto, nosso projeto já esta criado.
No projeto Android na pasta Resource/drawable vamos incluir a imagem que iremos usar no projeto:
Definindo o código da MainPage
Agora abra o arquivo MainPage.xaml e inclua o código abaixo:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="XF_Parla1.MainPage"> <StackLayout> <StackLayout HorizontalOptions="Center" VerticalOptions="Start">
<Image Margin="0,50,0,0" x:Name="imgBanner" Source="maco1b.jpg"
></Image> </ContentPage> |
Abra o arquivo MainPage.xaml.cs e defina o código para o evento do botão :
using System;
using System.ComponentModel;
using System.Linq;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace XF_Parla1
{
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void btnFala_Clicked(object sender, EventArgs e)
{
var locales = await TextToSpeech.GetLocalesAsync();
var locale = locales.FirstOrDefault();
var settings = new SpeechOptions()
{
Volume = .50f,
Pitch = 2.0f,
Locale = locale
};
if (string.IsNullOrWhiteSpace(txtTexto.Text))
{
await DisplayAlert("Alerta", "Digite o texto", "OK");
}
else
{
await TextToSpeech.SpeakAsync(txtTexto.Text, settings);
}
}
}
}
|
Executando o projeto teremos o seguinte resultado:
Estou testando usando o emulador Genymotion.
Simples assim...
Pegue o código do projeto compartilhado aqui : XF_Parla1.zip (somente o projeto compartilhado)
"Sede,
pois, imitadores de Deus, como filhos amados;
E andai em amor, como também Cristo vos amou, e se entregou a si mesmo por nós,
em oferta e sacrifício a Deus, em cheiro suave."
Efésios 5:1,2
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Xamarim - Desenvolvimento Multiplataforma com C# ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Criando sua primeira ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Anatomia da aplicação - Macoratti.net
https://developer.xamarin.com/api/type/Android.Widget.ListView/
Xamarin Forms - Obtendo a Geolocalização e exibindo a ... - Macoratti