Interface MRCP para ASR

Campos de cabeçalho para Reconhecimento

A tabela abaixo descreve os campos de cabeçalho disponíveis no Servidor MRCP do CPQD para o recurso de ASR. Os métodos estão divididos em dois grupos:

«Requisição»

Significa que a mensagem será trocada no sentido Cliente -> Servidor

«Resposta»

Significa que a mensagem será trocada no sentido Servidor -> Cliente

Header

Versão do MRCP

PARAMS

Eventos

Métodos

v1

v2

SET/GET

Requisição

Resposta

Content-ID

X

X

NÃO

-

RECOGNIZE DEFINE-GRAMMAR

-

Completion-Cause

X

X

NÃO

RECOGNITION-COMPLETE

-

RECOGNIZE DEFINE-GRAMMAR

Confidence-Threshold

X

X

SIM

-

RECOGNIZE GET-RESULT

-

N-Best-List-Length

X

X

SIM

-

RECOGNIZE GET-RESULT

-

No-Input-Timeout

X

X

SIM

-

RECOGNIZE

-

Recognition-Timeout

X

X

SIM

-

RECOGNIZE

-

Recognizer-Start-Timers

X

-

SIM

-

RECOGNIZE

-

Start-Input-Timers

-

X

SIM

-

RECOGNIZE

-

Speech-Complete-Timeout

X

X

SIM

-

RECOGNIZE

-

DTMF-Interdigit-Timeout

X

X

SIM

-

RECOGNIZE

-

DTMF-Term-Char

X

X

SIM

-

RECOGNIZE

-

Vendor-Specific-Parameters

X

X

SIM

-

RECOGNIZE

-

Parâmetros de Configuração

Os parâmetros abaixo descritos podem ser configurados via SET-PARAMS (válido para toda a sessão) e RECOGNIZE (válido somente para o Reconhecimento corrente).

Confidence-Threshold

O Confidence-Threshold determina o valor mínimo de score (índice de confiança) aceitável para se ter um Reconhecimento de sucesso. Qualquer alternativa obtida no Reconhecimento com score menor que o Confidence-Threshold é descartada. Se nenhuma alternativa com score maior ou igual ao Confidence-Threshold for obtida no Reconhecimento, o retorno será «NO-MATCH».

Domínio

MRCP v1: número inteiro entre 0 e 100. MRCP v2: número decimal entre 0,0 e 1,0. (valor default = 30%)

N-Best-List-Length

O N-Best-List-Length determina a quantidade máxima de alternativas que podem ser retornadas no Reconhecimento.

Domínio

Número inteiro, positivo (valor default = 1)

No-Input-Timeout

O No-Input-Timeout determina o tempo máximo que o ASR aguardará até o evento de início de fala. Se o parâmetro Start-Input-Timers estiver habilitado no envio da mensagem RECOGNIZE, o No-Input-Timeout começará a contar desde então. Se o parâmetro Start-Input-Timers estiver desabilitado no envio da mensagem RECOGNIZE, o No-Input-Timeout começará a contar a partir do envio da mensagem START-INPUT-TIMERS. Se estourar o No-Input-Timeout, o evento RECOGNITION-COMPLETE será disparado com Completion-Cause igual a «no-input-timeout» (002).

Domínio

Número inteiro, positivo em milissegundos (valor default = 10000)

Recognition-Timeout

O Recognition-Timeout determina o tempo máximo entre o evento de início de fala e a entrega de um resultado. Se estourar o Recognition-Timeout, o evento RECOGNITION-COMPLETE será disparado com Completion-Cause igual a «recognition-timeout» (003 no MRCP v1), «no-match-maxtime» (015 no MRCP v2) em caso de nenhum reconhecimento e «success-maxtime» (008 no MRCP v2) em caso de algum reconhecimento até o estouro da temporização.

Domínio

Número inteiro, positivo em milissegundos (valor default = 30000)

Start-Input-Timers (Recognizer-Start-Timers no MRCP v1)

Inicia automaticamente a contagem do No-Input-Timeout juntamente com o recebimento da mensagem RECOGNIZE. Se desativado, o No-Input-Timeout será iniciado de forma manual, no recebimento da mensagem START-INPUT-TIMERS, se MRCP v2 ou RECOGNITION-START-TIMERS, se MRCP v1.

Domínio

Booleano (valor default = true)*

Speech-Complete-Timeout

