API de controle do processo de transcrição

A Transcrição de Diálogos possui uma API REST que permite realizar as operações cadastro e transferência de arquivos de áudio, bem como controlar o processo de transcrição dos arquivos. Esta seção tem como objetivo detalhar essas funções que compõem a API REST do servidor de transcrição.

A API do Transcrição de Diálogos é auto-documentada, e pode ser acessada a partir da seguinte URL http://TRD_HOST:8000/trd/v3/docs, onde TRD_HOST é o IP do servidor de funcionamento d a Transc de Diálogos.

Nota

Caso não tenha acesso a um servidor de transcrição a documentação também pode ser acessada a partir do link

Nota

Para acessar o Transcrição de Diálogos na nuvem é necessário possuir um token de acesso.

API JOB síncrona

Aviso

API para desenvolvimento. Não utilize em produção.

Transcrição síncrona de um arquivo, e a duração do arquivo deve ter até 120 segundos. O arquivo é apagado ao final do processo.

Requisição

POST /trd/v3/transcribe
Query
  • Tag (opcional)

Header
  • Authorization

Request Body
  • Arquivo binário

  • Configuração

Response
  • 200 - Resultado da transcrição

  • 400 - Solicitação inválida

  • 401 - Não autorizado

  • 403 - Acesso negado

  • 413 - Arquivo de mídia muito longo ou quantidade de minutos excedida.

  • 422 - Erro de validação

  • 429 - Número de solicitações excedida

  • 503 - Servidor ocupado

Resultado

O resultado é um objeto que denominamos de JOB que possui os seguintes atributos.

  • id: identificador único do processo de transcrição

  • filename: nome do arquivo

  • status: estado do processo de transcrição

  • create_at: timestamp do momento de upload do arquivo

  • started_at: timestamp do inicio do processo de transcrição

  • diarized_at: timestamp do final do processo de diarização

  • completed_at: timestamp do final do processo de transcrição

  • tag: identificador opcional do arquivo

  • callback_urls: endereços para o webhook

  • media: objeto que reuni informações de media do arquivo transcrito, como seu tamanho, numero de canais e formato

  • config: objeto que reuni informações de configuração, dos processo de diarização e reconhecimento

Exemplos

Chamada REST:

curl -X 'POST' \
  'http://localhost:8000/trd/v3/transcribe?tag=tag-novo' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: multipart/form-data' \
  -F 'upload_file=@nasceu.wav;type=audio/x-wav'

Resultado JSON:

{
   "job": {
     "id": "6230c7ea39231fb28999286d",
     "filename": "nasceu.wav",
     "status": "COMPLETED",
     "created_at": "2022-03-15T14:07:54.418000-03:00",
     "started_at": "2022-03-15T14:07:55.607000-03:00",
     "diarized_at": "2022-03-15T14:07:57.810000-03:00",
     "completed_at": "2022-03-15T14:07:58.956000-03:00",
     "tag": "tag-novo",
     "callback_urls": [],
     "callback_failure_reason": "",
     "failure_reason": "",
     "media": {
       "md5": "18eef3c06a975dc8cd1adad4ae662824",
       "size": 72544,
       "input": {
         "sample_rate": 8000,
         "channels": 1,
         "bit_rate": 128000,
         "format": "Wave",
         "codec": "PCM",
         "bandwidth": 3909.2
       },
       "output": {
         "redundant_channel": false,
         "channels": [
           {
             "channel": 1,
             "duration": 4.531,
             "speech": 3.2590000000000003,
             "silence": false
           }
         ]
       }
     },
     "config": {
       "priority": 50,
       "normalization": {},
       "diarization": {
         "vad": {
           "chunk_max_silence": 1200,
           "chunk_max_length": 3600,
           "dual_tone": {
             "enabled": false,
             "row_freq": [
               350,
               697,
               770,
               852,
               941
             ],
             "col_freq": [
               440,
               1209,
               1336,
               1477,
               1633
             ],
             "start_time": 0,
             "stop_time": 5,
             "min_duration": 0.012
           }
         },
         "clustering": {
           "threshold": -0.4,
           "enabled": true
         },
         "descriptor": {
           "enabled": false
         }
       },
       "recognition": {
         "lm": "builtin:slm/callcenter-small",
         "textify": {
           "enabled": false
         },
         "hints_words": [],
         "decoder": {
           "max_sentences": 1,
           "word_details": 1
         },
         "tasks": []
       }
     }
   },
   "segments": [
     {
       "channel": 1,
       "speaker": "1",
       "start": 0.861,
       "end": 4.12,
       "status": "RECOGNIZED",
       "alternatives": [
         {
           "text": "a minha filha nasceu hoje ela tem dez anos",
           "words": [
             {
               "text": "a",
               "score": 98,
               "start_time": 0.000035418154,
               "end_time": 0.08985883
             },
             {
               "text": "minha",
               "score": 100,
               "start_time": 0.08985883,
               "end_time": 0.45
             },
             {
               "text": "filha",
               "score": 100,
               "start_time": 0.45,
               "end_time": 0.87
             },
             {
               "text": "nasceu",
               "score": 100,
               "start_time": 0.87,
               "end_time": 1.3199999
             },
             {
               "text": "hoje",
               "score": 100,
               "start_time": 1.3199999,
               "end_time": 1.77
             },
             {
               "text": "ela",
               "score": 98,
               "start_time": 1.86,
               "end_time": 2.1299999
             },
             {
               "text": "tem",
               "score": 99,
               "start_time": 2.1299999,
               "end_time": 2.339976
             },
             {
               "text": "dez",
               "score": 100,
               "start_time": 2.34,
               "end_time": 2.6699998
             },
             {
               "text": "anos",
               "score": 100,
               "start_time": 2.6699998,
               "end_time": 3.12
             }
           ],
           "score": 99,
           "lm": "builtin:slm/callcenter-small"
         }
       ],
       "task_results": {}
     }
   ]
 }

