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 definir parâmetros específicos do CPQD. O Vendor-Specific-Parameters tem prioridade sobre parâmetros de configuração, ou seja, o valor informado via API prevalece em relação ao valor do mesmo parâmetro em configuração global.
- hints.words¶
 Trata-se de um «Vendor Parameter» utilizado para adicionar novas palavras ao Modelo de Língua ou aumentar a probabilidade de aparecimento de palavras já existentes. Para isso o usuáro deverá enviar o parâmetro br.com.cpqd.asr.hints.words
MRCP/2.0 145 SET-PARAMS 1 Channel-Identifier: e13c68ea4f5d11ea@speechrecog Vendor-Specific-Parameters: br.com.cpqd.asr.hints.words=mexirica:1.8 [mixirica], siciliano:2, castanha-do-pará
- Textify.enabled¶
 Trata-se de um «Vendor Parameter» utilizado para habilitar a formatação automática de números, datas, horários, etc. Para isso o usuáro deverá enviar o parâmetro br.com.cpqd.asr.textify.enabled
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
- recognitionTimeout.enabled¶
 Trata-se de um «Vendor Parameter» utilizado para habilitar o temporizador recognitionTimeout para o reconhecimento. Para isso o usuáro deverá enviar o parâmetro br.com.cpqd.asr.recognitionTimeout.enabled
MRCP/2.0 145 SET-PARAMS 1 Channel-Identifier: e13c68ea4f5d11ea@speechrecog Vendor-Specific-Parameters: br.com.cpqd.asr.recognitionTimeout.enabled=true
- recognitionTimeout.value¶
 Trata-se de um «Vendor Parameter» utilizado para definir o tempo máximo de espera pelo resultado do reconhecimento em milissegundos. Se o reconhecimento não finalizar até o tempo definido, o sistema finaliza o reconhecimento e retorna RECOGNITION_TIMEOUT. Para isso o usuáro deverá enviar o parâmetro br.com.cpqd.asr.recognitionTimeout.value
MRCP/2.0 145 SET-PARAMS 1 Channel-Identifier: e13c68ea4f5d11ea@speechrecog Vendor-Specific-Parameters: br.com.cpqd.asr.recognitionTimeout.value=30000
- decoder.wordDetails¶
 Trata-se de um «Vendor Parameter» utilizado para controlar a exibição dos detalhes por palavra. Valores válidos: 0-nenhum detalhe, 1-somente o primeiro resultado do n-best, 2-todos os resultados do n-nest. Valor padrão “1”. Para isso o usuáro deverá enviar o parâmetro br.com.cpqd.asr.decoder.wordDetails
MRCP/2.0 145 SET-PARAMS 1 Channel-Identifier: e13c68ea4f5d11ea@speechrecog Vendor-Specific-Parameters: br.com.cpqd.asr.decoder.wordDetails=1
- 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
- Continuous-Mode:¶
 Trata-se de um «Vendor Parameter» utilizado para habilitar o modo de operação contínuo. Desta forma, irá permitir o reconhecimento em modo contínuo até que o usuário envie uma mensagem de Stop interrompendo o reconhecimento. A cada frase reconhecida pelo servidor ASR uma mensagem de INTERMEDIATE-RESULT com o resultado é enviado ao usuário, cada fim de frase é detectado usando-se o parâmentro Speech-Complete-Timeout. No modo contínuo um modelo de fala livre deverá ser sempre utilizado. Um detalhamento do modo contínuo pode ser obtido em: <https://speechweb.cpqd.com.br/asr/docs/latest/user_guide/continuous_mode.html>. Para uso do modo contínuo o usuário deverá enviar o parâmetro br.com.cpqd.asr.Continuous-Mode
MRCP/2.0 145 SET-PARAMS 1 Channel-Identifier: e13c68ea4f5d11ea@speechrecog Vendor-Specific-Parameters: br.com.cpqd.asr.Continuous-Mode=true
Abaixo a troca de mensagem básica do modo contínuo:
Nota
Também é possível ativar o modo contínuo passando uma gramática com o parâmetro mode com o valor continuous, neste caso a gramática será ignorada e será usado o modelo de fala livre. Abaixo exemplo de gramática.
<?xml version="1.0" encoding="utf-8"?> <grammar xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en-US" version="1.0" mode="continuous" root="service"> </grammar>
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  | 
  | 
NO_INPUT_TIMEOUT  | 
002  | 
002  | 
Nenhum pacote de áudio foi recebido no período do No-Input-Timeout  | 
RECOGNITION_TIMEOUT  | 
003  | 
015  | 
  | 
SUCCESS_MAXTIME  | 
—  | 
008  | 
  | 
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-class> <event>EMOTION RESULT</event> <emotion>frustrado</emotion> </emotion-class> </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  | 
INTERMEDIATE-RESULT  | 
X  | 
X  | 
X  | 
Sinaliza um reconhecimento intermediário, quando o modo contínuo está habilitado  |