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 |
|
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-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 |