API JOB assíncrona

Transcrição assíncrona de um arquivo. É criado um processo de transcrição (job) e é iniciado, sendo inserido na fila de processamento.

Requisição

POST /trd/v3/job/create
Query
  • Tag (opcional)

Header
  • Authorization

Request Body
  • Arquivo binário

  • Configuração (opcional)

  • callback_urls: (opcional: api webhook)

Response
  • 200 - Resultado da transcrição

  • 400 - Solicitação inválida

  • 403 - Acesso negado

  • 413 - Arquivo de mídia muito longo ou quantidade de minutos excedida.

  • 422 - Erro de validação

  • 429 - Número de solicitações excedida

  • 503 - Servidor ocupado

Resultado

O resultado é um objeto que denominamos de JOB que possui os seguintes atributos.

  • id: identificador único do processo de transcrição

  • filename: nome do arquivo

  • status: estado do processo de transcrição

  • create_at: timestamp do momento de upload do arquivo

  • tag: identificador opcional do arquivo

  • callback_urls: endereços para o webhook

  • media: objeto que reuni informações de media do arquivo transcrito, como seu tamanho, numero de canais e formato

  • config: objeto que reuni informações de configuração, dos processo de diarização e reconhecimento

Exemplos

Chamada REST:

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=@nasceu.wav;type=audio/x-wav'

Resultado JSON:

{
   "job": {
     "id": "6230c8b739231fb289992870",
     "filename": "nasceu.wav",
     "status": "QUEUED",
     "created_at": "2022-03-15T14:11:19.275927-03:00",
     "callback_urls": [],
     "callback_failure_reason": "",
     "failure_reason": "",
     "media": {
       "md5": "18eef3c06a975dc8cd1adad4ae662824",
       "size": 72544
     },
     "config": {
       "priority": 50,
       "normalization": {},
       "diarization": {
         "vad": {
           "chunk_max_silence": 1200,
           "chunk_max_length": 3600,
           "dual_tone": {
             "enabled": false,
             "row_freq": [
               350,
               697,
               770,
               852,
               941
             ],
             "col_freq": [
               440,
               1209,
               1336,
               1477,
               1633
             ],
             "start_time": 0,
             "stop_time": 5,
             "min_duration": 0.012
           }
         },
         "clustering": {
           "threshold": -0.4,
           "enabled": true
         },
         "descriptor": {
           "enabled": false
         }
       },
       "recognition": {
         "lm": "builtin:slm/callcenter-small",
         "textify": {
           "enabled": false
         },
         "hints_words": [],
         "decoder": {
           "max_sentences": 1,
           "word_details": 1
         },
         "tasks": []
       }
     }
   }
 }

API Lista JOB

Retorna a lista de todos jobs criados.

Requisição

GET /trd/v3/job
Query
  • Tag (opcional): Tag criar um conjunto de arquivos

  • Page (opcional): Número da pagina iniciando em 1

  • Limit (opcional, máximo 1000): Limite da página

