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”.
- Nenhum detalhe,
- Somente o primeiro resultado do n-best,
- 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;genderResultado: 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