31
Atividades do grupo de Voice Browser do W3C Departamento de Engenharia de Telecomunicações – Universidade Federal Fluminense (UFF) – Niterói - RJ – Brasil Antonio Caminada, Randolpho Julião

Browser do W3C Atividades do grupo de Voice - Universidade …debora/fsmm/trab-2005-1/apres_voice.pdf · 2005-08-10 · XML para o desenvolvimento de aplicações baseadas em voz

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Atividades do grupo de Voice Browser do W3C

Departamento de Engenharia de Telecomunicações – Universidade Federal Fluminense (UFF) – Niterói - RJ – Brasil

Antonio Caminada, Randolpho Julião

Resumo• Inicialmente apresentaremos uma visão geral do

padrão Voice XML e suas principais aplicações.• A seguir mostraremos as principais

características e elementos da linguagem. • Na continuação, falaremos da arquitetura para

aplicações de voz corporativa.• Por fim daremos uma visão geral das tendências

do Voice XML apontadas pelo W3C.

Introdução ao Voice XML• Linguagem padrão (aberta), fundamentada no

XML para o desenvolvimento de aplicações baseadas em voz.

• Utiliza marcações (tags), cada qual com significado específico, e deve ser usado juntamente com softwares de sintetização e reconhecimento de voz.

• A primeira release para o público, Voice XML 0.9, foi feita em agosto de 1999. Atualmente estána versão 2.1.

Voice XML e Serviços de Voz• Traz as vantagens de Internet para o telefone

– Criar aplicações interativas com tecnologia web que possam ser acessadas via telefone.

• Exemplos– Informações de negócios, como help-desks corporativos que

podem perguntar aos clientes o que eles desejam, informar chegadas e partidas de vôos, horários de cinemas, etc

– Acessar informações públicas como previsão do tempo, condições do tráfego, notícias locais, etc.

– Acessar informações pessoais, como agenda de compromissos, agenda de telefones, lista de compras, mensagens de voz, etc.

– Aplicativos utilizados em carros e eletrodomésticos, sem o uso do telefone.

• Se os serviços oferecidos hoje na Internet puderem ser feitos pelo telefone com a mesma facilidade, este seria o canal mais fácil de comunicação.– Não há necessidade de download de programas específicos e,

com a difusão da telefonia móvel, estariam disponíveis em qualquer lugar.

• Nem todas as aplicações podem ser usadas com aplicações de voz. – Grandes documentos, com múltiplas interfaces são difíceis de

representar como voz.

• Por outro lado é mais fácil dizer o nome do restaurante que se procura do que digitá-lo.

• Interactive Voice Response (IVR)– Máquinas especialmente projetadas para abrigar

serviços de voz. – Software/hardware de processamento e

reconhecimento de voz e um software para controlar o fluxo e a lógica da conversa.

– São programáveis (a lógica do diálogo pode ser alterada).

– Linguagem de scripts de alto nível (define o fluxo da ligação).

– API de baixo nível (para tarefas mais complicadas, como a consulta em um banco de dados, por exemplo).

• O Voice XML é parte de um conjunto de tecnologias associadas à voz em desenvolvimento pelo W3C.– Grammar XML (GRXML): linguagem para representar

gramáticas. A gramática indica ao programa de reconhecimento de fala que palavras deve escutar e em que ordem elas devem aparecer.

– Speech Synthesis Markup Language (SSML): oferece um modelo indicando como o texto deve ser convertido em fala (tom de voz, inflexão, etc).

– Call Control XML (CCXML): linguagem para controlar o equipamento telefônico e de roteamento.

– Eventos XML: padrão para criar comportamentos associados a eventos.

Voice XML em Detalhe• Nesta seção abordaremos alguns dos principais

aspectos e elementos do Voice XML, como por exemplo:– O uso de formulários, prompts de áudio e controle

do fluxo do diálogo.– Como o Voice XML interpreta os inputs do usuário.– O uso de menus e varáveis.

Formulários• Os diálogos são as principais formas de

interatividade no Voice XML. Existem dois tipos de marcações para construção de diálogos: formse menus. – Para serem úteis, quase todas as outras marcações

devem estar dentro de uma destas duas. – Um formulário é composto de uma ou mais perguntas

que a aplicação precisa fazer ao usuário. – Idéia intuitiva.

<?xml version="1.0" encoding="iso-8859-1"?><vxml version="1.0">

<form id="CustomerQuestionnaire"> <block>

We would like to ask you several questions to find out if we can serve you better. </block>

<field name="foodOK"> <prompt>

Would you rate the quality of the food at the restaurant as Excellent, Good, Fair, or Poor?

</prompt> <grammar>excellent</grammar><grammar>good</grammar><grammar>fair</grammar><grammar>poor</grammar><filled>Got it.</filled>

</field> <field name="courteousService" type="boolean">

<prompt> Were the employees who served you courteous?

</prompt>

• Um formulário pode conter várias marcações, como por exemplo:– Field – representa uma única pergunta num formulário.