Header
  • Authorization

Response
  • 200 - Resultado da consulta

  • 400 - Solicitação inválida

  • 403 - Acesso negado

  • 404 - Não encontrado

  • 422 - Erro de validação

Resultado

O resultado é um objeto que denominamos de JOB que possui os seguintes atributos.

  • page: número da pagina que será retornada

  • limit: número de item resultantes por pagina

  • total: número total de jobs

  • result: lista com todos os jobs

Chamada REST:

curl -X 'GET' \
  'http://localhost:8000/trd/v3/job?page=1&limit=100' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>'

Resultado JSON:

{
  "page": 1,
  "limit": 100,
  "total": 4,
  "results": [
    {
      "job": {
        "id": "6230c6d439231fb289992867",
        "filename": "single.wav",
        "status": "COMPLETED",
        "callback_failure_reason": "",
        "failure_reason": ""
      }
    },
    {
      "job": {
        "id": "6230c70c39231fb28999286a",
        "filename": "single.wav",
        "status": "COMPLETED",
        "tag": "tag-novo",
        "callback_failure_reason": "",
        "failure_reason": ""
      }
    },
    {
      "job": {
        "id": "6230c7ea39231fb28999286d",
        "filename": "nasceu.wav",
        "status": "COMPLETED",
        "tag": "tag-novo",
        "callback_failure_reason": "",
        "failure_reason": ""
      }
    },
    {
      "job": {
        "id": "6230c8b739231fb289992870",
        "filename": "nasceu.wav",
        "status": "COMPLETED",
        "callback_failure_reason": "",
        "failure_reason": ""
      }
    }
  ]
}

API Status JOB

Retorna o status do processo de transcrição.

Requisição

GET /trd/v3/job/status/<id>
Header
  • Authorization

Path
  • id: identificador do processo

Response
  • 200 - Resultado da transcrição

  • 400 - Solicitação inválida

  • 403 - Acesso negado

  • 404 - Não encontrado

  • 422 - Erro de validação

Resultado

O resultado é um objeto que denominamos de JOB que possui os seguintes atributos.

  • id: identificador único do processo de transcrição

  • filename: nome do arquivo

  • status: estado do processo de transcrição

  • create_at: timestamp do momento de upload do arquivo

  • started_at: timestamp do inicio do processo de transcrição

  • diarized_at: timestamp do final do processo de diarização

  • completed_at: timestamp do final do processo de transcrição

  • tag: identificador opcional do arquivo

  • callback_urls: endereços para o webhook

  • media: objeto que reuni informações de media do arquivo transcrito, como seu tamanho, numero de canais e formato

  • config: objeto que reuni informações de configuração, dos processo de diarização e reconhecimento

Exemplos

Chamada REST:

curl -X 'GET' \
  'http://localhost:8000/trd/v3/job/status/6230c8b739231fb289992870' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>'

Resultado JSON:

{
  "job": {
    "id": "6230c8b739231fb289992870",
    "filename": "nasceu.wav",
    "status": "COMPLETED",
    "created_at": "2022-03-15T14:11:19.275000-03:00",
    "started_at": "2022-03-15T14:11:19.520000-03:00",
    "diarized_at": "2022-03-15T14:11:20.768000-03:00",
    "completed_at": "2022-03-15T14:11:21.606000-03:00",
    "callback_urls": [],
    "callback_failure_reason": "",
    "failure_reason": "",
    "media": {
      "md5": "18eef3c06a975dc8cd1adad4ae662824",
      "size": 72544,
      "input": {
        "sample_rate": 8000,
        "channels": 1,
        "bit_rate": 128000,
        "format": "Wave",
        "codec": "PCM",
        "bandwidth": 3909.2
      },
      "output": {
        "redundant_channel": false,
        "channels": [
          {
            "channel": 1,
            "duration": 4.531,
            "speech": 3.2590000000000003,
            "silence": false
          }
        ]
      }
    },
    "config": {
      "priority": 50,
      "normalization": {},
      "diarization": {
        "vad": {
          "chunk_max_silence": 1200,
          "chunk_max_length": 3600,
          "dual_tone": {
            "enabled": false,
            "row_freq": [
              350,
              697,
              770,
              852,
              941
            ],
            "col_freq": [
              440,
              1209,
              1336,
              1477,
              1633
            ],
            "start_time": 0,
            "stop_time": 5,
            "min_duration": 0.012
          }
        },
        "clustering": {
          "threshold": -0.4,
          "enabled": true
        },
        "descriptor": {
          "enabled": false
        }
      },
      "recognition": {
        "lm": "builtin:slm/callcenter-small",
        "textify": {
          "enabled": false
        },
        "hints_words": [],
        "decoder": {
          "max_sentences": 1,
          "word_details": 1
        },
        "tasks": []
      }
    }
  }
}

