Configuração

Como configurar:

A configuração deve ser realizada via API Rest na criação do job (upload do arquivo de mídia).

Na requisição o parâmetro config recebe uma lista de valores de texto, com a configuração.

Exemplos de chamadas curl:

  • Exemplo para habilitar o classificador descritor e adicionar palavras no Word Hints:
curl -X POST "http://localhost:8000/trd/v3/job/create" \
 -H "accept: application/json" \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: multipart/form-data" \
 -F "upload_file=@<file_path>;type=audio/wav" \
 -F "config=diarization.descriptor.enabled=True" \
 -F "config=recognition.hints.words=mexirica"

ou então:

curl -X POST "http://localhost:8000/trd/v3/job/create" \
 -H "accept: application/json" \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: multipart/form-data" \
 -F "upload_file=@<file_path>;type=audio/wav" \
 --form-string "config=diarization.descriptor.enabled=True,recognition.hints.words=mexirica"
  • Exemplo para configurar múltiplas callback no webhook:
curl -X POST "http://localhost:8000/trd/v3/job/create" \
 -H "accept: application/json" \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: multipart/form-data" \
 -F "upload_file=@<file_path>;type=audio/wav" \
 -F "callback_urls=https://172.19.0.9:8443/callback1" \
 -F "callback_urls=https://172.19.0.9:8443/callback2"

ou então:

curl -X POST "http://localhost:8000/trd/v3/job/create" \
 -H "accept: application/json" \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: multipart/form-data" \
 -F "upload_file=@<file_path>;type=audio/wav" \
 --form-string "callback_urls=https://172.19.0.9:8443/callback1,https://172.19.0.9:8443/callback2"
  • Exemplo para habilitar os classificadores de fala e adicionar word-hints:
curl -X POST "http://localhost:8000/trd/v3/job/create" \
 -H "accept: application/json" \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: multipart/form-data" \
 -F "upload_file=@<file_path>;type=audio/wav" \
 --form-string "config=recognition.tasks=emotion;age;gender,recognition.hints.words=mexirica:1.8 [mixirica]; siciliano:2; castanha-do-pará"

Criação de Token de autenticação:

Agora para acessar as APIs do transcritor de dialogos será necessario enviar junto as requisições um token de acesso a partir do cabeço Authentication do protocolo HTTP em formato Bearer.

Para criar esse token o usuario deve possuir um usuario e senha fornecidos pelo CPQD. Em posse dessas credenciais o usuario deve fazer uma requisição ao nosso servidores de licença para que o token de acesso possa ser gerado, seguindo o exemplo abaixo:

Exemplos da criação do token:

curl --location --request POST 'https://<SL_URL>' \
 --header 'Authorization: Basic Z0dLaUU1ZkMwY3FNN05ON3pEZTBRaDdjOm9NTGVGaVVVMT'

Note que a SL_URL será fornecida em conjunto com as credenciais, alem disso essas credenciais devem seguir o formato Basic como definido na RFC 7617.

Cabeçalho de validadação de requisição

O transcritor de diálogos fornece um mecanismo de dupla validação para uma melhor garantia da qualidade e integridade de áudios enviados. O usuário pode fornecer uma hash md5 a partir do cabeçalho Content-MD5 como descrito no exemplo abaixo.

O algoritmo é descrito com mais detalhes em RFC 1321.

Exemplo:

curl --location --request POST 'http://localhost:8000/trd/v3/job/create' \
 --header 'content-md5: 18eef3c06a975dc8cd1adad4ae662824'

Configurações disponíveis:

Geral

sample_rate_hertz

Descrição: Taxa de amostragem do áudio em hertz. Se o áudio não estiver com a taxa informada, será feito o resampling do áudio.
Deve ser utilizado em conjunto com o parâmetro recognition.lm. Deve ser escolhido um modelo de reconhecimento de fala compatível com a taxa de amostragem.

Valores: Número (int) 8000 ou 16000. Valor padrão: 8000

