API TREBE
Breve descripción de las APIs ofrecidas por trebe.org So ofrecen servicios de traducción, transcripción y sÃntesis de voz. Cuando nos referimos a API gestionada queremos decir que con una sola llamada se completa el trabajo y se recibe el resultado en el correo asociado al APIKey, mientras que cuando hablamos de APIs directas se ofrecen 3 servicios para que el usuario los combine e integre en sus servicios. Estos 3 servicios son: la creación del trabajo, la consulta del estado, y la obtención del fichero resultante final.
Traduce una cadena de texto de un idioma a otro, siendo los pares de idiomas bidireccionales soportados los siguientes:
- EU - ES
- EU - EN
- EU - FR
- ES - CA
- ES - GL
- ES - EN
En la llamada, además del apikey, que se le envÃa en el header, los parámetros que necesita en la llamada son:
- sourcelanguage: para el idioma de origen, y cuyos valores aceptados son (es, eu, gl, ca, en, fr)
- targetlanguage: para el idioma de destino, con los mismos posibles valores, pero teniendo en cuenta que se ajuste a uno de los pares de idiomas de traducción soportados
- text: es el texto que se va a querer traducir
- getsentences (opcional): si se quiere recibir información de wordProbs para estimación de calidad (para traductores)
En la respuesta, si la variable success es true, es que se ha ejecutado correctamente, y el texto traducido estará como valor de la variable message
None
{
"sourcelanguage": "es",
"targetlanguage": "eu",
"text": "Esto es una prueba.",
"getsentences": false
}
POST https://api.trebesrv.com/translation/v1/translate
{
"sourcelanguage": "es",
"targetlanguage": "eu",
"text": "Esto es una prueba.",
"getsentences": false
}
{
"attention": "",
"jobTime": 318,
"message": "Hau froga bat da.",
"metrics": {
"metered": true
},
"success": true,
"translationErrorCode": 0,
"translationTime": 309,
"userTime": 320,
"waitingTime": 9
}
Partiendo del los mismos pares de idiomas que la traducción de textos, traduce un documento respetando en el formato de salida todo el formato del documento de origen.
Los tipos de documentos soportados son: .docx,.pptx,.xlsx,.txt,.odt,.html,.xml,.xliff,.xlf,.tmx
En la llamada, además del apikey, que se le envÃa en el header, los parámetros que necesita son:
- sourcelanguage: para el idioma de origen, y cuyos valores aceptados son (es, eu, gl, ca, en, fr)
- targetlanguage: para el idioma de destino, con los mismos posibles valores, pero teniendo en cuenta que se ajuste a uno de los pares de idiomas de traducción soportados
- file: que es el nombre con el path del fichero que se quiere traducir
- delivery (opcional): poner el valor “email-attachment” si en vez de recibir un link de descarga queremos recibirlo como adjunto en el correo.
- outfilename (opcional): es el nombre que se le quiere dar al nuevo fichero generado.
En la respuesta, solo se recibe el id del proceso que se ha lanzado, ya que como hemos comentado el documento resultante generado se envÃa de modo asÃncrono a la dirección de correo asociada al apikey.
None
None
None
None
None
None
POST https://api.trebesrv.com/translation/v1/doctrans
{
"id": "ca7lsjebioemilkfrjig"
}
StartFragment
Partiendo del los mismos pares de idiomas que la traducción de textos, traduce un archivo de subtÃtulos, procesándolo en su conjunto, y regenerando los subtÃtulos y marcas de tiempo (es decir, no se trata de una traducción de subtÃtulos segmento a segmento).
Los tipos de documentos soportados son: .srt
En la llamada, además del apikey, que se le envÃa en el header, los parámetros que necesita son:
- sourcelanguage: para el idioma de origen, y cuyos valores aceptados son (es, eu, gl, ca, en, fr)
- targetlanguage: para el idioma de destino, con los mismos posibles valores, pero teniendo en cuenta que se ajuste a uno de los pares de idiomas de traducción soportados
- file: que es el nombre con el path del fichero que se quiere traducir
- delivery (opcional): poner el valor “email-attachment” si en vez de recibir un link de descarga queremos recibirlo como adjunto en el correo.
- outfilename (opcional): es el nombre que se le quiere dar al nuevo fichero generado.
En la respuesta, solo se recibe el id del proceso que se ha lanzado, ya que como hemos comentado el documento resultante generado se envÃa de modo asÃncrono a la dirección de correo asociada al apikey.
EndFragment
None
None
None
None
None
None
POST https://api.trebesrv.com/translation/v1/subtrans
{
"id": "ca7mndpe4mvccpgpdaug"
}
Partiendo de un archivo multimedia genera su correspondiente transcripción
Los formatos de entrada soportados son:
- mp3
- mp4
- wav
Mientas que los formatos de salida posibles son:
- srt (para generación de subtÃtulos)
- stl (para generación de subtÃtulos)
- vtt (para generación de subtÃtulos)
- rtf (para generación de archivo de texto)
- txt (para generación de archivo de texto)
- xml (contiene todas las palabras con sus correspondientes marcas de tiempo y confianzas)
- json (contiene todas las palabras con sus correspondientes marcas de tiempo y confianzas)
Los idiomas soportados, y que serán un parámetro de entrada de la llamada son:
- es: para transcripción de audios en español
- eu: para transcripción de audios en euskera
- gl: para transcripción de audios en gallego
- ca: para transcripción de audios en catalán
- es_eu: para transcripción de audios que combinan español y euskera
- es_ca: para transcripción de audios que combinan español y catalán
- es_gl: para transcripción de audios que combinan español y gallego
En la llamada, además del apikey, que se le envÃa en el header, los parámetros que necesita son:
- file: que es el nombre con el path del fichero que se quiere transcribir
- languagemodel: para el idioma, que debe adoptar alguno de los valores arriba indicados (es, eu, gl, ca, eseu, esca, es_gl)
- diarization (opcional): por defecto false (valor alternativo auto) para que detecte los hablantes
- delivery (opcional): poner el valor “email-attachment” si en vez de recibir un link de descarga queremos recibirlo como adjunto en el correo.
- formats (opcional): se le indicarán todos los formatos de salida que se quieren generar (se pueden incluir más de una lÃnea con este parámetro)
- outfilename (opcional): es el nombre que se le quiere dar al nuevo fichero generado.
En la respuesta, solo se recibe el id del proceso que se ha lanzado, ya que como hemos comentado el documento resultante generado se envÃa de modo asÃncrono a la dirección de correo asociada al apikey.
None
None
None
None
None
None
None
None
None
POST https://api.trebesrv.com/transcription/v1/transcribe
{
"id": "f44f763940-WZDuT5whcF1l"
}
Partiendo de un texto genera un audio con la voz que le corresponde.
El formato de entrada del texto debe ser texto plano.
Actualmente, las voces soportadas son:
- nerea: voz femenina para euskera
- laura: voz femenina para español
- mikel: voz masculina para español
En la llamada, además del apikey, que se le envÃa en el header, los parámetros que necesita son:
- normalize: true
- voice: nombre de la voz con la que se quiere locutar el texto (vincula idioma)
- text: texto que se desea locutar
- delivery (opcional): poner el valor “email-attachment” si en vez de recibir un link de descarga queremos recibirlo como adjunto en el correo.
- outfilename (opcional): es el nombre que se le quiere dar al nuevo fichero generado.
En la respuesta, solo se recibe el id del proceso que se ha lanzado, ya que como hemos comentado el documento resultante generado se envÃa de modo asÃncrono a la dirección de correo asociada al apikey.
None
{
"normalize": true
,"voice":"nerea"
,"text": "Kaixo, Nerea naiz."
,"delivery":"email-attachment"
,"outfilename": "test.wav"
}
POST https://api.trebesrv.com/synthesis/v1/synthesize
{
"normalize": true
,"voice":"nerea"
,"text": "Kaixo"
,"delivery":"email-attachment"
,"outfilename": "test.wav"
}
{
"id": "nerea-pCD5kXxO-S7QpaXhP2RUeZMl"
}
Es el mismo método que en el API gestionada.
En este caso se muestra un ejemplo con el valor getSentences a true.
La respuesta recoge los wordProbs en el campo attention (para su posterior procesamiento por el cliente para estimación de calidad)
None
{
"sourcelanguage":"es",
"targetlanguage":"eu",
"text": "Esto es una prueba.",
"getsentences": true
}
POST https://api.trebesrv.com/translation/v1/translate
{
"sourcelanguage":"es",
"targetlanguage":"eu",
"text": "Esto es una prueba.",
"getsentences": true
}
{
"attention": "",
"jobTime": 327,
"message": "Hau froga bat da.",
"sentences": [
{
"attention": "Esto es una prueba . ||| Hau froga bat da . ||| 0.714308,0.0515159,0.0315627,0.186886,0.00482664,0.0109003 0.0118235,0.0733508,0.0843583,0.823691,0.00155684,0.00521978 0.00724883,0.0966742,0.891435,0.00264626,0.00109766,0.000898386 0.00274877,0.980634,0.0146282,0.000520681,0.000787714,0.000680207 0.000923796,0.000880583,0.00171495,0.00032866,0.993093,0.00305863 0.140223,0.184557,0.164852,0.114373,0.199954,0.19604",
"index": 0,
"source": "Esto es una prueba.",
"subwords": [
"hau",
"froga",
"bat",
"da",
"."
],
"target": "Hau froga bat da.",
"wordProbs": [
-0.74133,
-0.64308,
-0.27492,
-0.13894,
-0.13149,
-0.10931
]
}
],
"success": true,
"translationErrorCode": 0,
"translationTime": 323,
"userTime": 328,
"waitingTime": 4
}
Partiendo del los mismos pares de idiomas que la traducción de textos, traduce un documento respetando en el formato de salida todo el formato del documento de origen.
Los tipos de documentos soportados son: .docx,.pptx,.xlsx,.txt,.odt,.html,.xml,.xliff,.xlf,.tmx
En la llamada, además del apikey, que se le envÃa en el header, los parámetros que necesita son:
- sourcelanguage: para el idioma de origen, y cuyos valores aceptados son (es, eu, gl, ca, en, fr)
- targetlanguage: para el idioma de destino, con los mismos posibles valores, pero teniendo en cuenta que se ajuste a uno de los pares de idiomas de traducción soportados
- file: que es el nombre con el path del fichero que se quiere traducir
En la respuesta, solo se recibe el id del proceso que se ha lanzado, y que servirá para componer el resto de llamadas, para obtener información y descargar el resultado.
None
Fichero que se desea traducir
Idioma de origen (es, eu, en, fr, ca, gl)
Idioma de destino (es, eu, en, fr, ca, gl)
POST https://api.trebesrv.com/translation/v1/doctrans/jobs
{
"id": "cab01v6bioemilkfrl40"
}
La URL se compone con el jobID cuyo valor es el ID que devuelve la llamada para generar el proceso de traducción.
La información se obtiene sobre este trabajo, y el único parámetro de la llamada, es el APIKey que se le envÃa en el Header.
El formato de la respuesta es el siguiente (2 campos):
- status: indica estado del proceso
- message: es el mensaje asociado
El estatus es:
- -1: si hay algún error
- 0: el proceso está en espera, en cola
- 1: se está procesando la solicitud
- 2: ha terminado
Se recomienda insertar una demora de (por lo menos) 3 segundos entre llamadas de consulta para que no bloquee la cuenta por abuso.
None
GET https://api.trebesrv.com/translation/v1/doctrans/jobs/{{jobId}}/info
{
"message": "processing",
"status": 1
}
La URL se compone con el jobID que es el ID que devuelve la llamada para generar el proceso de traducción.
La resultado es la descarga del trabajo generado, y el único parámetro de la llamada, es el APIKey que se le envÃa en el Header.
None
GET {{protocol_host_port}}/translation/v1/doctrans/jobs/{{jobId}}/result
None
None
None
None
POST https://api.trebesrv.com/translation/v1/subtrans/jobs
{
"id": "cac9bfhe4mvccpgpdc6g"
}
La URL se compone con el jobID cuyo valor es el ID que devuelve la llamada para generar el proceso de traducción.
La información se obtiene sobre este trabajo, y el único parámetro de la llamada, es el APIKey que se le envÃa en el Header.
El formato de la respuesta es el siguiente (2 campos):
- status: indica estado del proceso
- message: es el mensaje asociado
El estatus es:
- -1: si hay algún error
- 0: el proceso está en espera, en cola
- 1: se está procesando la solicitud
- 2: ha terminado
Se recomienda insertar una demora de (por lo menos) 3 segundos entre llamadas de consulta para que no bloquee la cuenta por abuso.
None
GET https://api.trebesrv.com/translation/v1/subtrans/jobs/{{jobId}}/info
{
"message": "processing",
"status": 1
}
La URL se compone con el jobID que es el ID que devuelve la llamada para generar el proceso de traducción.
La resultado es la descarga del trabajo generado, y el único parámetro de la llamada, es el APIKey que se le envÃa en el Header.
None
GET {{protocol_host_port}}/translation/v1/subtrans/jobs/{{jobId}}/result
None
None
None
None
POST https://api.trebesrv.com/transcription/v1/jobs
{
"id": "ba60ec2f86-KwCFv9axE0jS"
}
La URL se compone con el jobID cuyo valor es el ID que devuelve la llamada para generar el proceso de traducción.
La información se obtiene sobre este trabajo, y el único parámetro de la llamada, es el APIKey que se le envÃa en el Header.
El formato de la respuesta es el siguiente (2 campos):
- status: indica estado del proceso
- message: es el mensaje asociado
- details: que contienen un JSON con la información del estado del proceso, indicando que partes del proceso se han ejecutado y sus resultados parciales.
El estatus es:
- -1: si hay algún error
- 0: el proceso está en espera, en cola
- 1: se está procesando la solicitud
- 2: ha terminado
Se recomienda insertar una demora de (por lo menos) 3 segundos entre llamadas de consulta para que no bloquee la cuenta por abuso.
None
GET https://api.trebesrv.com/transcription/v1/jobs/{{jobId}}/info
{
"detail": {
"id": "ba60ec2f86-KwCFv9axE0jS",
"input": {
"input": "file_3a07f450-9bfd-4cb9-9f03-c750c4769bfc_TestAudio.mp3"
},
"modules": [
{
"config": {
"channels": "1",
"samplerate": "16000"
},
"isoptative": false,
"name": "transcoder",
"status": "end"
},
{
"config": {
"model": "generic"
},
"isoptative": false,
"name": "segmenter",
"status": "execution"
},
{
"config": {
"ahc_thr": "0.5",
"cpu": "1",
"model": "broadcast",
"num_spk": "0",
"threads": "8",
"vbx_param": "0.1#1#0.5"
},
"isoptative": false,
"name": "diarization",
"status": "off"
},
{
"config": {
"model": "es_eu",
"score": "9"
},
"isoptative": false,
"name": "asr",
"status": "off"
},
{
"config": {
"model": "es_eu"
},
"isoptative": false,
"name": "punctuator",
"status": "off"
},
{
"config": {
"model": "es_eu"
},
"isoptative": false,
"name": "normalization",
"status": "off"
},
{
"config": {
"formats": "srt;rtf;stl;vtt;txt;xml;json;mjson",
"print_speakers_id": "false",
"speakers_mode": "dia",
"tags": ""
},
"isoptative": false,
"name": "postprocess",
"status": "off"
}
],
"output": {
"files": null,
"type": ""
},
"pipeline": "GenericES_EU_DIA",
"priority": 0,
"results": [
{
"data": {
"bytes": "38069441",
"input": "file_3a07f450-9bfd-4cb9-9f03-c750c4769bfc_TestAudio.mp3"
},
"module": "pipeline"
},
{
"data": {
"duration": "3612.160000",
"output": "ba60ec2f86-KwCFv9axE0jS.wav"
},
"module": "transcoder"
}
],
"status": {
"dispatchtime": "2022-06-02T11:15:46.16605578Z",
"endtime": "0001-01-01T00:00:00Z",
"log": [
"[2022-06-02 11:15:42.61885879 +0000 UTC m=+1117566.594242047] Setting next module to transcoder",
"[2022-06-02 11:15:42.64869054 +0000 UTC m=+1117566.624073839] Task assigned to worker CyaTP-vOtAfxIF with module transcoder",
"[2022-06-02 11:15:45.962959039 +0000 UTC m=+1117569.938342352] Module transcoder finished correctly.",
"[2022-06-02 11:15:46.050072122 +0000 UTC m=+1117570.025455430] Setting next module to segmenter",
"[2022-06-02 11:15:46.16618036 +0000 UTC m=+1117570.141563718] Task assigned to worker pToXL-QHeraM4R with module segmenter"
],
"metastatus": "execution",
"module": "segmenter",
"proposaltime": "0001-01-01T00:00:00Z",
"starttime": "2022-06-02T11:15:42.592485143Z",
"status": "execution",
"totaltimesecs": 0,
"worker": "pToXL-QHeraM4R"
}
},
"message": "processing",
"status": 1
}
La URL se compone con el jobID que es el ID que devuelve la llamada para generar el proceso de traducción.
La resultado es la descarga del trabajo generado, y el único parámetro de la llamada, es el APIKey que se le envÃa en el Header.
En el caso de la transcripción, como el reusltado puede ser mñas de un fichero, se indica con /0, /1, … el fichero que se quiere descargar (por tipo de extensión), según los indicado en la sección de files en la consulta anterior (la de info, o consulta del status)
None
GET {{protocol_host_port}}/transcription/v1/jobs/{{jobId}}/result/0
None
{
"normalize": true
,"voice":"laura"
,"text": "La secretaria de Estado de Digitalización e Inteligencia Artificial, Carme Artigas, ha protagonizado el quinto programa de Plan Europa, impulsado por EFE y KPMG, en el que ha explicado los avances del Kit Digital y del Perte de la Nueva EconomÃa de la Lengua. Artigas ha explicado que de las 60.000 empresas que han solicitado el Kit Digital, de momento se han entregado bonos a 10.000 por un importe total de 120 millones de euros. Las empresas disponen de 6 meses para gastar la ayuda concedida en digitalización. El Kit Digital es una iniciativa del Gobierno dotada de unos 3.000 millones de euros para digitalizar empresas, cuya primera convocatoria, destinada a empresas con entre 10 y 49 trabajadores, dotada de 500 millones de euros, ya está en marcha y a la que han concurrido de momento unas 60.000 empresas, el 55% del total."
}
POST https://api.trebesrv.com/synthesis/v1/jobs
{
"normalize": true
,"voice":"nerea"
,"text": "La secretaria de Estado de Digitalización e Inteligencia Artificial, Carme Artigas, ha protagonizado el quinto programa de Plan Europa, impulsado por EFE y KPMG, en el que ha explicado los avances del Kit Digital y del Perte de la Nueva EconomÃa de la Lengua. Artigas ha explicado que de las 60.000 empresas que han solicitado el Kit Digital, de momento se han entregado bonos a 10.000 por un importe total de 120 millones de euros. Las empresas disponen de 6 meses para gastar la ayuda concedida en digitalización. El Kit Digital es una iniciativa del Gobierno dotada de unos 3.000 millones de euros para digitalizar empresas, cuya primera convocatoria, destinada a empresas con entre 10 y 49 trabajadores, dotada de 500 millones de euros, ya está en marcha y a la que han concurrido de momento unas 60.000 empresas, el 55% del total."
}
{
"id": "nerea-XWCHoHhU-BXQWPiOSRqe3Jgg"
}
La URL se compone con el jobID cuyo valor es el ID que devuelve la llamada para generar el proceso de traducción.
La información se obtiene sobre este trabajo, y el único parámetro de la llamada, es el APIKey que se le envÃa en el Header.
El formato de la respuesta es el siguiente (2 campos):
- status: indica estado del proceso
- message: es el mensaje asociado
El estatus es:
- -1: si hay algún error
- 0: el proceso está en espera, en cola
- 1: se está procesando la solicitud
- 2: ha terminado
Se recomienda insertar una demora de (por lo menos) 3 segundos entre llamadas de consulta para que no bloquee la cuenta por abuso.
None
GET https://api.trebesrv.com/synthesis/v1/jobs/{{jobId}}/info
{
"message": "processed",
"status": 2
}
La URL se compone con el jobID que es el ID que devuelve la llamada para generar el proceso de traducción.
La resultado es la descarga del trabajo generado, y el único parámetro de la llamada, es el APIKey que se le envÃa en el Header.
None
GET {{protocol_host_port}}/synthesis/v1/jobs/{{jobId}}/result