API Resultado JOB

Obtém o resultado da transcrição de um arquivo finalizado.

Requisição

GET /trd/v3/job/result/<id>
Query
  • format (csv opcional)

Header
  • Authorization

Path
  • id: identificador do processo

Response
  • 200 - Resultado da transcrição

  • 400 - Solicitação inválida

  • 403 - Acesso negado

  • 404 - Não encontrado

  • 422 - Erro de validação

Resultado

Retorna um JSON ou um CSV com a transcrição do arquivo.

  • id: identificador único do processo de transcrição

  • filename: nome do arquivo

  • status: estado do processo de transcrição

  • create_at: timestamp do momento de upload do arquivo

  • started_at: timestamp do inicio do processo de transcrição

  • diarized_at: timestamp do final do processo de diarização

  • completed_at: timestamp do final do processo de transcrição

  • tag: identificador opcional do arquivo

  • callback_urls: endereços para o webhook

  • media: objeto que reuni informações de media do arquivo transcrito, como seu tamanho, numero de canais e formato

  • config: objeto que reuni informações de configuração, dos processo de diarização e reconhecimento

  • segments: lista com os trechos da transcriação

Chamada REST com resultado em json:

curl -X 'GET' \
  'http://localhost:8000/trd/v3/job/result/6230c8b739231fb289992870' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>'

Chamada REST com resultado em csv:

curl -X 'GET' \
  'http://localhost:8000/trd/v3/job/result/6230c8b739231fb289992870?format=csv' \
  -H 'Authorization: Bearer <token>'

Resultado JSON:

{
  "job": {
    "id": "6230c8b739231fb289992870",
    "filename": "nasceu.wav",
    "status": "COMPLETED",
    "created_at": "2022-03-15T14:11:19.275000-03:00",
    "started_at": "2022-03-15T14:11:19.520000-03:00",
    "diarized_at": "2022-03-15T14:11:20.768000-03:00",
    "completed_at": "2022-03-15T14:11:21.606000-03:00",
    "callback_urls": [],
    "callback_failure_reason": "",
    "failure_reason": "",
    "media": {
      "md5": "18eef3c06a975dc8cd1adad4ae662824",
      "size": 72544,
      "input": {
        "sample_rate": 8000,
        "channels": 1,
        "bit_rate": 128000,
        "format": "Wave",
        "codec": "PCM",
        "bandwidth": 3909.2
      },
      "output": {
        "redundant_channel": false,
        "channels": [
          {
            "channel": 1,
            "duration": 4.531,
            "speech": 3.2590000000000003,
            "silence": false
          }
        ]
      }
    },
    "config": {
      "priority": 50,
      "normalization": {},
      "diarization": {
        "vad": {
          "chunk_max_silence": 1200,
          "chunk_max_length": 3600,
          "dual_tone": {
            "enabled": false,
            "row_freq": [
              350,
              697,
              770,
              852,
              941
            ],
            "col_freq": [
              440,
              1209,
              1336,
              1477,
              1633
            ],
            "start_time": 0,
            "stop_time": 5,
            "min_duration": 0.012
          }
        },
        "clustering": {
          "threshold": -0.4,
          "enabled": true
        },
        "descriptor": {
          "enabled": false
        }
      },
      "recognition": {
        "lm": "builtin:slm/callcenter-small",
        "textify": {
          "enabled": false
        },
        "hints_words": [],
        "decoder": {
          "max_sentences": 1,
          "word_details": 1
        },
        "tasks": []
      }
    }
  },
  "segments": [
    {
      "channel": 1,
      "speaker": "1",
      "start": 0.861,
      "end": 4.12,
      "status": "RECOGNIZED",
      "alternatives": [
        {
          "text": "a minha filha nasceu hoje ela tem dez anos",
          "words": [
            {
              "text": "a",
              "score": 98,
              "start_time": 0.00003584186,
              "end_time": 0.0898649
            },
            {
              "text": "minha",
              "score": 100,
              "start_time": 0.0898649,
              "end_time": 0.45
            },
            {
              "text": "filha",
              "score": 100,
              "start_time": 0.45,
              "end_time": 0.87
            },
            {
              "text": "nasceu",
              "score": 100,
              "start_time": 0.87,
              "end_time": 1.3199999
            },
            {
              "text": "hoje",
              "score": 100,
              "start_time": 1.3199999,
              "end_time": 1.77
            },
            {
              "text": "ela",
              "score": 98,
              "start_time": 1.86,
              "end_time": 2.1299999
            },
            {
              "text": "tem",
              "score": 99,
              "start_time": 2.1299999,
              "end_time": 2.3399758
            },
            {
              "text": "dez",
              "score": 100,
              "start_time": 2.34,
              "end_time": 2.6699998
            },
            {
              "text": "anos",
              "score": 100,
              "start_time": 2.6699998,
              "end_time": 3.12
            }
          ],
          "score": 99,
          "lm": "builtin:slm/callcenter-small"
        }
      ],
      "task_results": {}
    }
  ]
}