Exemplo:

sample_rate_hertz=16000

Diarização

diarization.vad.chunk_max_silence

Descrição: Limite máximo de silêncio em segundos. Parâmetro para uso interno.

Valores: Número (float). Valor padrão: 1200.0

Exemplo:

diarization.vad.chunk_max_silence=1200.0

diarization.vad.chunk_max_length

Descrição: Limite máximo de áudio em segundos. Parâmetro para uso interno.

Valores: Número (float). Valor padrão: 3600.0

Exemplo:

diarization.vad.chunk_max_length=3600.0

diarization.vad.dual_tone.enabled

Descrição: Habilita o detector de tons (DTMF). Os tons detectados serão considerados silêncio e removidos da transcrição.

Valores: True ou False. Valor padrão: False

Exemplo:

diarization.vad.dual_tone.enabled=True

Quando habilidado, os tons detectados serão identificados na resposta da transcrição como exemplo abaixo:

{
    "job": {
      "id": "62fce6c34c147c85fe7b7213",
      "status": "COMPLETED",
      "media": {
        "output": {
          "channels": [
            {
              "channel": 1,
              "dtmf": [
                {
                  "start": 0,
                  "end": 0.19125,
                  "row_freq": 697,
                  "col_freq": 1209,
                  "value": "1"
                },
                {
                  "start": 0.306,
                  "end": 0.51,
                  "row_freq": 697,
                  "col_freq": 1336,
                  "value": "2"
                },
                {
                  "start": 0.62475,
                  "end": 0.82875,
                  "row_freq": 697,
                  "col_freq": 1477,
                  "value": "3"
                },
                {
                  "start": 0.9435,
                  "end": 1.1475,
                  "row_freq": 770,
                  "col_freq": 1209,
                  "value": "4"
                },
                {
                  "start": 1.26225,
                  "end": 1.46625,
                  "row_freq": 770,
                  "col_freq": 1336,
                  "value": "5"
                },
                {
                  "start": 1.581,
                  "end": 1.785,
                  "row_freq": 770,
                  "col_freq": 1477,
                  "value": "6"
                },
                {
                  "start": 1.89975,
                  "end": 2.10375,
                  "row_freq": 852,
                  "col_freq": 1209,
                  "value": "7"
                },
                {
                  "start": 2.2185,
                  "end": 2.4225,
                  "row_freq": 852,
                  "col_freq": 1336,
                  "value": "8"
                },
                {
                  "start": 2.53725,
                  "end": 2.74125,
                  "row_freq": 852,
                  "col_freq": 1477,
                  "value": "9"
                }
              ]
            }
          ]
        }
      }
    }
}
Campos DTMF:
  • start (float): Índice de início em segundos.
  • end (float): Índice de fim em segundos.
  • row_freq (int): Frequência da linha do tom DTMF.
  • col_freq (int): Frequência da coluna do tom DTMF.
  • value (string) (opcional): Identificação do DTMF.

diarization.vad.dual_tone.min_duration

Descrição: Duração minima para considerar um tom DTMF válido.

Valores: Número (float). Valor padrão 0.012 (12 milisegundos).

diarization.vad.dual_tone.factor_energy

Descrição: Fator de energia.

Valores: Número (float). Valor padrão 0.5

diarization.vad.dual_tone.twist_energy

Descrição: Energia.

Valores: Número (float). Valor padrão 0.251 (-6dB)

diarization.vad.dual_tone.reverse_twist_energy

Descrição: Energia reversa.

Valores: Número (float). Valor padrão 0.158 (-8dB)

diarization.vad.dual_tone.digits_size

Descrição: Quantidade de tons DTMF reconhecidos em sequência para ativar um tom válido.

Valores: Número (int). Valor padrão 4.

diarization.clustering.enabled

Descrição: Habilita ou desabilita a etapa de clusterização.

Valores: True ou False. Valor padrão: True

