Você está na página 1de 9

Usando o agente em Delphi

Ao escrever uma carta no MS Word, acidentalmente cliquei no botão de ajuda


e essa coisa de animação pouco sobre aa moto pulou e me presenteou com
uma caixa de entrada. Eu já vi isso algumas vezes antes, mas desta vez eu me
perguntei se eu poderia escrever um programa que poderia animar
personagens em Delphi.
Um arquivo para download para este programa está disponível aqui .
Eu comecei na internet e começou a procurar ajuda sobre como isso pode ser
feito, depois de ficar sem ajuda dos meus colegas, que também programa em
Delphi. Acabei visitaram o site da Microsoft , onde eu encontrei tudo que eu
precisava. A Microsoft tem um Kit de Desenvolvimento chamado Agente
SDK que permite que você crie agentes interativos.

Primeiros passos

A primeira coisa que precisamos fazer é baixar os componentes do núcleo da


Microsoft e arquivos de personagens. Precisamos também de baixar um
mecanismo de texto para voz e um motor de reconhecimento de fala. Você
também pode baixar o painel de controle da fala e 'da Microsoft Lingüística
Informação Som Information Tool (Liset), que permite que você modifique as
configurações dos motores de seu discurso. Tudo isso pode ser descarregado a
partir http://www.microsoft.com/msagent/downloads/developer.asp .

A Microsoft oferece quatro agentes: Peedy, Merlin, Robby e Genie. Se você


planeja em qualquer fase de distribuição desses agentes com o seu pedido
você deve aproveitar-se do agente de Licenciamento da Microsoft e um
acordo de distribuição. Assim, os componentes que você precisará escrever
seu próprio aplicativo com o MS agentes são:

• Componentes Principais agente


• Speech Recognition Engine
• Personagens
• L & H TruVoice Engine TTS
• Microsoft Editor de caracteres
• Liset

Por favor note que depois de instalar estes componentes, o Windows irá
considerá-los como componentes do sistema, então você só pode desinstalá-
los ao re-instalar o sistema operacional Windows. Todos os seus personagens
deveriam ou será localizado em seu diretório raiz, c: windowsmsagentchars ou
c: winntmsagentchars.
Também quando se planeja distribuir o aplicativo, como requisito mínimo,
certifique-se que o sistema de destino tem o Internet Explorer instalado, isso
significa que todos os componentes que são necessários serão instalados eo
usuário pode usar os agentes, sem quaisquer problemas.

A próxima coisa que precisamos fazer é importar o Microsoft Agent ActiveX


Control. Esse controle será registrado no momento que você terminar de
instalar os componentes do núcleo. No Delphi, vá ao menu Components e
selecione "Import ActiveX Control"

Desloque-se para o Microsoft Agent Control e clique no botão Instalar. O


novo componente será instalado na página de ActiveX da paleta de
componentes. É isso aí! Temos agora o agente instalado
Criar um aplicativo Delphi e solte um componente TAgent, um memorando e
um botão:

Agora só precisamos de criar e ativar o personagem, que é bastante fácil de


fazer:

Agent1.active: = true;

Mas antes de fazermos isto temos de decidir qual o agente que deseja usar e,
em seguida, carregar o agente no componente TAgent assim:

Agent1.characters.load ('Merlin', 'merlin.acs');


Merlin: Agent1.Characters.Character = ('Merlin');

Para fazer com que Merlin ler o que está no memorando, o que chamaríamos
de Fala () método:

Merlin.speak (memo.text,'')

Antes de Merlin faz falar, temos de ser capazes de vê-lo, por isso chamamos o
método show ():

Merlin.show ();

Então, o nosso código deve ficar parecido com este:

var
Form1: TForm1;
Peedy, Merlin: IAgentCtlCharacterEx;
execução
($ R *. dfm)
procedimento TForm1.FormShow (Sender: TObject);
começar
Agent1.characters.load ('Merlin', 'merlin.acs');
Merlin: Agent1.Characters.Character = ('Merlin');
Agent1.Connected: = true;
efeito;
procedure TForm1.Button1Click (Sender: TObject);
começar
Merlin.show (false);
Merlin.speak (memo1.text,'');
efeito;
procedimento TForm1.FormCloseQuery (Sender: TObject;
var CanClose:
Boolean);
começar
Agent1.Characters.Unload ('Merlin');
efeito;

Aqui está um teste da aplicação:

O código acima é bom, na medida em que ficar Merlin para falar. Mas não é
muito bem codificada. Por exemplo, nossa aplicação irá falhar se o usuário
pressiona button1 quando Merlin está ocupada lendo. Então, precisamos fazer
uma provisão para isso. Para lidar com cheques como que fazemos uso do
método loadrequest:

loadrequest: = Agent1.characters.load ('Merlin',


'merlin.acs');

Então o nosso código revisto será parecido com este:

procedimento TForm1.FormShow (Sender: TObject);


começar
loadrequest: = Agent1.characters.load ('Merlin',
'merlin.acs');
se <loadrequest.Status> 0 então começar
/ / Não foi possível carregar o agente
MessageDlg ('Merlin já está carregada ", mtError,
[mbok], 0);
saída;
efeito;
Merlin: Agent1.Characters.Character = ('Merlin');
Agent1.Connected: = true;
efeito;

Uma alternativa para o código acima seria a de usar o bloco try ... exceto:

tente
loadrequest: = Agent1.characters.load ('Merlin',
'merlin.acs');
exceto no E: Exception do
começar
MessageDlg (E. Message, mtError, [mbok], 0);
saída;
efeito;

