Validação

O Cliente de Validação

A ferramenta mrcp-client, instalada juntamente com o Serviço MRCP do CPqD permite realizar testes locais de síntese e reconhecimento de fala para validar a instalação do Serviço MRCP. Os testes são feitos através de uma CLI própria do cliente MRCP.

Cuidado

A ferramenta não valida configurações de Rede e Firewall.

Para iniciar o cliente MRCP, execute o seguinte comando:

$ /opt/cpqd/mrcp/server/bin/mrcp-client

Ao finalizar os testes de validação, o comando para sair do cliente é:

> quit

Validando o plugin de Síntese

Com a CLI do cliente aberta, execute os seguintes passos:

Teste de Síntese via MRCP v1

> run synth uni1

Espera-se que o evento SPEAK-COMPLETE seja lançado com Completion-Cause = normal:

Session: XXXXXXXXXXXXXXXX
Content-Type: application/mrcp
Content-Length: 68
SPEAK-COMPLETE 1 COMPLETE MRCP/1.0
Completion-Cause: 000 normal

Espera-se que um áudio seja gerado em:

$ /opt/cpqd/mrcp/server/var/synth-8kHz-XXXXXXXXXXXXXXXX.pcm

Teste de Síntese via MRCP v2

> run synth uni2

Espera-se que o evento SPEAK-COMPLETE seja lançado com Completion-Cause = normal:

MRCP/2.0 122 SPEAK-COMPLETE 1 COMPLETE
Channel-Identifier: YYYYYYYYYYYYYYYY@speechsynth
Completion-Cause: 000 normal

Espera-se que um áudio seja gerado em:

/opt/cpqd/mrcp/server/var/synth-8kHz-YYYYYYYYYYYYYYYY.pcm

Reprodução dos áudios dos testes de Síntese

  • Passo a passo para reproduzir os áudios criados nos testes de síntese, via Terminal no Linux.

    • Copie os arquivos para uma máquina Linux local que tenha caixas de som ou fones de ouvido conectado.

    • Então, instale o programa sox, caso não possua:

      $ sudo yum install sox
      
    • Agora, é possível reproduzir os áudios via Terminal:

      play -t raw -r 8000 -c 1 -b 16 -e signed-integer synth-8kHz-XXXXXXXXXXXXXXXX.pcm
      

Dica

Passo a passo para reproduzir os áudios criados nos testes de síntese, via Audacity.

Audacity é um software gratuito de manuseio de áudio disponível para Windows e Linux.

Abra o Audacity e execute os passos:

  • Clicar em: Ficheiro->Importar->Dados Raw… (em inglês: File->Import->Raw Data…)
  • Selecionar o arquivo: Localização/synth-8kHz-XXXXXXXXXXXXXXXX.pcm
  • Selecionar as opções na sequência - Codificação = Signed 16 bit PCM - Sem endianness - 1 canal - 0 bytes - 100 % - 8000 Hz
  • Para escutar, pressionar a tecla «ESPAÇO» ou clicar «Play»
../_images/mrcp-tts-synth-example.png

Exemplo de áudio sintetizado carregado no Audacity

Validando o plugin de Reconhecimento

Com a CLI do cliente aberta, execute os seguintes passos:

Teste de Reconhecimento via MRCP v1

  • Reconhecimento com gramática

    > run recog-grammar uni1
    

    Espera-se que o evento RECOGNITION-COMPLETE seja lançado com Completion-Cause = success e o seguinte XML:

    RECOGNITION-COMPLETE 2 COMPLETE MRCP/1.0
    Completion-Cause: 000 success
    Content-Type: application/x-nlsml
    Content-Length: 240
    
    <?xml version="1.0" encoding="UTF-8"?>
      <result>
        <interpretation grammar="session:request1@form-level" confidence="100">
          <instance>pizza_vegetariana</instance>
          <input mode="speech">eu quero uma pizza vegetariana</input>
        </interpretation>
      </result>
    
  • Reconhecimento com Modelo de Fala Livre. (Somente funcionará se você adquiriu o Modelo de Fala Livre no ASR)

    > run recog-slm uni1
    

    Espera-se que o evento RECOGNITION-COMPLETE seja lançado com Completion-Cause = success e o seguinte XML:

    RECOGNITION-COMPLETE 2 COMPLETE MRCP/1.0
    Completion-Cause: 000 success
    Content-Type: application/x-nlsml
    Content-Length: 286
    
    <?xml version="1.0" encoding="UTF-8"?>
      <result>
        <interpretation grammar="session:request1@form-level" confidence="99">
          <instance>agora ele despenca do teto em direção ao piso</instance>
          <input mode="speech">agora ele despenca do teto em direção ao piso</input>
        </interpretation>
      </result>
    

Teste de Reconhecimento via MRCP v2

  • Reconhecimento com gramática

    > run recog-grammar uni2
    

    Espera-se que o evento RECOGNITION-COMPLETE seja lançado com Completion-Cause = success e o seguinte XML:

    MRCP/2.0 426 RECOGNITION-COMPLETE 2 COMPLETE
    Channel-Identifier: 10fc4272ff8711e7@speechrecog
    Completion-Cause: 000 success
    Content-Type: application/x-nlsml
    Content-Length: 241
    
    <?xml version="1.0" encoding="UTF-8"?>
      <result>
        <interpretation grammar="session:request1@form-level" confidence="1.00">
          <instance>pizza_vegetariana</instance>
          <input mode="speech">eu quero uma pizza vegetariana</input>
        </interpretation>
      </result>
    
  • Reconhecimento com Modelo de Fala Livre. (Somente funcionará se você adquiriu o Modelo de Fala Livre no ASR)

    > run recog-slm uni2
    

    Espera-se que o evento RECOGNITION-COMPLETE seja lançado com Completion-Cause = success e o seguinte XML:

    MRCP/2.0 473 RECOGNITION-COMPLETE 2 COMPLETE
    Channel-Identifier: 4021e0c0ff8711e7@speechrecog
    Completion-Cause: 000 success
    Content-Type: application/x-nlsml
    Content-Length: 288
    
    <?xml version="1.0" encoding="UTF-8"?>
      <result>
        <interpretation grammar="session:request1@form-level" confidence="0.99">
          <instance>agora ele despenca do teto em direção ao piso</instance>
          <input mode="speech">agora ele despenca do teto em direção ao piso</input>
        </interpretation>
      </result>
    

    Dica

    Há várias possibilidades de testes, pois é possível fazer várias combinações. O formato de execução dos testes é dado abaixo:

     > run <TEST-CASE-NAME> [MRCP-VERSION]
    
     ----------------------------------------------------------------------------
     De forma que:
    
       <TEST-CASE-NAME> (obrigatório): é um dos casos de testes da tabela abaixo.
    
       [MRCP-VERSION] (opcional): uni1, para MRCP v1 e uni2, para MRCP v2.
                                  O padrão é uni2.
    
    
    Os casos de teste disponíveis são:
    
    Casos de Teste do Cliente de Validação MRCP
    Testes do plugin MRCP ASR Testes do plugin MRCP TTS
    recog-grammar synth
    recog-slm synth_rosana
    dtmf synth_carlos
      synth_all