API Parar JOB

Interrompe o processo de transcrição.

Nota

  • Só é possivel interromper um job com o status em QUEUED ou IN_PROGRESS.

Requisição

POST /trd/v3/job/stop/<id>
Header
  • Authorization

Path
  • id: identificador do processo

Response
  • 200 - Resultado da transcrição

  • 400 - Solicitação inválida

  • 403 - Acesso negado

  • 404 - Não encontrado

  • 422 - Erro de validação

Resultado

Retorna o objeto JOB com o formato JSON com o status do arquivo atualizado.

  • id: identificador único do processo de transcrição

  • filename: nome do arquivo

  • status: estado do processo de transcrição

  • create_at: timestamp do momento de upload do arquivo

  • started_at: timestamp do inicio do processo de transcrição

  • tag: identificador opcional do arquivo

  • callback_urls: endereços para o webhook

  • media: objeto que reuni informações de media do arquivo transcrito, como seu tamanho, numero de canais e formato

  • config: objeto que reuni informações de configuração, dos processo de diarização e reconhecimento

Chamada REST:

curl -X POST 'http://localhost:8000/trd/v3/job/stop/6230cb8a39231fb289992a13' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>'

Resultado JSON:

{
  "job": {
    "id": "6230cb8a39231fb289992a13",
    "filename": "teste1.wav",
    "status": "STOPPED",
    "created_at": "2022-03-15T14:23:22.866000-03:00",
    "completed_at": "2022-03-15T14:23:38.357000-03:00",
    "callback_urls": [],
    "callback_failure_reason": "",
    "failure_reason": "",
    "media": {
      "md5": "c6e28a049070b13e2cd95b2b2f8dc005",
      "size": 108779400
    },
    "config": {
      "priority": 50,
      "normalization": {},
      "diarization": {
        "vad": {
          "chunk_max_silence": 1200,
          "chunk_max_length": 3600,
          "dual_tone": {
            "enabled": false,
            "row_freq": [
              350,
              697,
              770,
              852,
              941
            ],
            "col_freq": [
              440,
              1209,
              1336,
              1477,
              1633
            ],
            "start_time": 0,
            "stop_time": 5,
            "min_duration": 0.012
          }
        },
        "clustering": {
          "threshold": -0.4,
          "enabled": true
        },
        "descriptor": {
          "enabled": false
        }
      },
      "recognition": {
        "lm": "builtin:slm/callcenter-small",
        "textify": {
          "enabled": false
        },
        "hints_words": [],
        "decoder": {
          "max_sentences": 1,
          "word_details": 1
        },
        "tasks": []
      }
    }
  }
}

API Retornar JOB

Inicia um novo processo de transcrição para um arquivo cujo processo foi interrompido ou falhou.

Nota

Só é possivel reprocessar um job que falhou FAILED ou foi interrompido STOPPED.

Requisição

POST /trd/v3/job/retry/<id>
Header
  • Authorization

Path
  • id: identificador do processo

Response
  • 200 - Resultado da transcrição

  • 400 - Solicitação inválida

  • 403 - Acesso negado

  • 404 - Não encontrado

  • 422 - Erro de validação

Resultado

