POST /v2/enroll

Cria ou atualiza um voiceprint biométrico através do upload de arquivo(s) de áudio.

Requisição

A requisição deve estar formatada como multipart/form-data. O primeiro campo, denominado enroll deve ser um objeto JSON e conter os seguintes campos:

Campo

Tipo

Descrição

repository_uri

string

URL do repositório biométrico

id

string

identificador do voiceprint

metainfo

object

Objeto contendo os pares chave-valor a serem associados ao usuário. Este campo é opcional. Se o usuário já existir, as chaves que antes não existiam serão criadas e as chaves que já existiam serão atualizadas. Para apagar uma chave, a mesma deve estar presente com um valor nulo.

min_enrollment_audio

integer

Duração mínima do tempo de fala no áudio para cadastro (em ms). Valor padrão = 1000 (opcional, valor mínimo). Não será possível cadastrar voiceprint com audio com duração mínima do tempo de fala inferior ao padrão.

max_enrollment_audio

integer

Duração máxima do tempo de fala no áudio para cadastro (em ms). Valor padrão = 30000 (opcional). A duração máxima do tempo de fala permitida no cadastro é de 120000 (ms).

logging_tag

string

campo livre inserido no log e histórico para permitir o rastreio da requisição (opcional)

channel

string

Indica o tipo de canal do qual o áudio originou. (opcional)

A seguir devem ser especificados um ou mais campos, nomeados pelo prefixo audio. Esses campos devem conter os áudios a serem utilizados no cadastro.

Atualmente suportamos os seguintes formatos de áudio (media-type):

  • audio/wav

  • audio/mp3

  • audio/ogg

  • audio/flac

  • audio/raw

Resposta

A resposta é um objeto com os seguintes campos:

  • transaction_id [string] - Identificador da transação, útil para rastreio em log e histórico

  • voiceprint [object] - Resultado da criação do voiceprint

    • id [string] - identificador do voiceprint

    • adapted [boolean] - indica se o cadastro foi atualizado (true) ou criado (false)

  • audio_info [array] - Vetor de objetos com informações sobre os áudios utilizados.

    • audio_duration [integer] - duração do áudio (ms)

    • speech_duration [integer] - duração da fala (ms)

    • gender_scores [object] - resultado da classificação de gênero (opcional)

    • age_scores [object] - resultado da classificação de idade (opcional)

    • emotion_scores [object] - resultado da classificação de emoção (opcional)

    • channel [string] - Indica o tipo de canal do qual o áudio originou.

Exemplo:

Chamada REST enviando o audio via multipart:

curl --request POST \
  --url https://<speech_server>/rest/v2/enroll \
  --header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
  --form 'enroll={
      "repository_uri": "https://<repository>",
      "id": "<voiceprint_id>"
    }' \
  --form audio=@<path-to-file>/audio1.wav \
  --form audio=@<path-to-file>/audio2.wav

Exemplo de resposta:

{
  "transaction_id": "bmt-enroll-659c765d-a23f-4bc8-99c5-c27af46c1bad",
  "voiceprint": {
    "id": "6bbf7644-7cea-42b0-bdb0-f6940ef4b1fb",
    "adapted": false
  },
  "audio_info": [
    {
      "audio_duration": 7253,
      "speech_duration": 4910,
      "gender_scores": {},
      "age_scores": {},
      "emotion_scores": {}
    },
    {
      "audio_duration": 4260,
      "speech_duration": 4130,
      "gender_scores": {},
      "age_scores": {},
      "emotion_scores": {}
    }
  ]
}