Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

  

Em uma aplicação interface com o usuário é tudo! Os botões, menus e formulários podem levar um bom projeto ao fracasso ou à aclamação. Fazê-los ao mesmo tempo atraentes e fáceis de entender pode tornar uma aplicação um sucesso.

 

Agora imagine as inúmeras possibilidades se pudermos colocar voz para descrever funcionalidades, campos, texto e etc. ao usuário!

 

Construindo:

 

1. Inicie um novo projeto;

 

2. No novo formulário adicione um campo de texto (TEdit) e um botão (TButton);

 

 

 

 

3. No código fonte do seu projeto, na cláusula USES insira ComOBJ;

 

 

 

 

4. Para o evento onClick do botão (clique duas vezes sobre ele para abrir o código já com o evento criado) vamos colocar o seguinte código:

 

Declare a variável voz, como abaixo.

 

{code}

var voz : OLEVariant;

{/code}

 

Agora o código para o corpo do evento.

 

{code}

 voz := CreateOLEObject('SAPI.SpVoice');

 voz.Speak(Edit1.Text,0);

{/code}

 

Entendendo o código:

 

Primeiro importamos a biblioteca ComOBJ que contém os tipos OLE desejados para o uso da API de fala da Microsoft (SAPI – Speech API).

 

Criamos a variável voz do tipo OLEVariant, ou seja, poderá receber qualquer objeto OLE independente do tipo que seja.

 

Em voz := CreateOLEObject('SAPI.SpVoice'); criamos o objeto voz como sendo do tipo SAPI.SpVoice, ou seja, da classe da Speech API.

 

Com voz.Speak(Edit1.Text,0); solicitamos que seja falado o conteúdo do campo de texto de forma síncrona (valor de parâmetro zero), ou seja, o programa só continua depois de falar. Caso deseje que ele fale de forma assíncrona troque o valor por 1 (um), dessa forma o programa continuará a execução dos comandos seguintes enquanto fala.

 

 

Executando:

 

Digite alguma coisa no campo de texto e clique no botão, seu programa “falará” o que você digitou:

 

 

 

 

Mas note que ele falou de um jeito muito estranho, só fala corretamente caso escreva algo em inglês. Parece óbvia a resposta, e é: isso acontece porque a API de texto-para-voz disponível por padrão no Windows está na língua inglesa.

 

Isso pode ser resolvido encontrando-se e baixando pacotes de texto-para-fala (text-to-speech) para língua portuguesa.

 

Vamos alterar um pouco nosso projeto para que seja possível selecionar a voz desejada.

 

No formulário insira uma caixa de combinação (TComboBox) e um segundo botão (TButton):

 

 

 

 

Para esse segundo botão, no evento onClick declare as seguintes variáveis:

 

{code}

var voz, vozes : OLEVariant;

i : Integer;

{/code}

 

 

 

 

Agora, para o segundo botão ainda no evento onClick, insira o seguinte código:

 

{code}

voz := CreateOLEObject('SAPI.SpVoice');

vozes := voz.getVoices;

ComboBox1.Clear;

for i := 0 to vozes.Count - 1 do

ComboBox1.Items.Add(vozes.item(i).GetDescription);

{/code}

 

Com isso, ao clicar no segundo botão serão carregadas todas as vozes disponíveis no sistema:

 

 

 

 

Volte ao evento onClick do primeiro botão e altere o código como demonstrado abaixo:

 

{code}

voz := CreateOLEObject('SAPI.SpVoice');

voz.Voice := voz.GetVoices.Item(combobox1.ItemIndex);

voz.Speak(Edit1.Text,0);

{/code}

 

Com a linha voz.Voice := voz.GetVoices.Item(combobox1.ItemIndex); selecionamos a voz com a qual desejamos que o texto seja lido conforme seleção na caixa de seleção (ComboBox).