O Speech-Complete-Timeout determina a duração do silêncio dentro do áudio para a detecção do fim da fala.

DTMF-Interdigit-Timeout

Determina o tempo para aguardar o próximo dígito DTMF.

DTMF-Term-Char

Especifica o caractere esperado para finalizar a detecção do DTMF.

Vendor-Specific-Parameters

Utilizado para configurar parâmetros específicos do CPQD. O Vendor-Specific-Parameters tem prioridade sobre os outros parâmetros.

Exemplo para habilitar o textify usando o metodo SET-PARAMS:

MRCP/2.0 145 SET-PARAMS 1
Channel-Identifier: e13c68ea4f5d11ea@speechrecog
Vendor-Specific-Parameters: br.com.cpqd.asr.textify.enabled=true
Account-Tag

Trata-se de um «Vendor Parameter» utilizado para marcação nos bilhetes de cobrança para uso do cliente. Desta forma, irá permitir a identificação customizada da origem da solicitação de reconhecimento. Para isso o usuáro deverá enviar o parâmetro br.com.cpqd.asr.licenseManager.accountTag

MRCP/2.0 145 SET-PARAMS 1
Channel-Identifier: e13c68ea4f5d11ea@speechrecog
Vendor-Specific-Parameters: br.com.cpqd.asr.licenseManager.accountTag=Cliente-Um
Infer-age-enabled

Trata-se de um «Vendor Parameter» utilizado para habilitar a classificação da idade do locutor. Desta forma, irá permitir uma estimativa da idade do locutor. Para isso o usuário deverá enviar o parâmetro br.com.cpqd.asr.Infer-age-enabled

MRCP/2.0 145 SET-PARAMS 1
Channel-Identifier: e13c68ea4f5d11ea@speechrecog
Vendor-Specific-Parameters: br.com.cpqd.asr.Infer-age-enabled=true
Infer-gender-enabled

Trata-se de um «Vendor Parameter» utilizado para habilitar a classificação de gênero do locutor. Desta forma, irá permitir o reconhecimento de gênero do locutor. Para isso o usuário deverá enviar o parâmetro br.com.cpqd.asr.Infer-gender-enabled

MRCP/2.0 145 SET-PARAMS 1
Channel-Identifier: e13c68ea4f5d11ea@speechrecog
Vendor-Specific-Parameters: br.com.cpqd.asr.Infer-gender-enabled=true
Infer-emotion-enabled

Trata-se de um «Vendor Parameter» utilizado para habilitar a classificação de emoção do locutor. Desta forma, irá permitir o reconhecimento de emoção presente na voz do locutor. Para isso o usuário deverá enviar o parâmetro br.com.cpqd.asr.Infer-emotion-enabled

MRCP/2.0 145 SET-PARAMS 1
Channel-Identifier: e13c68ea4f5d11ea@speechrecog
Vendor-Specific-Parameters: br.com.cpqd.asr.Infer-emotion-enabled=true

Completion-Cause

Descrição do Completion-Cause para o evento RECOGNITION-COMPLETE

Result-Status do ASR

MRCP v1

MRCP v2

Descrição

RECOGNIZED

000

000

O reconhecimento ocorreu sem problemas

NO_MATCH

001

001

O reconhecimento não encontrou nenhuma alternativa com confiança acima do

Confidence-Threshold

NO_INPUT_TIMEOUT

002

002

Nenhum pacote de áudio foi recebido no período do No-Input-Timeout

RECOGNITION_TIMEOUT

003

015

O evento START-OF-INPUT foi disparado e o reconhecimento não foi concluído dentro

do período do Recognition-Timeout

SUCCESS_MAXTIME

008

O evento START-OF-INPUT foi disparado, o reconhecimento não foi concluído dentro

do período do Recognition-Timeout, mas existem resultados disponíveis.

Métodos Disponíveis

O Servidor MRCP para ASR suporta as seguintes mensagens:

Métodos

MRCP v1

MRCP v2

Servidor

Descrição

SET-PARAMS

X

X

X

Configura parâmetros do Reconhecimento para toda a sessão

GET-PARAMS

X

X

X

Recupera valores dos parâmetros de Reconhecimento no instante da chamada

DEFINE-GRAMMAR

X

X

X

Define um rótulo do tipo «session:<meu_rotulo>» para uma gramática inline ou URI

RECOGNIZE