Retorna o objeto JOB com um novo id.

  • id: identificador único do processo de transcrição

  • filename: nome do arquivo

  • status: estado do processo de transcrição

  • create_at: timestamp do momento de upload do arquivo

  • tag: identificador opcional do arquivo

  • callback_urls: endereços para o webhook

  • media: objeto que reuni informações de media do arquivo transcrito, como seu tamanho, numero de canais e formato

  • config: objeto que reuni informações de configuração, dos processo de diarização e reconhecimento

Chamada REST:

curl -X 'POST' \
  'http://localhost:8000/trd/v3/job/retry/6230cb8a39231fb289992a13' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>'

Resultado JSON:

{
  "job": {
    "id": "6230cbcc39231fb289992a14",
    "filename": "teste1.wav",
    "status": "QUEUED",
    "created_at": "2022-03-15T14:24:28.724841-03:00",
    "callback_urls": [],
    "callback_failure_reason": "",
    "failure_reason": "",
    "media": {
      "md5": "c6e28a049070b13e2cd95b2b2f8dc005",
      "size": 108779400
    },
    "config": {
      "priority": 50,
      "normalization": {},
      "diarization": {
        "vad": {
          "chunk_max_silence": 1200,
          "chunk_max_length": 3600,
          "dual_tone": {
            "enabled": false,
            "row_freq": [
              350,
              697,
              770,
              852,
              941
            ],
            "col_freq": [
              440,
              1209,
              1336,
              1477,
              1633
            ],
            "start_time": 0,
            "stop_time": 5,
            "min_duration": 0.012
          }
        },
        "clustering": {
          "threshold": -0.4,
          "enabled": true
        },
        "descriptor": {
          "enabled": false
        }
      },
      "recognition": {
        "lm": "builtin:slm/callcenter-small",
        "textify": {
          "enabled": false
        },
        "hints_words": [],
        "decoder": {
          "max_sentences": 1,
          "word_details": 1
        },
        "tasks": []
      }
    }
  }
}

API Remover JOB

Apaga um processo que foi interrompido, falhou ou terminou.

Requisição

DELETE /trd/v3/job/<id>
Header
  • Authorization

Path
  • id: identificador do processo

Response
  • 200 - JOB removido

  • 400 - Solicitação inválida

  • 403 - Acesso negado

  • 404 - Não encontrado

  • 422 - Erro de validação

Chamada REST:

curl -X 'DELETE' \
  'http://localhost:8000/trd/v3/job/6230cb8a39231fb289992a13' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>'

Resultado JSON:

{
    "job": {
      "id": "6230cb8a39231fb289992a13",
      "filename": "teste1.wav",
      "status": "DELETED",
      "created_at": "2022-03-15T14:23:22.866000-03:00",
      "completed_at": "2022-03-15T14:23:38.357000-03:00",
      "callback_urls": [],
      "callback_failure_reason": "",
      "failure_reason": "",
      "media": {
        "md5": "c6e28a049070b13e2cd95b2b2f8dc005",
        "size": 108779400
      },
      "config": {
        "priority": 50,
        "normalization": {},
        "diarization": {
          "vad": {
            "chunk_max_silence": 1200,
            "chunk_max_length": 3600,
            "dual_tone": {
              "enabled": false,
              "row_freq": [
                350,
                697,
                770,
                852,
                941
              ],
              "col_freq": [
                440,
                1209,
                1336,
                1477,
                1633
              ],
              "start_time": 0,
              "stop_time": 5,
              "min_duration": 0.012
            }
          },
          "clustering": {
            "threshold": -0.4,
            "enabled": true
          },
          "descriptor": {
            "enabled": false
          }
        },
        "recognition": {
          "lm": "builtin:slm/callcenter-small",
          "textify": {
            "enabled": false
          },
          "hints_words": [],
          "decoder": {
            "max_sentences": 1,
            "word_details": 1
          },
          "tasks": []
        }
      }
    }
  }

API Consulta

Permite recuperar os registros dos Jobs, utilizando campos do registro como filtros. É possível também definir quais campos devem ser recuperados, através do recurso de projeção.

Requisição

GET /trd/v3/query/job?result=<result>&tag=<tag>&filename=<filename>&status=<status>&start_date=<start>&end_date=<end>&page=<page>&limit=<limit>
Header
  • Authorization

Path
  • result (opcional)

  • tag (opcional)

  • filename (opcional)

  • status (opcional)

  • start_date (opcional)

  • end_date (opcional)

  • page (opcional)

  • limit (opcional)