Especifica como o interpretador de Voice XML deve pedir informações ao usuário.

– Prompt – especifica como fazer as perguntas: pode conter um texto que será convertido em fala ou indicar uma mensagem pré-gravada.

– Grammar – no exemplo dado a variável foodOK é preenchida com o valor "excellent" quando o usuário pronunciar a palavra. Isto é feito pelo elemento grammar, que mapea a resposta falada do usuário para uma string de texto.

Elementos de procedimentos• Um documento Voice XML pode conter

elementos tais como:– Elementos condicionais como if, else, elseif.– Elementos não condicionais de controle de fluxo

como goto e submit.– Elementos de procedimentos como script, log,

disconnect e exit.

Prompts e Audio• O elemento prompt emite uma mensagem de

áudio pré-gravada ou uma fala produzida. Se um prompt for repetido porque a resposta do usuário não foi a esperada, um prompt alternativo pode ser usado, como por exemplo:

<field name="getCreditCardType"> <grammar src="validCreditCards.grxml"/>

<prompt count="1"> What is your preferred credit card?

</prompt> <prompt count="3">

Say either Visa, Master Card, American Express. </prompt>

</field>

• O elemento audio instrui ao interpretador de Voice XML para tocar uma resposta em um arquivo pré-gravado

<prompt> Here is a text message.

<audio src="goodbye.wav"> <emphasis>Goodbye</emphasis> thank you for your preference.

</audio></prompt>

• O elemento say-as indica como o texto deve ser pronunciado ao ser convertido em fala. Por exemplo, o texto “10.25” com o elemento say-ascurrency seria pronunciado como “ten dollarsand twenty five cents”.

• Existem outros elementos say-as:– date, duration, measure, name, number, telephone e

time, etc.

Formulários de Iniciativa Mista

• Muitos formulários se desenrolam da seguinte forma: – o computador faz uma série de perguntas pré-

definidas e o usuário fornece as respostas, uma após a outra.

– Nos formulários de iniciativa mista tanto o usuário quanto a aplicação podem dirigir a conversa.

• Exemplo de formulário com estrutura rígida

IVR : Would you rate the quality of the food at the restaurant as Excellent, Good, Fair, or Poor?

Human : The service was so slow I never got my food!IVR : I'm sorry I don't understand. Would you rate the quality of the food at the

restaurant as Excellent, Good, Fair, or Poor?Human : None of the above.IVR : I'm sorry I don't understand. Would you rate the quality of the food at the

restaurant as Excellent, Good, Fair, or Poor?

• Isso poderia ser evitado se o interpretador “pescasse” as palavras “slow” ou “service”, que claramente se referem àpergunta feita.

• Exemplo de formulário com estrutura flexívelIVR : Would you rate the quality of the food at the restaurant as

Excellent, Good, Fair, or Poor?Human : The service was so slow I never got my food!IVR : I assume that on a scale from zero to nine, you would

rate the speed of service as zero. Were the employees who served you courteous?

Human : Yes.IVR : I'm sorry you experienced problems at Jimmy's Pizza.

Thank you for taking this survey.

• Ao captar as palavras-chave o interpretador muda o rumo do diálogo, não ficando preso naquele ponto.

Menus• Um menu é como um formulário que tem apenas

uma pergunta. Por exemplo, uma aplicação bancária poderia ter o seguinte menu:Would you like to: * Check your account balance, * Transfer funds, or * Speak with a customer service representative?

• Parte do código para implementar o menu anterior é:<menu>

<prompt> Please choose from the following options:<enumerate/>

</prompt> <choice dtmf="1" next="#checkBalance">

Check account balance</choice> <choice dtmf="2" next="#transferFunds">

Transfer funds </choice>

• O elemento choice serve para especificar uma opção do menu e deve conter:– Uma descrição da escolha que deve ser lida para o

usuário.– A frase que se espera que o usuário responda.– O que fazer quando o usuário responde.

Gramáticas• Gramáticas são as regras que definem quais respostas do

usuário são aceitáveis.– Aceitam como input a resposta falada do usuário e retornam

uma string de texto correspondente.<rule id="accountType">

<one-of> <item>savings</item><item>checking</item><item>money market</item>

</one-of></rule>• Se o usuário informar um tipo de conta diferente dos

três fornecidos pela regra, um evento será chamado para tratar a exceção.

Comparação entre VoiceXML e HTML

Aplicações VoiceXML Dinâmicas1. O Browser de voz carrega os scripts VoiceXML, os

formatos de gramáticas e os arquivos de áudio de um servidor WEB ou de um Servidor de Aplicações para o Servidor de voz.

2. O Browser de Voz apresenta um menu de opções (prompt) através da execução de áudios pré-gravados ou síntese de voz (TTS).

3. O usuário faz uma chamada de qualquer telefone através da rede pública de telefone (PSTN)