X

X

X

Solicita um Reconhecimento dado uma gramática inline, URI ou rotulo do DEFINE-GRAMMAR

INTERPRET

-

X

X

Solicita a interpretação de um texto dado uma gramática inline, URI ou rotulo do DEFINE-GRAMMAR

GET-RESULT

X

X

X

Recupera o resultado (NLSML) do RECOGNIZE anterior

RECOGNITION-START-TIMERS

X

-

X

Dispara a contagem dos timers No-Input-Timeout e Recognition-Timeout para MRCP v1

START-INPUT-TIMERS

-

X

X

Dispara a contagem dos timers No-Input-Timeout e Recognition-Timeout para MRCP v2

STOP

X

X

X

Cancela o Reconhecimento em andamento

Exemplo de retorno do método GET-RESULT com classificadores:

Resultado XML:

<?xml version="1.0" encoding="UTF-8"?>
  <result>
    <interpretation grammar="http://vmh102.cpqd.com.br:8280/asr_dist/repository/grammars/dynamic-gram/pizza.gram" confidence="1.00">
      <instance>pizza_vegetariana</instance>
      <input mode="speech">eu quero uma pizza vegetariana</input>
    </interpretation>
      <age-scores>
        <event>AGE RESULT</event>
        <age>33</age>
        <confidence>low</confidence>
        <prob>
          <p age-range="0-10">0.013056</p>
          <p age-range="10-20">0.029699</p>
          <p age-range="20-30">0.235221</p>
          <p age-range="30-40">0.305626</p>
          <p age-range="40-50">0.287409</p>
          <p age-range="50-60">0.097283</p>
          <p age-range="60-70">0.031703</p>
          <p age-range="70-80">0.000000</p>
          <p age-range="80-90">0.000000</p>
          <p age-range="90-100">0.000003</p>
        </prob>
      </age-scores>
    </result>
<?xml version="1.0" encoding="UTF-8"?>
<result>
  <interpretation grammar="http://vmh102.cpqd.com.br:8280/asr_dist/repository/grammars/dynamic-gram/pizza.gram" confidence="100">
    <instance>pizza_vegetariana</instance>
    <input mode="speech">eu quero uma pizza vegetariana</input>
  </interpretation>
  <gender-scores>
    <event>GENDER RESULT</event>
    <p>
      <p>0.869395</p>
      <p>0.130605</p>
    </p>
    <gender>M</gender>
  </gender-scores>
</result>
<?xml version="1.0" encoding="UTF-8"?>
<result>
  <interpretation grammar="http://vmh102.cpqd.com.br:8280/asr_dist/repository/grammars/dynamic-gram/pizza.gram" confidence="100">
    <instance>pizza_vegetariana</instance>
    <input mode="speech">eu quero uma pizza vegetariana</input>
  </interpretation>
  <emotion-scores>
    <event>EMOTION RESULT</event>
    <emotion>frustrado</emotion>
    <group>negativo_desativado</group>
    <prob>
      <p emotion="amedrontado">0.046413</p>
      <p emotion="ansioso">0.109840</p>
      <p emotion="enojado">0.039938</p>
      <p emotion="entusiasmado">0.019269</p>
      <p emotion="feliz">0.012199</p>
      <p emotion="frustrado">0.511507</p>
      <p emotion="irritado">0.081386</p>
      <p emotion="neutro">0.106116</p>
      <p emotion="surpreso">0.012953</p>
      <p emotion="triste">0.060377</p>
    </prob>
    <prob-groups>
      <p-group group="negativo_ativado">0.081386</p-group>
      <p-group group="negativo_desativado">0.611823</p-group>
      <p-group group="neutro">0.152529</p-group>
      <p-group group="positivo">0.154262</p-group>
    </prob-groups>
  </emotion-scores>
</result>

Eventos Disponíveis

Os eventos do ASR estão descritos na tabela abaixo:

Eventos

MRCP v1

MRCP v2

Servidor

Descrição

START-OF-INPUT

-

X

X

Ocorre quando o reconhecedor detecta Início de Fala

START-OF-SPEECH

X

-

X

Ocorre quando o reconhecedor detecta Início de Fala

RECOGNITION-COMPLETE

X

X

X

Sinaliza que o Reconhecimento foi finalizado

INTERPRETATION-COMPLETE

X

X

X

Sinaliza que a interpretação de texto foi finalizada