Conceitos

Nessa seção são apresentados os conceitos principais e abreviaturas utilizadas ao longo da documentação.

Abreviaturas

ASR

Automatic Speech Recognition (Reconhecimento Automático de Fala)

CLI

Command Line Interface (Interface de Linha de Comando)

dB

Decibéis (unidade logarítmica que indica a proporção entre quantidades de uma mesma grandeza física)

IETF

Internet Engineering Task Force (Força-tarefa de Engenharia da Internet)

IP Addr

Endereçamento IPv4 (Internet Protocol versão 4)

kHz

KiloHertz, unidade de medida que expressa mil ciclos por segundo

MRCP

Media Resource Control Protocol (Protocolo de Controle de Recursos de Mídia)

NLSML

Natural Language Semantics Markup Language (Linguagem de Marcação Semântica de Linguagem Natural)

PCM

Pulse Code Modulation (Modulação de Código de Pulso)

PCMA

PCM com algoritmo de «compansão» lei-A

PCMU

PCM com algoritmo de «compansão» lei-u

RTP

Real-Time Transport Protocol (Protocolo de Transport em Tempo Real)

RTSP

Real-Time Streaming Protocol (Protocolo de Transmissão em Tempo Real)

SDP

Session Description Protocol

SIP

Session Initiation Protocol (Protocolo de Iniciação de Sessão)

SLM

Statistical Language Model (Modelo de Língua Estatístico)

SSML

Speech Synthesis Markup Language (Linguagem de Marcação de Síntese de Fala)

TCP

Transmission Control Protocol (Protocolo de Controle de Transmissão)

TTS

Síntese de fala, do inglês: Text-To-Speech

URA

Unidade de Resposta Audível (em inglês, «IVR»: Interactive Voice Response)

URI

Uniform Resource Identifier (Identificador de Recurso Uniforme)

O protocolo MRCP com gRPC

O Servidor MRCP do CPQD segue as especificações das duas versões do MRCP padronizadas pela IETF, a versão 1 e a versão 2.

O Servidor MRCP do CPQD suporta ambas versões do protocolo, e possui integração com nossas soluções de Reconhecimento de Fala, Síntese de Fala e Biometria de Voz.

O MRCPv1 utiliza o protocolo de controle RTSP (Real Time Streaming Protocol) para estabelecer conexões (sessões) nas solicitações síntese e reconhecimento, enquanto o MRCPv2 conta com o protocolo SIP e com SDP para trocar parâmetros associadas a um diálogo. Sendo o SIP, responsável pelo estabelecimento e a interoperabilidade do diálogo.

Para realizar o transporte de áudio nas sessões (Media Session), é designado o protocolo RTP, na taxa de 8KHz (oito kilo hertz), codificação PCMA ou PCMU (8 bits por amostra).

A Biometria de Voz é somente suportada pela versão 2 do protocolo MRCP.

Esta versão MRCP gRPC traz a evolução do Servidor MRCP CPQD com a utilização da tecnologia gRPC (google Remote Procedure Call) representando um avanço significativo na modernização e eficiência dos sistemas de comunicação. Esta transição traz uma série de benefícios que aprimoram desempenho, escalabilidade, interoperabilidade e segurança das aplicações.

Síntese de Fala

O Texto Fala é um framework de conversão de texto em fala desenvolvido pelo CPQD. O mesmo é referenciado como TTS em alguns momentos. A Síntese de Fala é uma tecnologia que permite a uma máquina gerar uma onda de áudio com uma fala gerada a partir de um texto.

Para que a síntese seja realizada, é preciso informar ao sintetizador o texto a ser sintetizado. Na solução do CPQD, este texto pode ser das seguintes formas:

  • Texto com markup SSML.

    Formato: application/ssml+xml. Exemplo:

<?xml version="1.0"?>
<speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
        http://www.w3.org/TR/speech-synthesis11/synthesis.xsd"
        xml:lang="pt-BR">
        Notícias da <sub alias="Organização das Nações Unidas">ONU</sub>!
</speak>
  • Texto puro.

    Formato: text/plain. Exemplo:

Organização das Nações Unidas

Mais informações sobre o nosso TTS, acesse: Texto Fala

Reconhecimento de Fala

O Reconhecimento de Fala é um mecanismo de conversão de fala para texto desenvolvido pelo CPQD. O mesmo é referenciado como ASR em alguns momentos.

Para que o reconhecimento seja realizado, é preciso informar ao reconhecedor, além do áudio, o Modelo De Língua que se deseja utilizar. Na solução do CPQD, a indicação do modelo pode ser das seguintes formas:

  • Modelo de Fala Livre, SLM.

    Formato: text/uri-list. Exemplo:

builtin:slm/general
  • Gramática com interpretação semântica, arquivo fonte ou gramática compilada. Para arquivo fonte, a extensão do arquivo deve ser .gram (ABNF) ou .grxml (XML).

    Formato: text/uri-list. Exemplos:

http://some-host.com/my-grammar.gram
file:///opt/grammars/my-comp-gram/
  • Gramática com interpretação semântica. Fonte em formato ANBF.

    Formato: application/srgs. Exemplo:

#ABNF 1.0 UTF-8;
language pt-BR;
tag-format <semantics/1.0-literals>;
mode voice;

// ==================================================
// Sample grammar: pizza.gram
// This is a grammar used to order pizza.
// ==================================================

root $order;

$order = [$want] $pizza [por favor | por gentileza];

$want = [eu] (quero | queria | gostaria de) [uma];

$pizza = [pizza | de | pizza de] $flavor;

$flavor =   queijo {pizza_queijo} |
            portuguesa {pizza_portuguesa} |
            toscana {pizza_toscana};

// ===================================================
  • Gramática com interpretação semântica. Fonte em formato XML.

    Formato: application/srgs+xml. Exemplo:

<?xml version="1.0" encoding="utf8"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar"
  mode="voice"
  root="order"
  tag-format="semantics/1.0-literals"
  xml:lang="pt-BR" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd">
  <rule id="order">
    <item repeat="0-1">
      <item>
        <ruleref uri="#want"/>
      </item>
    </item>
    <ruleref uri="#pizza"/>
    <item repeat="0-1">
      <one-of>
        <item>por favor</item>
        <item>por gentileza</item>
      </one-of>
    </item>
  </rule>
  <rule id="want">
    <item repeat="0-1">
      <item>eu</item>
    </item>
    <one-of>
      <item>quero</item>
      <item>queria</item>
      <item>gostaria de</item>
    </one-of>
    <item repeat="0-1">
      <item>uma</item>
    </item>
  </rule>
  <rule id="pizza">
    <item repeat="0-1">
      <one-of>
        <item>pizza</item>
        <item>de</item>
        <item>pizza de</item>
      </one-of>
    </item>
    <ruleref uri="#flavor"/>
  </rule>
  <rule id="flavor">
    <one-of>
      <item>queijo
        <tag>pizza_queijo</tag>
      </item>
      <item>portuguesa
        <tag>pizza_portuguesa</tag>
      </item>
      <item>toscana
        <tag>pizza_toscana</tag>
      </item>
    </one-of>
  </rule>
</grammar>

Mais informações sobre o nosso ASR, acesse: Reconhecimento de Fala

Biometria de Voz

A Biometria de Voz do CPQD realiza a confirmação da identidade de um locutor através de sua voz. Para isso o sistema possibilita o cadastro de amostras de voz (método de treinamento) para geração dos voiceprints que serão utilizados posteriormente, na processo de confirmação de identidade (método de verificação).

Mais informações sobre a Biometria de Voz, acesse Biometria de voz