4. O usuário responde falando ou pressionando as teclas num telefone de tom. A fala do usuário e/ou os tons digitados são transferidos através da conexão telefônica (PSTN) e o servidor de voz processa esses dados através do ASR. Os dados ficam então disponíveis para o Browser de Voz

5. O Browser de Voz acessa aplicações através de requisições HTTP sobre TCP/IP podendo ser Intranetsou Internet usando as opções ou comandos do usuário processados pelo ASR como parâmetros, por exemplo .

6. As aplicações retornam conteúdo, informações ou dados que construirão dinamicamente trechos de páginas VoiceXML ou páginas completas VoiceXML a partir dos dados ou conteúdo retornado.

7. O Browser de Voz retorna as informações solicitadas renderizando a página VoiceXML construída dinamicamente através da execução de áudios pré-gravados ou síntese de voz (TTS). Novas gramáticas também podem ter sido carregadas dinamicamente para continuar e conduzir a interação.

8. O usuário finaliza ou continua a interação.

Arquitetura de aplicação VoiceXML escalável e Distribuída

Módulos que compõe uma aplicação ouserviço baseado em voz usando astecnologias de VoiceBrowser eVoiceXML :

• O interpretador VoiceXML.• O servidor ASR.• O Servidor TTS.• O Processador de controle de

chamadas.• O Servidor de Aplicação.• O Banco de Dados.

Arquitetura de aplicação VoiceXML de Alta Disponibilidade

Algumas características dos Segmentos ou camadas na plataforma VoiceCenter IVR:• Redundância de componentes 1 + N e também são • Constituídos de múltiplos blocos e clusters de componentes• Implementação 100% baseada em IP• Disponibilidade (anunciada) de 99.999%

As Tendências do VoiceXML apontadas pelo W3C

Os principais eventos que estão ocorrendo no grupo do W3C chamado Voice Browser Working Group podem sersintetizados da seguinte forma :

• Três das linguagens atingiram o status de “Full Recomendations” do W3C: VoiceXML 2.0, Speech Synthesis Markup Language (SSML) e Speech Recognition Grammar Specification (SRGS).

• Outras Linguagens estão avançando para se tornarem recomendações completas do W3C (FullRecomendations):

– VoiceXML 2.1 – Coleção de 8 novos recursos que agregarão no VoiceXML 2.0. As aplicações 2.0 continuam funcionando sem nenhuma alteração:

• Candidate Recommendation, Fevereiro 2005 - Recommendation, Junho 2005 – Semantic Interpretation – Linguagem similar ao JavaScript usado para extrair e transformar palavras do

mecanismo (engine) de reconhecimento de fala em conceitos semânticos.• Candidate Recommendation, Março 2005 -Recommendation, Dezembro 2005

– CCXML – Linguagem baseada em eventos usada para administrar conexões telefônicas e roteamento de chamadas.

• Candidate Recommendation, Abril 2005 - Recommendation, Dezembro 2005 – Pronunciation Lexicon Specification (PLS) – Linguagem para especificar como as palavras são

pronunciadas.• 1st Working Draft, Março 2005 • Last Call Working Draft, Julho 2005 • Candidate Recommendation, Dezembro 2005 - Recommendation, Abril 2006

– VoiceXML 3.0 – Uma nova linguagem de diálogo que conterá vários novos recursos e extensões ao VoiceXML 2.0/VoiceXML 2.1.

• 1st Working Draft, June 2005• Last Call Working Draft, March 2006 • Candidate Recommendation, December 2006 - Recommendation, June 2007

Relacionamento entre IVR Tradicional e a Camada VoiceXML

Geração de VoiceXML e outros documentos em linguagens de Markup

Aplicação Tracking de Pacotes (Encomendas)

Códigos para obter número de Tracking e acesso ao B.D de informações dos Pacotes<?xml version="1.0" encoding="iso-8859-

1"?><vxml version="2.0">

<form id="welcome"><block>

<prompt>Welcome to the telephone

package tracking system.</prompt><goto next="#CollectTrackingNo"/>

</block></form>

<form id="CollectTrackingNo"><field name="trackingNo"type="digits">

<prompt>Please tell me the 10

digittracking number of yourpackage.

</prompt></field>

<filled><prompt>

Please wait while I'm checkingthis package's status.

</prompt><submit

next="TrackingInfoReporter.jsp"namelist="trackingNo"/>

</filled></form>

</vxml>

<%// Get tracking number from HTTP post//data:

String trackingNo=request.getParameter("trackingNo");

//// Make JDBC Connection. Perform Query//

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

java.sql.Connection conn;String connurl =

"jdbc:mysql://localhost.localdomain/shipping_events";

String user = "voiceSystem";String pw = "secret234password";conn =DriverManager.getConnection(connurl,user,pw);

Statement stmt = conn.createStatement();ResultSet res;res = stmt.executeQuery("SELECT * FROMevent_log " +

"wherepackage_id='" +

trackingNo + "'order by event_id");

res.last();int nrows = res.getRow();

%>