Response
  • 200 - Resultado da consulta

  • 400 - Solicitação inválida

  • 403 - Acesso negado

  • 404 - Não encontrado

  • 422 - Erro de validação

Resultado

O resultado é um objeto que denominamos de JOB que possue os seguintes atributos.

  • page: numero da pagina que será retornada

  • limit: numero de item resultantes por pagina

  • total: numero total de jobs que se adequam a consulta

  • result: lista com todos os jobs

Chamada REST:

curl -X 'GET' \
  'http://localhost:8000/trd/v3/query/job?result=false&status=COMPLETED&start_date=2022-03-13T00%3A00%3A00.000%2B00%3A00&end_date=2022-03-16T00%3A00%3A00.000%2B00%3A00&page=1&limit=100' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <token>'

Resultado JSON:

{
  "page": 1,
  "limit": 100,
  "total": 4,
  "results": [
    {
      "job": {
        "id": "6230c6d439231fb289992867",
        "filename": "single.wav",
        "status": "COMPLETED",
        "created_at": "2022-03-15T14:03:16.697000-03:00",
        "started_at": "2022-03-15T14:03:18.875000-03:00",
        "diarized_at": "2022-03-15T14:03:23.853000-03:00",
        "completed_at": "2022-03-15T14:03:25.230000-03:00",
        "callback_urls": [],
        "callback_failure_reason": "",
        "failure_reason": "",
        "media": {
          "md5": "a79984a2cf53d24abbd147f98a63cc67",
          "size": 36784,
          "input": {
            "sample_rate": 8000,
            "channels": 1,
            "bit_rate": 128000,
            "format": "Wave",
            "codec": "PCM",
            "bandwidth": 3855.412095639944
          },
          "output": {
            "redundant_channel": false,
            "channels": [
              {
                "channel": 1,
                "duration": 2.296,
                "speech": 1.091,
                "silence": false
              }
            ]
          }
        },
        "config": {
          "priority": 50,
          "normalization": {},
          "diarization": {
            "vad": {
              "chunk_max_silence": 1200,
              "chunk_max_length": 3600,
              "dual_tone": {
                "enabled": false,
                "row_freq": [
                  350,
                  697,
                  770,
                  852,
                  941
                ],
                "col_freq": [
                  440,
                  1209,
                  1336,
                  1477,
                  1633
                ],
                "start_time": 0,
                "stop_time": 5,
                "min_duration": 0.012
              }
            },
            "clustering": {
              "threshold": -0.4,
              "enabled": true
            },
            "descriptor": {
              "enabled": false
            }
          },
          "recognition": {
            "lm": "builtin:slm/callcenter-small",
            "textify": {
              "enabled": false
            },
            "hints_words": [],
            "decoder": {
              "max_sentences": 1,
              "word_details": 1
            },
            "tasks": []
          }
        }
      }
    },
    {
      "job": {
        "id": "6230c70c39231fb28999286a",
        "filename": "single.wav",
        "status": "COMPLETED",
        "created_at": "2022-03-15T14:04:12.563000-03:00",
        "started_at": "2022-03-15T14:04:12.829000-03:00",
        "diarized_at": "2022-03-15T14:04:13.933000-03:00",
        "completed_at": "2022-03-15T14:04:14.545000-03:00",
        "tag": "tag-novo",
        "callback_urls": [],
        "callback_failure_reason": "",
        "failure_reason": "",
        "media": {
          "md5": "a79984a2cf53d24abbd147f98a63cc67",
          "size": 36784,
          "input": {
            "sample_rate": 8000,
            "channels": 1,
            "bit_rate": 128000,
            "format": "Wave",
            "codec": "PCM",
            "bandwidth": 3855.412095639944
          },
          "output": {
            "redundant_channel": false,
            "channels": [
              {
                "channel": 1,
                "duration": 2.296,
                "speech": 1.091,
                "silence": false
              }
            ]
          }
        },
        "config": {
          "priority": 50,
          "normalization": {},
          "diarization": {
            "vad": {
              "chunk_max_silence": 1200,
              "chunk_max_length": 3600,
              "dual_tone": {
                "enabled": false,
                "row_freq": [
                  350,
                  697,
                  770,
                  852,
                  941
                ],
                "col_freq": [
                  440,
                  1209,
                  1336,
                  1477,
                  1633
                ],
                "start_time": 0,
                "stop_time": 5,
                "min_duration": 0.012
              }
            },
            "clustering": {
              "threshold": -0.4,
              "enabled": true
            },
            "descriptor": {
              "enabled": false
            }
          },
          "recognition": {
            "lm": "builtin:slm/callcenter-small",
            "textify": {
              "enabled": false
            },
            "hints_words": [],
            "decoder": {
              "max_sentences": 1,
              "word_details": 1
            },
            "tasks": []
          }
        }
      }
    },
    {
      "job": {
        "id": "6230c7ea39231fb28999286d",
        "filename": "nasceu.wav",
        "status": "COMPLETED",
        "created_at": "2022-03-15T14:07:54.418000-03:00",
        "started_at": "2022-03-15T14:07:55.607000-03:00",
        "diarized_at": "2022-03-15T14:07:57.810000-03:00",
        "completed_at": "2022-03-15T14:07:58.956000-03:00",
        "tag": "tag-novo",
        "callback_urls": [],
        "callback_failure_reason": "",
        "failure_reason": "",
        "media": {
          "md5": "18eef3c06a975dc8cd1adad4ae662824",
          "size": 72544,
          "input": {
            "sample_rate": 8000,
            "channels": 1,
            "bit_rate": 128000,
            "format": "Wave",
            "codec": "PCM",
            "bandwidth": 3909.2
          },
          "output": {
            "redundant_channel": false,
            "channels": [
              {
                "channel": 1,
                "duration": 4.531,
                "speech": 3.2590000000000003,
                "silence": false
              }
            ]
          }
        },
        "config": {
          "priority": 50,
          "normalization": {},
          "diarization": {
            "vad": {
              "chunk_max_silence": 1200,
              "chunk_max_length": 3600,
              "dual_tone": {
                "enabled": false,
                "row_freq": [
                  350,
                  697,
                  770,
                  852,
                  941
                ],
                "col_freq": [
                  440,
                  1209,
                  1336,
                  1477,
                  1633
                ],
                "start_time": 0,
                "stop_time": 5,
                "min_duration": 0.012
              }
            },
            "clustering": {
              "threshold": -0.4,
              "enabled": true
            },
            "descriptor": {
              "enabled": false
            }
          },
          "recognition": {
            "lm": "builtin:slm/callcenter-small",
            "textify": {
              "enabled": false
            },
            "hints_words": [],
            "decoder": {
              "max_sentences": 1,
              "word_details": 1
            },
            "tasks": []
          }
        }
      }
    },
    {
      "job": {
        "id": "6230c8b739231fb289992870",
        "filename": "nasceu.wav",
        "status": "COMPLETED",
        "created_at": "2022-03-15T14:11:19.275000-03:00",
        "started_at": "2022-03-15T14:11:19.520000-03:00",
        "diarized_at": "2022-03-15T14:11:20.768000-03:00",
        "completed_at": "2022-03-15T14:11:21.606000-03:00",
        "callback_urls": [],
        "callback_failure_reason": "",
        "failure_reason": "",
        "media": {
          "md5": "18eef3c06a975dc8cd1adad4ae662824",
          "size": 72544,
          "input": {
            "sample_rate": 8000,
            "channels": 1,
            "bit_rate": 128000,
            "format": "Wave",
            "codec": "PCM",
            "bandwidth": 3909.2
          },
          "output": {
            "redundant_channel": false,
            "channels": [
              {
                "channel": 1,
                "duration": 4.531,
                "speech": 3.2590000000000003,
                "silence": false
              }
            ]
          }
        },
        "config": {
          "priority": 50,
          "normalization": {},
          "diarization": {
            "vad": {
              "chunk_max_silence": 1200,
              "chunk_max_length": 3600,
              "dual_tone": {
                "enabled": false,
                "row_freq": [
                  350,
                  697,
                  770,
                  852,
                  941
                ],
                "col_freq": [
                  440,
                  1209,
                  1336,
                  1477,
                  1633
                ],
                "start_time": 0,
                "stop_time": 5,
                "min_duration": 0.012
              }
            },
            "clustering": {
              "threshold": -0.4,
              "enabled": true
            },
            "descriptor": {
              "enabled": false
            }
          },
          "recognition": {
            "lm": "builtin:slm/callcenter-small",
            "textify": {
              "enabled": false
            },
            "hints_words": [],
            "decoder": {
              "max_sentences": 1,
              "word_details": 1
            },
            "tasks": []
          }
        }
      }
    }
  ]
}