Métodos

RECOGNIZE

Realiza o reconhecimento de fala de um áudio enviado para o serviço. O conteúdo do áudio deve ser enviado no corpo da mensagem HTTP. O reconhecimento é realizado de forma síncrona e o resultado vem na resposta HTTP.

Requisição

POST /asr-server/rest/recognize/{audio.rate}

HTTP Headers

Accept

(Opcional) Tipo de conteúdo do resultado do reconhecimento. Valores válidos:

  • application/xml
  • application/json

Valor padrão: application/json.

User-Agent Identificação do dispositivo e/ou aplicação que está gerando o áudio. Útil para fins de log de aplicação.
Content-Length Indica o número de bytes do conteúdo
Content-Type

Indica o formato do áudio enviado. Formatos válidos:

  • audio/wav – arquivos no formato WAV
  • audio/raw – áudio puro sem cabeçalho
  • application/octet-stream – áudio puro sem cabeçalho
  • application/x-www-form-urlencode

O reconhecimento de fala pode ser configurado para se adaptar às características específicas da aplicação. A configuração é feita através de parâmetros definidos como headers da requisição HTTP. A lista dos parâmetros é encontrada em Parâmetros de reconhecimento

Parâmetros da requisição

audio.rate

indica a taxa do áudio que se está enviando. Permite que o serviço utilize o modelo acústico adequado para o reconhecimento. Valores possíveis:

  • 8k - áudio de 8kHz
  • 16k - áudio de 16kHz
lm

URI do modelo de língua. Caso não seja informada, será retornado um erro. A URI deve possuir um dos prefixos abaixo:

Resultado

O resultado do reconhecimento é um objeto que possui a seguinte estrutura:

recognition_result

  • alternatives
  • result_status

alternatives: lista com os resultados prováveis do reconhecimento

  • index: índice da alternativa de resultado
  • text: texto reconhecimento
  • score: pontuação ou índice de confiança
  • interpretations: lista com os resultados da interpretação, conforme definido na gramática. Em caso de modelo de língua de fala livre, essa lista é vazia.

result_status: estado do reconhecimento. Pode ser um dos valores abaixo:

result_status Descrição
RECOGNIZED reconhecimento realizado com sucesso
NO_MATCH reconhecimento realizado com sucesso mas sem correspondência na gramática
NO_INPUT_TIMEOUT o reconhecimento não detectou o início de fala antes do vencimento do temporizador
EARLY_SPEECH o áudio recebido não possui trecho de silêncio inicial (a fala começou antes do início do reconhecimento)
MAX_SPEECH o servidor recebeu uma quantidade de áudio maior do que a capacidade de processamento
RECOGNITION_TIMEOUT não foi possível gerar um resultado final antes do vencimento do temporizador
NO_SPEECH não foi possível detectar fala no áudio enviado
CANCELED o reconhecimento foi cancelado
FAILURE falha não específica no servidor

Exemplos

Chamada REST:

curl -X POST \
  --user username:passwd \
  --header "Content-Type: audio/wav" \
  --data-binary '@bank-transfira-8k.wav' \
  https://speech.cpqd.com.br/asr/rest/v1/recognize/8k?lm=builtin:grammar/samples/bank

Resultado JSON:

{
  "alternatives": [{
      "index": 0,
      "text": "transfira seis mil novecentos e trinta e sete reais para conta corrente",
      "score": 99,
      "interpretations": [{
        "action": "TRANSFERENCIA",
        "money": 6937,
        "to_account_type": "CONTA_CORRENTE"
      }]
    },
    {
      "index": 1,
      "text": "transfira seis mil novecentos e trinta e sete reais para a conta corrente",
      "score": 93,
      "interpretations": [{
        "action": "TRANSFERENCIA",
        "money": 6937,
        "to_account_type": "CONTA_CORRENTE"
      }]
    },
    {
      "index": 2,
      "text": "transfira seis mil novecentos e trinta e sete reais pra conta corrente",
      "score": "92",
      "interpretations": [{
        "action": "TRANSFERENCIA",
        "money": 6937,
        "to_account_type": "CONTA_CORRENTE"
      }]
    }
  ],
  "result_status": "RECOGNIZED"
}

Resultado XML:

<?xml version="1.0" encoding="UTF-8"?>
<recognition_result>
  <alternatives>
    <alternative>
      <index>0</index>
      <text>transfira seis mil novecentos e trinta e sete reais para conta corrente</text>
      <score>99</score>
      <interpretations>
        <interpretation>
          <action>TRANSFERENCIA</action>
          <money>6937</money>
          <to_account_type>CONTA_CORRENTE</to_account_type>
        </interpretation>
      </interpretations>
    </alternative>
    <alternative>
      <index>1</index>
      <text>transfira seis mil novecentos e trinta e sete reais para a conta corrente</text>
      <score>93</score>
      <interpretations>
        <interpretation>
          <action>TRANSFERENCIA</action>
          <money>6937</money>
          <to_account_type>CONTA_CORRENTE</to_account_type>
        </interpretation>
      </interpretations>
    </alternative>
    <alternative>
      <index>2</index>
      <text>transfira seis mil novecentos e trinta e sete reais pra conta corrente</text>
      <score>92</score>
      <interpretations>
        <interpretation>
          <action>TRANSFERENCIA</action>
          <money>6937</money>
          <to_account_type>CONTA_CORRENTE</to_account_type>
        </interpretation>
      </interpretations>
    </alternative>
  </alternatives>
  <result_status>RECOGNIZED</result_status>
</recognition_result>

INTERPRET

Realiza a interpretação semântica de um texto fornecido pelo cliente, usando a gramática indicada, de forma similar a RECOGNIZE. O texto deve ser enviado no corpo da mensagem HTTP. O reconhecimento é realizado de forma síncrona e o resultado vem na resposta HTTP.

Requisição

POST /asr-server/rest/interpret

HTTP Headers

Accept

(Opcional) Tipo de conteúdo do resultado do reconhecimento. Valores válidos:

  • application/xml
  • application/json

Valor padrão: application/json.

User-Agent Identificação do dispositivo e/ou aplicação que está gerando o áudio. Útil para fins de log de aplicação.
Content-Length Indica o número de bytes do conteúdo
Content-Type

Indica o formato do áudio enviado. Formatos válidos:

  • text/plain – conteúdo de texto

Parâmetros da requisição

lm

URI do modelo de língua. Caso não seja informada, será retornado um erro. A URI deve possuir um dos prefixos abaixo:

Resultado

O resultado do reconhecimento é um objeto que possui a seguinte estrutura: