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

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 e Síntese de Fala.

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

Síntese de Fala

O CPqD 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: CPqD Texto Fala

Reconhecimento de Fala

O Reconhecimento de Fala do CPqD é 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: CPqD Reconhecimento de Fala