Na seção anterior foi utilizado o Speak () procedimento para fazer Merlin ler o
texto do memorando. Nós podemos usar esse método para modificar discurso
usando tags. Estas tags podem ser usadas para alterar a expressão de saída do
personagem. tags Fala seguem um formato muito específico:

1. Todas as marcas começam e terminam com um caractere barra


invertida ().
2. Tags são dependentes ou seja, o espaço em branco Merlin não é o
mesmo que Merlin.
3. O personagem única barra invertida não é permitido dentro de uma tag.
Para incluir um caracter de barra invertida em um parâmetro de texto de
uma marca, use uma barra invertida dupla.
4. Tags são diferencia maiúsculas de minúsculas, ou seja, Merlin é o
mesmo que MERLIN.

A partir da documentação da Microsoft há onze principais tags que podem ser


usados para alterar a saída de fala. Abaixo estão alguns deles como previsto na
documentação da Microsoft:

Chr
Descrição: define o caráter da voz.

Sintaxe: Chr = string

String: Uma seqüência de caracteres especificando o caráter da voz.

Parte Descrição

"Normal" (padrão) Um tom de voz normal

"Monotone" Uma voz monótona

"Whisper" Uma voz sussurrada

Ctx Tag

Descrição: Define o contexto do texto de saída.

Sintaxe: ctx = string

String: Uma seqüência de caracteres especificando o contexto do texto que se


segue, que determina como símbolos ou abreviaturas são faladas.

Parte Descrição

"Endereço" Endereços e números de telefone.

"E-mail" O correio eletrônico.

"Desconhecido" (padrão) O contexto é desconhecido.

Lst Tag

Descrição: Repete a última instrução de voz para o personagem.

Sintaxe: Lst

Observações: Esta tag permite que um personagem de repetir sua última frase
falada. Essa marca deve aparecer por si só no método Speak, sem texto ou
outros parâmetros podem ser incluídos. Quando o texto falado é repetida,
todas as outras marcas incluídas no texto original são repetidas, exceto para os
favoritos.Qualquer WAV. E arquivos. LWV incluído no texto também são
repetidas.

Mapa Tag

Descrição: Mapas texto falado ao texto exibido no balão.

Sintaxe: Mapa = "spokentext" = "balloontext"


Observações: Esta tag permite que você use texto falado diferente daquele
exibido no balão.

Parte Descrição

spokentext Uma seqüência de caracteres que


especifica o texto para a saída falado.

balloontext Uma seqüência de caracteres que


especifica o texto para a saída de
balão.

Mrk Tag

Descrição: Define um marcador no texto falado.

Sintaxe: MRK = número

Observações: Quando o servidor processa um marcador, ele gera um evento


marcador. Você deve especificar um número maior que zero (0) e não igual a
2147483647 ou 2147483646.

Parte Descrição

número Um valor inteiro que identifica o marcador.

Pau Tag

Descrição: Interrompe a fala para o número especificado de milissegundos.

Sintaxe: Pau = número

Parte Descrição

número O número de milissegundos para fazer uma


pausa.

Pit Tag

Descrição: Define a altura da linha de base da saída para o valor especificado


em hertz.

Sintaxe: Pit = número

Observações: Esta marca é suportada apenas para a saída de TTS-gerado. O


intervalo de valores para o parâmetro podem variar dependendo do
mecanismo de TTS instalado.

Parte Descrição

número O passo em hertz.


Há um par mais que você pode usar para fazer o seu agente falar de uma
maneira que você gosta. Para fazer com que Merlin sussurrar o texto que ele
lê fora do memorando, alterar o código do procedimento button1 disso:

procedure TForm1.Button1Click (Sender: TObject);


começar
Merlin.show (false);
Merlin.speak (memo1.text,'');
efeito;

Para isso:

procedure TForm1.Button1Click (Sender: TObject);


começar
Merlin.show (false);
Merlin.speak (Chr = "Whisper" memo1.text,'');
efeito;
Você pode mover o agente ao redor da tela usando o método moveTo ().O
método usa três parâmetros:

Moveto (x, y, 0)

Os agentes também podem interagir uns com os outros. Isto pode ser
conseguido através de solicitação e aguardar os métodos. O código poderia
parecer com algo assim:

/ / Cria o vars
var
Pedido1, Request2: IAgentCtlRequest;
/ / Carrega os agentes
Agent1.characters.load ('Merlin', 'merlin.acs');
Merlin: Agent1.Characters.Character = ('Merlin');
Agent1.characters.load ('Peedy', 'peedy.acs');
Peedy: = Agent1.Characters.Character ('Peedy');
/ / Torná-los visíveis
Peedy.Show (False);
merlin.Show (False);
/ / Inicia a interação
Pedido1: = Peedy.Speak ('Olá lá','');
merlin.Wait (pedido1);
Request2: = merlin.Speak ('lá Who' ?','');
Peedy.Wait (Request2);
Pedido1: = Peedy.Speak ('Sua Peedy .',''); me
merlin.Wait (pedido1);
Request2: = merlin.Speak ('Peedy que ?','');
Peedy.Wait (Request2);
Pedido1: = Peedy.Speak 'Just Peedy !',''); (
merlin.Wait (pedido1);
Peedy.Play ('Prazer');
Merlin.speak ('Prazer');

Para interagir com o usuário, ao contrário de um outro agente, você só precisa


usar caixas de entrada e fazer o agente ler suas respostas.

Conclusão

Agentes farão suas aplicações interativas e divertidas de usar. E com alguns dos
principais componentes que você instalou, você pode criar seus próprios personagens
para usar em suas aplicações.

Você também pode gostar