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

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

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

Validando o plugin de Verificação para Biometria de Voz

Teste de Verificação (treinamento) via MRCP v2

Nota

No MRCP o Cadastro Biométrico é uma verificação de treinamento.

Editar o arquivo /opt/cpqd/mrcp/server/conf/umc-scenarios/verifier.xml para ajustar repository-uri com a URI do repositório, verification-mode para enroll, deixar vazio voiceprint-identifier e audio-source para o arquivo de áudio desejado que deve estar no diretório /opt/cpqd/mrcp/server/data/

<?xml version="1.0" encoding="UTF-8"?>
<umcscenario name="verify" class="Verifier" profile="uni2">
  <resource-discovery enable="0"/>
  <verify repository-uri="http://service-repository-teste:9090" verification-mode="enroll" voiceprint-identifier="" audio-source="slm-despenca-8k.raw"/>
  <termination enable="1">
        <capabilities>
          <codec name="LPCM" rates="8000 16000"/>
        </capabilities>
  </termination>
</umcscenario>

Executar o mrcp-client e chamar o scenario de verificação:

/opt/cpqd/mrcp/server/bin/mrcp-client
> run verify

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

MRCP/2.0 541 VERIFICATION-COMPLETE 2 COMPLETE
Channel-Identifier: f724a69e1af111f0@speakverify
Completion-Cause: 000 success
Content-Type: application/nlsml+xml
Content-Length: 353

<?xml version="1.0" encoding="UTF-8"?>
        <result >
                <verification-result>
                        <voiceprint id="435509305551095808" adapted="false" >
                                <cumulative>
                                  <utterance-length>3210</utterance-length>
                                  <device>unknown</device>
                                  <gender>unknown</gender>
                                  <decision>accepted</decision>
                                  <verification-score>1.00</verification-score>
                                </cumulative>
                        </voiceprint>
                </verification-result>
        </result>

Teste de Verificação (verificação) via MRCP v2

Editar o arquivo /opt/cpqd/mrcp/server/conf/umc-scenarios/verifier.xml para ajustar repository-uri com a URI do repositório, verification-mode para verify, voiceprint-identifier com um id de voiceprint existente e audio-source para o arquivo de áudio desejado que deve estar no diretório /opt/cpqd/mrcp/server/data/

<?xml version="1.0" encoding="UTF-8"?>
<umcscenario name="verify" class="Verifier" profile="uni2">
  <resource-discovery enable="0"/>
  <verify repository-uri="http://service-repository-teste:9090" verification-mode="enroll" voiceprint-identifier="432181923230517248" audio-source="slm-despenca-8k.raw"/>
  <termination enable="1">
        <capabilities>
          <codec name="LPCM" rates="8000 16000"/>
        </capabilities>
</umcscenario>

Executar o mrcp-client e chamar o scenario de verificação:

/opt/cpqd/mrcp/server/bin/mrcp-client
> run verify

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

MRCP/2.0 645 VERIFICATION-COMPLETE 2 COMPLETE
Channel-Identifier: 47da59901af111f0@speakverify
Completion-Cause: 000 success
Content-Type: application/nlsml+xml
Content-Length: 457

<?xml version="1.0" encoding="UTF-8"?>
  <result >
        <verification-result>
          <voiceprint id="432181923230517248" adapted="false" >
                <cumulative>
                  <utterance-length>3210</utterance-length>
                  <device>unknown</device>
                  <gender>unknown</gender>
                  <decision>rejected</decision>
                  <biometric_decision>accepted</biometric_decision>
                  <antispoofing_decision>rejected</antispoofing_decision>
                  <verification-score>1.00</verification-score>
                </cumulative>
          </voiceprint>
  </verification-result>
</result>