Exemplos com a API REST¶
Cadastro de voiceprint¶
Requisição enviando múltiplos arquivos de áudio:
curl --request POST \
url 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
}
]
}
Verificação¶
Requisição:
curl --request POST \
--url https://speechd.cpqd.com.br/bio/rest/v2/verify \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'verify={
"repository_uri": "https://speechd.cpqd.com.br/user",
"min_verification_score": "0.5",
"id": "<voiceprint_id>"
}' \
--form audio=@<path-to-file>/audio1.wav
Exemplo de Resposta:
{
"transaction_id": "bmt-verify-703be44d-e63f-443f-8124-1e18a2174845",
"voiceprint": [
{
"id": "c409358f-38f1-4389-8b58-78bd971a7487",
"verification": {
"score": 0.9834442734718323,
"decision": "ACCEPTED"
}
}
],
"audio_info": [
{
"audio_duration": 7691,
"speech_duration": 7271,
"zeroed_removed": false,
"dtmf_removed": false,
"power": -17.628903725058496,
"dc_level": -0.0000349099313034973,
"clipping_rate": 0,
"dynamic_range": [
-0.6654517077022912,
0.8049605973607294
],
"effective_bits": 16,
"effective_bandwidth": 3734.0700414398307,
"amplitude_factor": 0.4969187328069262,
"lzc_rate": 0.009102730819245773,
"active_lzc_rate": 0.009102730819245773,
"active_clipping_rate": 0,
"snr": 32.0740550380507,
"rejected": false
}
]
}
Atualização de voiceprint¶
Um voiceprint pode ser atualizado com novos arquivos de áudio. A requisição é a mesma do momento da criação, mas internamente, o voiceprint existente será atualizado com os novos áudios. Para treinar um voiceprint do zero, sem considerar os áudios iniciais, é necessário remover o voiceprint e criá-lo novamente.
curl --request POST \
--url https://speechd.cpqd.com.br/bio/rest/v2/enroll \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
--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-a9a6b242-11c9-4a61-99cc-dbb91c04a71d",
"voiceprint": {
"id": "<voiceprint_id>",
"adapted": true
},
"audio_info": [
{
"audio_duration": 7253,
"speech_duration": 4360,
"zeroed_removed": false,
"dtmf_removed": false,
"power": -20.966483141015924,
"dc_level": 5.496035018598288e-8,
"clipping_rate": 0,
"dynamic_range": [
-0.46653650931991925,
0.671681820096872
],
"effective_bits": 16,
"effective_bandwidth": 8000,
"amplitude_factor": 0.5955200632679187,
"lzc_rate": 0,
"active_lzc_rate": 0,
"active_clipping_rate": 0,
"snr": 41.49616696357043,
"rejected": false
}
]
}
Remoção de voiceprint¶
Um voiceprint pode ser removido diretamente no repositório. Todos os dados relacionados ao voiceprint são removidos. Para remover o voiceprint é necessário inicialmente obter o bloqueio do registro, para evitar concorrência com outros processos de escrita.
Para obter o bloqueio do registro, execute o comando e recupere o valor do identificador do bloqueio.
curl --request DELETE \
--url https://speechd.cpqd.com.br/user/rest/v2/user/<id>?lock_id=<id>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
Consulta de metadados do voiceprint¶
A aplicação pode definir um conjunto de metadados durante a criação de um voiceprint. A requisição a seguir permite recuperar as informações.
curl --request GET \
--url https://speechd.cpqd.com.br/user/rest/v2/user/<voiceprint_id>/metainfo \
--header 'Authorization: Bearer <token>' \
Resposta:
{
"<somedata_1>": "<a_value>",
"<somedata_2>": "<b_value>"
}
Atualização de metadados do voiceprint¶
Os metadados de um voiceprint podem ser atualizados. Para alterar o valor de um metadado basta enviar o novo valor. Para remover o metadado, o valor informado deve ser nulo. Antes de alterar um metadado, é necessário bloquear o registro do voiceprint para evitar inconsistências.
Utilize o valor do identificador do bloqueio (lock_id) na operação de atualização dos metadados. No exemplo abaixo, o dado1 será removido e o dado2 alterado:
curl --request PUT \
--url https://speechd.cpqd.com.br/user/rest/v2/user/<voiceprint_id>?lock_id=<lock_id> \
--header 'Authorization: Bearer <token>' \
--header "Content-Type: application/json" \
--data '{"data1":null, "data2": "new_value"}'
Consulta de detalhes sobre os áudios¶
A requisição a seguir permite recuperar as informações sobre o histórico dos áudios armazenados durante as operações de cadastro e verificação. A resposta indica a lista de áudios, permitindo o download a partir do identificador de cada arquivo.
curl --request GET \
--url https://speechd.cpqd.com.br/user/rest/v2/user/<voiceprint_id>/audio
--header 'Authorization: Bearer <token>' \
Resposta:
{
"entries": [
{
"uuid": "3e6bbe0d-8051-466b-83b5-07cfd82a7ee6",
"time": "2022-08-11T13:27:01.738764-03:00",
"session_id": "e1806589-8a56-4b6e-9f62-94b62d2adaaf",
"original_format": "audio/raw",
"format": "pcm/16000/16/1",
"operation": "enroll",
"biometric_model": "bmt-a1-v1.0",
"audio_info": {
"audio_duration": 7253,
"speech_duration": 4360,
"zeroed_removed": false,
"dtmf_removed": false,
"power": -20.966483141015924,
"dc_level": 5.496035018598288e-8,
"clipping_rate": 0,
"dynamic_range": [
-0.46653650931991925,
0.671681820096872
],
"effective_bits": 16,
"effective_bandwidth": 8000,
"amplitude_factor": 0.5955200632679187,
"lzc_rate": 0,
"active_lzc_rate": 0,
"active_clipping_rate": 0,
"snr": 41.49616696357043
}
}
],
"count": 1
}
Retorna o estado do bloqueio criado para o usuário identificado por id¶
A requisição a seguir permite obter o estado do bloqueio criado para o usuário identificado por id.
curl --request GET \
--url https://speechd.cpqd.com.br/user/rest/v2/user/<voiceprint_id>/lock \
--header 'Authorization: Bearer <token> \
--header 'Content-Type: multipart/form-data'
Resposta:
{
"write": true,
"lock_id": <id>
}
Download de arquivo de áudio¶
Com base no identificador uuid do arquivo, a requisição abaixo permite baixar o mesmo.
curl --request GET \
--url https://speechd.cpqd.com.br/user/rest/v2/user/<voiceprint_id>/audio/<uuid>/data
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data'
Resposta: o download do arquivo deve iniciar.
Remoção de arquivo de áudio¶
Com base no identificador uuid do arquivo, a requisição abaixo permite apagar do histórico.
curl --request DELETE \
--url https://speechd.cpqd.com.br/user/rest/v2/user/<voiceprint_id>/audio/<uuid>
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data'
Resposta: The audio was successfully deleted.