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
}
]
}