Exemplos com a API REST¶
Cadastro de voiceprint¶
Requisição enviando múltiplos arquivos de áudio:
curl --request POST \
--url https://<speech_server>/speakverify/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 \
--form audio=@<path-to-file>/audio3.wav
Resposta:
{
"transaction_id": "bmt-enroll-53fee1e0-c123-4844-8a04-a897dce73095",
"voiceprint": {
"id": "<voiceprint_id>",
"adapted": false
},
"audio_info": [
{
"audio_duration": 7253,
"speech_duration": 4910
},
{
"audio_duration": 4260,
"speech_duration": 4130
},
{
"audio_duration": 7253,
"speech_duration": 4910
}
]
}
Verificação¶
Requisição:
curl --request POST \
--url https://<speech_server>/speakverify/rest/v2/verify \
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
--form 'verify={
"repository_uri": "https:<repository>",
"min_verification_score": "0.5",
"min_verification_audio": "1000",
"id": "<voiceprint_id>"
}' \
--form audio=@<path-to-file>/audio1.wav \
--form audio=@<path-to-file>/audio2.wav \
--form audio=@<path-to-file>/audio3.wav
Resposta:
{
"transaction_id": "bmt-verify-6d6b8a4a-93d3-40e9-9fbe-da9f1c61e64f",
"voiceprint": [
{
"id": "<voiceprint_id>",
"verification": {
"score": 0.6369487047195435,
"decision": "ACCEPTED"
},
"error": null
}
],
"audio_info": [
{
"audio_duration": 2859,
"speech_duration": 2790
},
{
"audio_duration": 3640,
"speech_duration": 3580
},
{
"audio_duration": 7548,
"speech_duration": 5370
}
]
}
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://<speech_server>/speakverify/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 \
--form audio=@<path-to-file>/audio3.wav
Resposta:
{
"transaction_id": "bmt-enroll-b3b00b6b-03ca-4a71-82c7-afb5f91730b3",
"voiceprint": {
"id": "<voiceprint_id>",
"adapted": true
},
"audio_info": [
{
"audio_duration": 7253,
"speech_duration": 4910
},
{
"audio_duration": 4260,
"speech_duration": 4130
},
{
"audio_duration": 7253,
"speech_duration": 4910
}
]
}
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 PUT \
--url https://<repository>/v2/user/<voiceprint_id>/lock
Utilize o identificador no método na sequência.
curl --request DELETE \
--url https://<repository>/v2/user/<voiceprint_id>?lock_id=<lock_id>'
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://<repository>/v2/user/<voiceprint_id>/metainfo
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://<repository>/v2/user/<voiceprint_id>?lock_id=<lock_id> \
--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://<repository>/v2/user/<voiceprint_id>/audio
Resposta:
{
"entries":[
{
"uuid":"f40ca0fd-2f37-4a99-9d79-ef15c8d058cd",
"session_id":"4a8f01b8-78be-42ab-8641-c3143139d7cb",
"format":"pcm/16000/16/1",
"original":true,
"time":"2021-10-07T13:55:13.777457-03:00",
"operation":"enroll",
"score":0.0,
"tags":null
},
{
"uuid":"5a3b8a33-47be-4df2-ab15-668e5a77dce9",
"session_id":"4a8f01b8-78be-42ab-8641-c3143139d7cb",
"format":"pcm/16000/16/1",
"original":true,
"time":"2021-10-07T14:42:44.042919-03:00",
"operation":"verify",
"score":0.7048876881599426,
"tags":null
}
],
"Count":2
}
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://<repository>/v2/user/<voiceprint_id>/audio/<uuid>/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://<repository>/v2/user/<voiceprint_id>/audio/<uuid>