Exemplo:

diarization.clustering.enabled=False

diarization.clustering.threshold

Descrição: Limiar de clusterização. Parâmetro para uso interno.

Valores: Número (float). Valor padrão: -0.4

Exemplo:

diarization.clustering.threshold=-0.4

diarization.clustering.speakers

Descrição: Número de locutores em cada canal do arquivo de áudio. Ao utilizar este parâmetro, o «diarization.clustering.threshold» não terá efeito.

Valores: Número (int). Valor padrão: None

Exemplo:

diarization.clustering.speakers=2

diarization.descriptor.enabled

Aviso

Descritor está em fase experimental.

Descrição: Habilita ou desabilita o classificador de descrição.

Valores: True ou False. Valor padrão: False

Exemplo:

diarization.descriptor.enabled=True

Resultado: O resultado é retornado em conjunto com a transcrição em «descriptor».

Reconhecimento de Fala

recognition.lm

Descrição: Configura o Modelo de língua a ser utilizado no reconhecimento.

Valores: Texto/URI. Valor padrão: builtin:slm/callcenter-small

Exemplo:

recognition.lm=builtin:slm/callcenter-small

recognition.textify.enabled

Descrição: Habilita a formatação automática de números, datas, horários, etc.

Valores: True ou False. Valor padrão: False

Exemplo:

recognition.textify.enabled=True

recognition.hints.words

Descrição: Adiciona novas palavras ao Modelo de Língua ou aumenta a probabilidade de aparecimento de palavras já existentes.

Valores: Lista de palavras com ou sem atributos de boost ou pronúncia. Cada atributo deve estar separada por ponto e vírgula (;). Default: vazio.

Formato:

<palavra>:<boost> [<pronúncia>]; <palavra>:<boost> [<pronúncia>]; ...

Aviso

  • A pronúncia deve sempre estar entre colchetes [ ], e não deve haver espaço entre os colchetes e a pronúncia escrita dentro deles.
  • Cada palavra, com seus atributos, deve estar separada por ponto e vírgula (;).
  • A cada palavra só pode ser atribuída uma pronúncia. Caso deseje mais de uma pronúncia por palavra, é necessário repetir a palavra.
  • A palavra só pode conter letras e traço

Exemplo:

recognition.hints.words=mexirica:1.8 [mixirica];siciliano:2;castanha-do-pará

recognition.decoder.maxSentences

Descrição: Número máximo de resultados prováveis gerados pelo reconhecimento (sentenças alternativas).

Valores: Número inteiro maior que zero. Valor padrão: 1.

Exemplo:

recognition.decoder.maxSentences=10

recognition.decoder.wordDetails

Descrição: Controla a exibição dos detalhes por palavra.

Valores: Inteiro (0, 1, 2). Valor padrão “1”.

  1. Nenhum detalhe,
  2. Somente o primeiro resultado do n-best,
  3. Todos os resultados do n-best.

Exemplo:

recognition.decoder.wordDetails=2

recognition.tasks

Aviso

Os Classificadores estão em fase experimental. O desempenho e formato dos resultados podem sofrer modificações.

Descrição: Habilita os classificadores de fala.

Valores: Lista de texto com o nome do classificador, separado por ponto e vírgula(;). Valor padrão: vazio

  • emotion: Habilita classificador de emoção.
  • age: Habilita classificador de idade.

Exemplo:

recognition.tasks=emotion;age;gender

Resultado: Para cada classificador é adiciona uma chave dentro de «task_results» de cada segmento no resultado da transcrição. Resultado Agregado: Adicionado um novo campo aggregate_results na estrutura principal do resultado da transcrição. Os classificadores são agregados por canal e locutor.

Webhook

callback_urls

Descrição: Configuração da callback do webhook.

Valores: Lista de URL. Valor padrão: vazio

Aviso

Deve ser utilizado https seguro.

Exemplo:

callback_urls=https://172.19.0.9:8443/callback1