POST rest/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_speech

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 áudio com duração mínima do tempo de fala inferior ao padrão. Valores válidos de 1000 a 120000.

max_speech

integer

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

min_utterances

integer

Quantidade mínima de áudios a serem processados. Valor padrão = 1

max_utterances

integer

Quantidade máxima de áudios a serem processados. Valor padrão = 10

max_constraint_behavior

string

Indica o comportamento quando os valores definidos por max_utterances e/ou max_speech forem ultrapassados. Valor padrão = trim (opcional). Os valores válidos são: trim - Descarta áudio para que o total aproxime-se do limite superior. Se o limiar atingido for max_speech, o áudio pode ser cortado em algum silêncio; se o limiar atingido for max_utterances, áudios excedentes serão descartados. O processo continua normalmente (sem erro); abort - Aborta todo o processo e retorna um erro para o usuário

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 - formato PCM Linear com a taxa de 16kHz (conforme o modelo instalado)

  • application/octet-stream - o stream deve possuir cabeçalho e ter um formato suportado

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)

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

    • zeroed_removed - [bool]

    • dtmf_removed - [bool]

    • power - [float]

    • dc_level - [float]

    • clipping_rate - [float]

    • dynamic_range -

      • 0[float]

      • 1[float]

    • effective_bits - [int]

    • effective_badwidth -[float]

    • amplitude_factor - [float]

    • lzc_rate - [float]

    • active_lzc_rate - [float]

    • active_clipping_rate - [float]

    • snr - [float]

    • rejected- [bool]

Regras de parâmetros

Se o usuário não tiver atingido o min_utterances e/ou o min_speech, receberá uma exceção. Caso o usuário definida o parâmetro max_utterances e/ou no max_speech, o comportamento será determinado pelo modo definido na variável max_constraint_behavior. (consultar o parâmetro para entender seu comportamento).

Exemplo:

Chamada REST enviando o audio via multipart:

curl --request POST \
  https://speechd.cpqd.com.br/bio/rest/v2/enroll \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: multipart/form-data' \
  --form 'enroll={
      "repository_uri": "https://speechd.cpqd.com.br/user",
      "id": "<voiceprint_id>"
    }' \
  --form audio=@<path-to-file>/audio1.wav

Exemplo de resposta:

{
  "transaction_id": "bmt-enroll-9dc21c7c-09ca-42b6-a283-847a753c6659",
  "voiceprint": {
    "id": "a7ed3408-2d7b-46ef-807f-2b30f2da606f",
    "adapted": false
  },
  "audio_info": [
    {
      "audio_duration": 119955,
      "speech_duration": 73425,
      "zeroed_removed": false,
      "dtmf_removed": false,
      "power": -21.889084415047883,
      "dc_level": 0.00021456846700536808,
      "clipping_rate": 0,
      "dynamic_range": [
        -0.3715332732614632,
        0.39319953718807443
      ],
      "effective_bits": 15,
      "effective_bandwidth": 4181.4,
      "amplitude_factor": 1.017295195362025,
      "lzc_rate": 0.0889537307211338,
      "active_lzc_rate": 0.010254272613588996,
      "active_clipping_rate": 0,
      "snr": 22.145335662468202,
      "rejected": false
    }
  ]
}