API de Transcrição¶
A API de Transcrição permite controlar o processo de transcrição sobre os arquivos cadastrados. O processo é executado individualmente para cada arquivo, independente do lote. A ordem de processamento é definida por uma fila interna de trabalho. Cada arquivo possui um atributo de controle que indica se ele deve ser colocado em uma das várias filas de trabalho que executam o processo de transcrição. O atributo de controle do processo possui os valores:
- IDLE: o arquivo está ocioso e não está na fila de trabalho;
- RUNNING: o arquivo está na fila de trabalho;
- PAUSED: o arquivo foi colocado em espera. A etapa atual do processo será concluída;
- FINISHED: o arquivo foi finalizado;
- FAILED: ocorreu uma falha em alguma etapa do processo e o arquivo não será processado;
Obs: em caso de falha, o arquivo deve ser verificado pois pode ter havido alguma incompatibilidade de formato ou falha genérica. O processo pode ser reiniciado após a operação de reset.
Quando um arquivo está no estado RUNNING ele será colocado em uma fila de trabalho de acordo com a etapa do processo de transcrição. A etapa em que o arquivo se encontra está definida em um atributo de estado do processo, e pode ter um dos seguintes valores:
- INITIAL: o arquivo está no estado inicial, após a criação do registro ou reset;
- NORMALIZING: o arquivo está na fila de trabalho de normalização;
- NORMALIZED: o arquivo foi normalizado e a diarização ainda não iniciou;
- DIARIZING: o arquivo está na fila de trabalho de diarização;
- DIARIZED: o arquivo foi diarizado e o reconhecimento ainda não iniciou;
- RECOGNIZING: o arquivo está na fila de trabalho do reconhecimento;
- RECOGNIZED: o arquivo foi reconhecido;
Quando o arquivo atinge o estado “RECOGNIZED”, a transcrição é considerada finalizada. A partir desse momento, o resultado da transcrição pode ser consultado com segurança, pois todos os dados estarão completos. O resultado pode ser consultado a qualquer momento, porém poderão apresentar resultados parciais.
A transcrição de um lote de arquivos é considerado finalizado quando todos os arquivos associados ao lote possuem estado RECOGNIZED. No entanto, esse conceito é relativo pois a qualquer momento novos arquivos podem ser adicionados ao lote.
Iniciar transcrição de arquivo¶
Inicia a transcrição de um arquivo. O arquivo deve estar depositado no diretório de trabalho e cadastrado no sistema. O controle do arquivo deve estar em “IDLE” ou “PAUSED”, e após a operação será colocado em “RUNNING”.
Requisição
GET /trd/transcription/start/audiofile/{id}
Parâmetros da requisição
A requisição contém a variável de path:
- id: identificação do arquivo cadastrado no sistema.
Resultado
O resultado é o registro do arquivo, e possui a seguinte estrutura:
- audioChannels: informação adicional sobre o canal de áudio, gerado após a normalização (opcional)
- batch: nome da pasta do lote de arquivos
- control: controle do processo de transcrição
- create_date: data de criação do cadastro do arquivo
- filename: nome do arquivo
- format: formato do arquivo
- info: informações adicionais sobre o arquivo de áudio, geradas após a normalização (opcional)
- md5: hash MD5 do arquivo, gerado no momento do cadastro
- size: tamanho do arquivo (em bytes)
- status: etapa do processo de transcrição
A informação de canal é uma lista e cada elemento possui a seguinte estrutura:
- bandwidth: largura de banda (kbps)
- channel: identificação do canal
- duration: tempo de fala (seg)
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/start/audiofile/5b76faed4d27fc0001331dcc
Resultado JSON:
{
"audioChannels": [
{
"bandwidth": "4000",
"channel": 1,
"duration": 520
}
],
"batch": "folder1",
"control": "FINISHED",
"create_date": "Fri, 08 Mar 2019 18:02:16 GMT",
"filename": "file1.wav",
"format": "wav",
"info": {
"BitRate": "128000",
"BitRateMode": "Constant",
"Channels": "1",
"Codec": "PCM",
"Comment": "",
"Compression_Mode": "",
"Duration": "00:08:40.000",
"EncodedLibrary": "",
"FileCreatedDate": "",
"FileModifiedDate": "UTC 2019-03-08 18:02:16",
"FileSize": "8320044",
"Format": "Wave",
"InputSamplingRate": "8000",
"OutputSamplingRate": "8000",
"ReduntantChannel": false,
"Track": ""
},
"last_update": "Fri, 08 Mar 2019 18:02:16 GMT",
"md5": "bee0c78600f52fdf65edc1a742970313",
"size": 8320044,
"status": "RECOGNIZED"
}
Iniciar transcrição de lote¶
Inicia a transcrição de um lote de arquivos. Os arquivos devem estar depositados no diretório de trabalho e cadastrados no sistema. Os arquivos que estiverem com controle em “IDLE” ou “PAUSED” serão colocados em “RUNNING”. Arquivos em “RUNNING” serão ignorados.
Requisição
GET /trd/transcription/start/batch/{batch}
Parâmetros da requisição
A requisição contém a variável de path:
- batch: nome da pasta do lote no diretório de trabalho.
Resultado
O resultado é uma lista com a URL dos arquivos do lote.
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/start/batch/folder1
Resultado JSON:
{
"file1.wav":"http://localhost:8080/trd/audiofile/5b9bdfc2be077700018e768b",
"file2.wav":"http://localhost:8080/trd/audiofile/5b76faed4d27fc0001331dcc"
}
Interromper transcrição de arquivo¶
Interrompe a transcrição de um arquivo. O controle do arquivo deve estar em “RUNNING” e após a operação será colocado em “PAUSED”. Se o arquivo estiver na fila de trabalho, a transcrição será interrompida somente após o término da etapa atual. Esse processo pode demorar dependendo do tamanho da fila de trabalho.
Requisição
GET /trd/transcription/stop/audiofile/{id}
Parâmetros da requisição
A requisição contém a variável de path:
- id: identificação do arquivo cadastrado no sistema.
Resultado
O resultado é o registro do arquivo (ver resultado do comando “/start/audiofile/”).
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/stop/audiofile/5b76faed4d27fc0001331dcc
Interromper transcrição de lote¶
Interrompe a transcrição de um lote de arquivos. Os arquivos que estiverem com controle em “RUNNING” serão colocados em “PAUSED”. Se o arquivo estiver na fila de trabalho, a transcrição será interrompida somente após o término da etapa atual. Esse processo pode demorar dependendo do tamanho da fila de trabalho.
Requisição
GET /trd/transcription/stop/batch/{batch}
Parâmetros da requisição
A requisição contém a variável de path:
- batch: nome da pasta do lote no diretório de trabalho.
Resultado
O resultado é uma lista com a URL dos arquivos do lote (ver resultado do comando “/start/batch/”).
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/stop/batch/folder1
Estado da transcrição de arquivo¶
Obtém o estado (andamento) da transcrição de um arquivo.
Requisição
GET /trd/transcription/status/audiofile/{id}
Parâmetros da requisição
A requisição contém a variável de path:
- id: identificação do arquivo cadastrado no sistema.
Resultado
O resultado é um objeto que possui a seguinte estrutura:
- accounted_speech: contabilização de segmentos de fala processados. Ele possui os atributos:
- RECOGNIZED: acumulado dos segmentos reconhecidos
- seconds: total de fala reconhecida
- segments: total de segmentos reconhecidos
- NO_MATCH: acumulado dos segmentos que não puderam ser reconhecidos
- seconds: total de fala não reconhecida
- segments: total de segmentos não reconhecidos
- PROCESSING: acumulado dos segmentos ainda em processamento
- seconds: total de fala em processamento
- segments: total de segmentos em processamento
- FAILURE: acumulado dos segmentos onde ocorreram falha genérica de reconhecimento
- seconds: total de fala não reconhecida
- segments: total de segmentos com falha
- total_segments: número total de segmentos identificados após a diarização
- total_speech: duração total da fala identificada após a diarização
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/status/audiofile/5b76faed4d27fc0001331dcc
Resultado JSON:
{
"accounted_speech": {
"RECOGNIZED": {
"seconds": 81.847,
"segments": 30
}
},
"total_segments": 30,
"total_speech": 81.847
}
Estado da transcrição de lote¶
Obtém o estado (andamento) da transcrição de um lote de arquivos.
Requisição
GET /trd/transcription/status/batch/{batch}
Parâmetros da requisição
A requisição contém a variável de path:
- batch: nome da pasta do lote no diretório de trabalho.
Resultado
O resultado é um objeto que possui a seguinte estrutura:
ETA: estimativa do tempo de término do lote (em segundos), com base na carga de trabalho atual do sistema. Esse valor pode mudar de acordo com alterações de volume de transcrição o disponibilidade de recursos do sistema
accounted_recognition: contabilização de segmentos por estado de reconhecimento. Possui os mesmos atributos da requisição de estado de transcrição de arquivo.
- accounted_control: contabilização de arquivos por estado de controle. Ele possui os atributos:
- [CONTROL]: acumulado dos arquivos por cada um dos estados de controle (IDLE, RUNNING…)
- bytes: total de bytes
- files: total de arquivos
- accounted_control: contabilização de arquivos por status de transcrição. Ele possui os atributos:
- [STATUS]: acumulado dos arquivos por cada um dos estados de processo (INITIAL, NORMALIZING…)
- bytes: total de bytes
- files: total de arquivos
- RECOGNIZED: acumulado dos arquivos reconhecidos
- bytes: total de bytes
- files: total de arquivos
batch: nome da pasta do lote de arquivos
diarization: indicador de progresso da etapa de diarização sobre o total de arquivos do lote
normalization: indicador de progresso da etapa de normalização sobre o total de arquivos do lote
progress: indicador de progresso do processo geral sobre o total de arquivos do lote
recognition: indicador de progresso do processo geral sobre o total de arquivos do lote
speech2audio_rate: relação entre o total de fala e duração do áudio
speech2audio_rate_ch: relação entre o total de fala e duração do áudio para o canal
total_audio: duração total de áudio de todos os arquivos do lote
total_bytes: número de bytes de todos os arquivos do lote
total_files: número de arquivos do lote
total_segments: número total de segmentos dos arquivos do lote
total_speech: duração total de fala dos arquivos do lote
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/status/batch/folder1
Resultado JSON:
{
"ETA": 0,
"accounted_control": {
"FINISHED": {
"bytes": 1.1115492E7,
"files": 3
}
},
"accounted_recognition": {
"RECOGNIZED": {
"seconds": 542.775,
"segments": 144
}
},
"accounted_status": {
"RECOGNIZED": {
"bytes": 1.1115492E7,
"files": 3
}
},
"batch": "teste",
"diarization": 1,
"normalization": 1,
"progress": 1,
"recognition": 1,
"speech2audio_rate": 0.7812972,
"speech2audio_rate_ch": 0.7812972,
"total_audio": 694.71,
"total_audio_ch": 694.71,
"total_bytes": 1.1115492E7,
"total_files": 3,
"total_segments": 144,
"total_speech": 542.775
}
Reset da transcrição de arquivo¶
A operação de reset apaga os dados da transcrição de um arquivo e restaura o controle para “IDLE” e o estado para “INITIAL”. É uma operação útil para repetir a transcrição sobre um arquivo. A operação de reset retorna um novo id de arquivo.
Requisição
GET /trd/transcription/reset/audiofile/{id}
Parâmetros da requisição
A requisição contém a variável de path:
- id: identificação do arquivo cadastrado no sistema.
Resultado
O resultado são as informações do novo arquivo de áudio, com novo ID e em estado inicial.
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/reset/audiofile/5b76faed4d27fc0001331dcc
Reset da transcrição de lote¶
A operação de reset apaga os dados da transcrição de um lote de arquivos, para aqueles arquivos que não finalizaram ou estão em falha. Opcionalmente, arquivos finalizados também podem ser afetados, o que indica que todos os dados do lote serão apagados.
Requisição
GET /trd/transcription/reset/batch/{batch}
Parâmetros da requisição
A requisição contém a variável de path:
- batch: nome da pasta do lote no diretório de trabalho.
Opcionalmente, a requisição contém a variável de query:
- hard: indica se arquivos finalizados devem ser afetados (valor default = false) (opcional).
Resultado
O resultado é o status da transcrição do lote.
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/reset/batch/folder1?hard=true
Resultado da transcrição de arquivo¶
Obtém o resultado da transcrição de um arquivo.
Requisição
GET /trd/transcription/result/audiofile/{id}
Parâmetros da requisição
A requisição contém a variável de path:
- id: identificação do arquivo cadastrado no sistema.
Opcionalmente, a requisição contém a variável de query:
- format: indica o formato CSV ou JSON (valor default = json) (opcional)
Resultado
O resultado pode ser um objeto JSON ou CSV. O objeto JSON possui a seguinte estrutura:
- audioChannels: informação adicional sobre o canal de áudio, gerado após a normalização
- batch: nome da pasta do lote de arquivos
- control: controle do processo de transcrição
- create_date: data de criação do cadastro do arquivo
- filename: nome do arquivo
- format: formato do arquivo
- info: informações adicionais sobre o arquivo de áudio, geradas após a normalização (opcional)
- md5: hash MD5 do arquivo, gerado no momento do cadastro
- size: tamanho do arquivo (em bytes)
- segments: lista com os segmentos de fala. Cada elemento possui a seguinte estrutura:
- channel: identificação do canal
- end: fim da fala (seg)
- score: índice de confiança
- speaker: identificação do locutor
- start: início da fala (seg)
- status: status do reconhecimento:
- RECOGNIZED
- NO_MATCH
- NO_INPUT_TIMEOUT
- RECOGNITION_TIMEOUT
- NO_SPEECH
- FAILURE
- text: texto reconhecido
- words: lista de palavras com detalhes de alinhamento temporal e confiança
O objeto CSV devolve uma versão simplificada do resultado para visualização por parte do usuário, com as seguintes campos:
- contador: número sequencial do segmento de fala
- canal: número do canal de áudio (1 ou 2)
- início: marca temporal de início do segmento de fala (mm:ss:sss)
- fim: marca temporal de fim do segmento de fala (mm:ss:sss)
- speaker: identificação do locutor
- texto: texto transcrito
- score: índice de confiança da transcrição
- reservado 1: campo reservado
- reservado 2: campo reservado
- bitrate: taxa do áudio (kbps)
- reservado 3: campo reservado
Exemplos
Chamada REST:
curl -X GET http://localhost:8080/trd/transcription/result/audiofile/5b76faed4d27fc0001331dcc
Resultado JSON:
{
"audioChannels": [
{
"bandwidth": "4000",
"channel": 1,
"duration": 103.773
}
],
"batch": null,
"control": "FINISHED",
"create_date": "Fri, 08 Mar 2019 18:02:15 GMT",
"domain_id": null,
"filename": "file1.wav",
"format": "wav",
"info": {
"BitRate": "128000",
"BitRateMode": "Constant",
"Channels": 1,
"Codec": "PCM",
"Comment": "",
"Compression_Mode": "",
"Duration": "00:01:43.773",
"EncodedLibrary": "",
"FileCreatedDate": "",
"FileModifiedDate": "UTC 2019-03-08 18:02:15",
"FileSize": "1660412",
"Format": "Wave",
"InputSamplingRate": "8000",
"OutputSamplingRate": "8000",
"RedundantChannel": false,
"Track": ""
},
"last_update": "Fri, 08 Mar 2019 18:02:15 GMT",
"md5": "780480f5ad082b345b3ef15ccefde9f4",
"segments": [
{
"channel": 1,
"end": 7.4,
"score": 97,
"speaker": "1",
"start": 0.56,
"status": "RECOGNIZED",
"text": "boa tarde eu posso falar com a sabrina",
"words": []
}
}
Resultado da transcrição de lote¶
Realiza o download do resultado da transcrição de um lote em formato ZIP. O resultado da transcrição de cada arquivo é empacotado em um arquivo ZIP, no formato JSON ou CSV.
Requisição
GET /trd/transcription/result/batch/{batch}
Parâmetros da requisição
A requisição contém a variável de path:
- batch: nome da pasta do lote no diretório de trabalho.
- lm.uri: Identificador do modelo de língua.
- hints.words: Lista de words hints.
Opcionalmente, a requisição contém a variável de query:
- format: indica o formatos csv , json ou json-array (valor default = json) (opcional)
Resultado
Download do arquivo ZIP
Exemplos
Chamada REST:
curl -X GET 'http://localhost:8080/trd/transcription/result/batch/<nome_lote>?format=csv' --output <nome_lote>.zip