swagger: '2.0'
info:
title: Microsoft Azure Speaker Verification API
version: '2.0'
description: |-
This API is currently available in:
* West US - westus.api.cognitive.microsoft.com
x-ms-parameterized-host:
hostTemplate: '{Endpoint}/speaker/verification/v2.0'
useSchemePrefix: false
parameters:
- $ref: '#/parameters/Endpoint'
schemes:
- https
consumes:
- application/json
produces:
- application/json
securityDefinitions:
apiKeyHeader:
type: apiKey
name: Ocp-Apim-Subscription-Key
in: header
security:
- apiKeyHeader: []
parameters:
Endpoint:
name: Endpoint
description: >-
Supported Cognitive Services endpoints (protocol and hostname, for
example: https://westus.api.cognitive.microsoft.com).
x-ms-parameter-location: client
required: true
type: string
in: path
x-ms-skip-url-encoding: true
profileIdParam:
in: path
name: profileId
required: true
type: string
format: uuid
x-nullable: false
pattern: >-
^([0-9a-fA-F]){8}-?([0-9a-fA-F]){4}-?([0-9a-fA-F]){4}-?([0-9a-fA-F]){4}-?([0-9a-fA-F]){12}$
description: Unique identifier for profile id (guid).
x-ms-parameter-location: method
localeParam:
in: path
name: locale
required: true
type: string
x-nullable: false
pattern: ^[a-zA-Z]{2}-?[a-zA-Z]{2}$
description: A combination of language code and country code.
x-ms-parameter-location: method
definitions:
ProfileId:
type: string
pattern: >-
^([0-9a-fA-F]){8}-?([0-9a-fA-F]){4}-?([0-9a-fA-F]){4}-?([0-9a-fA-F]){4}-?([0-9a-fA-F]){12}$
description: Unique identifier for profile id (guid).
format: uuid
x-nullable: false
example: 49a36324-fc4b-4387-aa06-090cfbf0064f
Locale:
type: string
pattern: ^[a-zA-Z]{2}-?[a-zA-Z]{2}$
description: >-
Language identifier consisting of a combination of language code and
country code.
x-nullable: false
example: en-US
EnrollmentStatus:
type: string
description: >-
Status representing the current state of the profile. Available values
are:
* Enrolling: profile has no voice print and not ready for recognition
requests.
* Training: voice print of profile is being created and can’t be used for
recognition at the moment.
* Enrolled: profile has a voice print and ready for recognition requests.
enum:
- Enrolling
- Training
- Enrolled
x-ms-enum:
name: TrainingStatusType
modelAsString: false
example: Enrolling
CreatedDateTime:
type: string
description: Profile creation datetime.
example: '2015-04-23T18:25:43.41Z'
LastUpdatedDateTime:
type: string
description: Last datetime when the profile was updated.
example: '2015-04-23T19:34:51.52Z'
EnrollmentsCount:
type: integer
description: Number of enrolment audios accepted for this profile.
example: 1
EnrollmentsLength:
type: number
description: Total length of enrollment audios accepted for this profile in seconds.
example: 1.83
EnrollmentsSpeechLength:
type: number
description: >-
Summation of pure speech (which is the amount of audio after removing
silence and non-speech segments) across all profile enrollments in
seconds.
example: 1.35
RemainingEnrollmentsCount:
type: integer
description: Number of enrollment audios needed to complete profile enrollment.
example: 2
RemainingEnrollmentsSpeechLength:
type: number
description: >-
Amount of pure speech (which is the amount of audio after removing silence
and non-speech segments) needed to complete profile enrollment in seconds.
example: 18.65
ModelVersion:
type: string
pattern: ^\d{4}-\d{2}-\d{2}$
description: >-
Date specifying the model assigned to this profile. Format is yyyy-mm-dd.
If profile has no enrollments, this value will be empty.
example: '2019-12-05'
LocaleInfo:
description: Speaker profile locale
properties:
locale:
$ref: '#/definitions/Locale'
TdProfileInfoList:
description: Text-Dependent Speaker profile info list
properties:
profiles:
items:
$ref: '#/definitions/TdProfileInfo'
'@nextLink':
type: string
example: >-
https://{Endpoint}/text-dependent/profiles?$top=35&$continuationToken=U21pdGg1QmVuOTk5
TdProfileInfo:
description: Text-Dependent Speaker profile info
properties:
profileId:
$ref: '#/definitions/ProfileId'
locale:
$ref: '#/definitions/Locale'
enrollmentStatus:
$ref: '#/definitions/EnrollmentStatus'
createdDateTime:
$ref: '#/definitions/CreatedDateTime'
lastUpdatedDateTime:
$ref: '#/definitions/LastUpdatedDateTime'
enrollmentsCount:
$ref: '#/definitions/EnrollmentsCount'
enrollmentsLength:
$ref: '#/definitions/EnrollmentsLength'
enrollmentsSpeechLength:
$ref: '#/definitions/EnrollmentsSpeechLength'
remainingEnrollmentsCount:
$ref: '#/definitions/RemainingEnrollmentsCount'
modelVersion:
$ref: '#/definitions/ModelVersion'
TdEnrollmentInfo:
description: Text-Dependent Speaker profile enrollment info
properties:
profileId:
$ref: '#/definitions/ProfileId'
enrollmentStatus:
$ref: '#/definitions/EnrollmentStatus'
enrollmentsCount:
$ref: '#/definitions/EnrollmentsCount'
enrollmentsLength:
$ref: '#/definitions/EnrollmentsLength'
enrollmentsSpeechLength:
$ref: '#/definitions/EnrollmentsSpeechLength'
remainingEnrollmentsCount:
$ref: '#/definitions/RemainingEnrollmentsCount'
passPhrase:
type: string
description: Passphrase associated with this enrollment.
example: my voice is my passport verify me
audioLength:
type: number
description: This enrolment audio length in seconds.
example: 1.83
audioSpeechLength:
type: number
description: >-
This enrollment audio pure speech (which is the amount of audio after
removing silence and non-speech segments) length in seconds.
example: 1.35
TiProfileInfoList:
description: Text-Independent Speaker profile info list
properties:
profiles:
items:
$ref: '#/definitions/TiProfileInfo'
'@nextLink':
type: string
example: >-
https://{Endpoint}/text-independent/profiles?$top=35&$continuationToken=U21pdGg1QmVuOTk5
TiProfileInfo:
description: Text-Independent Speaker profile info
properties:
profileId:
$ref: '#/definitions/ProfileId'
locale:
$ref: '#/definitions/Locale'
enrollmentStatus:
$ref: '#/definitions/EnrollmentStatus'
createdDateTime:
$ref: '#/definitions/CreatedDateTime'
lastUpdatedDateTime:
$ref: '#/definitions/LastUpdatedDateTime'
enrollmentsCount:
$ref: '#/definitions/EnrollmentsCount'
enrollmentsLength:
$ref: '#/definitions/EnrollmentsLength'
enrollmentsSpeechLength:
$ref: '#/definitions/EnrollmentsSpeechLength'
remainingEnrollmentsSpeechLength:
$ref: '#/definitions/RemainingEnrollmentsSpeechLength'
modelVersion:
$ref: '#/definitions/ModelVersion'
TiEnrollmentInfo:
description: Text-Independent Speaker profile enrollment info
properties:
profileId:
$ref: '#/definitions/ProfileId'
enrollmentStatus:
$ref: '#/definitions/EnrollmentStatus'
enrollmentsCount:
$ref: '#/definitions/EnrollmentsCount'
enrollmentsLength:
$ref: '#/definitions/EnrollmentsLength'
enrollmentsSpeechLength:
$ref: '#/definitions/EnrollmentsSpeechLength'
remainingEnrollmentsSpeechLength:
$ref: '#/definitions/RemainingEnrollmentsSpeechLength'
audioLength:
type: number
description: This enrolment audio length in seconds.
example: 1.83
audioSpeechLength:
type: number
description: >-
This enrollment audio pure speech (which is the amount of audio after
removing silence and non-speech segments) length in seconds.
example: 1.35
RecognitionInfo:
description: Speaker recognition result
properties:
recognitionResult:
type: string
description: Does audio belong to targeted profile?
enum:
- accept
- reject
x-ms-enum:
name: ResultType
modelAsString: false
example: Accept
score:
type: number
description: >-
A float number indicating the similarity between input audio and
targeted voice print. This number must be between 0 and 1. A higher
number means higher similarity.
example: 0.63
Error:
description: Speaker error message
required:
- error
properties:
error:
properties:
code:
type: string
message:
type: string
responses:
NotFound:
description: NotFound - Requested profile doesn't exist
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: Not Found
message: Requested profile doesn't exist
x-ms-error-response: true
Unauthorized:
description: >-
Request is not authorized. Make sure subscription key is included and
valid.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: Unauthorized
message: >-
Request is not authorized. Make sure subscription key is included
and valid.
x-ms-error-response: true
RateLimit:
description: Rate limit is exceeded.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: RateLimit
message: Rate limit is exceeded.
x-ms-error-response: true
ServerError:
description: Internal Server Error.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InternalServerError
message: Internal Server Error.
x-ms-error-response: true
paths:
/text-dependent/profiles:
post:
description: >-
Create a new speaker profile with specified locale.
One subscription
can create 10,000 speaker profiles at most.
operationId: microsoftAzureTextdependentCreateprofile
summary: Microsoft Azure Create Profile
x-ms-examples:
Successful Query:
$ref: ./examples/textDependentCreateProfile.json
tags:
- Text-Dependent
parameters:
- in: body
name: profileInfo
description: >-
Provide following detail info when creating a new profile.
Fields | Description
------- | ------------
locale | Locale for the language of this speaker profile. A
complete supported locale list is here:
schema:
required:
- locale
$ref: '#/definitions/LocaleInfo'
responses:
'201':
description: >-
Speaker profile created successfully. GUID is returned to reference
the created profile.
headers:
Location:
type: string
description: url location of new resource
schema:
$ref: '#/definitions/TdProfileInfo'
'400':
description: >-
Bad Request
* InvalidRequest - Request body is missing.
* InvalidRequest - Invalid JSON format.
* InvalidRequest - Locale parameter is missing.
* InvalidArgument - Invalid locale value. Supported locales are
{comma-separated list of locales}.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidRequest
message: Request body is missing.
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'403':
description: Forbidden - Maximum allowed number of profiles is 10,000.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: Forbidden
message: Maximum allowed number of profiles is 10,000.
x-ms-error-response: true
'415':
description: >-
UnsupportedMediaType - Unsupported media type. Only
'application/JSON' is accepted.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: UnsupportedMediaType
message: Unsupported media type. Only 'application/JSON' is accepted.
x-ms-error-response: true
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
get:
x-ms-pageable:
nextLinkName: '@nextLink'
itemName: profiles
description: >-
Retrieves a set of profiles.
Profiles are sorted alphabetically by
ProfileId
operationId: microsoftAzureTextdependentListprofiles
summary: Microsoft Azure List Profiles
x-ms-examples:
Successful Query:
$ref: ./examples/textDependentListProfiles.json
tags:
- Text-Dependent
parameters:
- in: query
name: $top
description: >-
The number of profiles to return. Default is 100 and the maximum is
500
type: integer
responses:
'200':
description: OK
schema:
$ref: '#/definitions/TdProfileInfoList'
'400':
description: >-
Bad Request
* InvalidArgument - Invalid $top parameter value. Value should be
positive integer in the range [1, 500].
* InvalidArgument - Invalid $continuationToken value.
$continuationToken must be generated form a prior API call.
* InvalidArgument - $filter parameter is not supported.
* InvalidArgument - $skip parameter is not supported.
* InvalidArgument - $orderBy parameter is not supported.
* InvalidArgument - $delta parameter is not supported.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidArgument
message: >-
Invalid $top parameter value. Value should be positive integer
in the range [1, 500]
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-dependent/profiles/{profileId}:
parameters:
- $ref: '#/parameters/profileIdParam'
get:
description: Retrieves a single profile by ID.
operationId: microsoftAzureTextdependentGetprofile
summary: Microsoft Azure Retrieve Single Profile
x-ms-examples:
Successful Query:
$ref: ./examples/textDependentFetchProfile.json
tags:
- Text-Dependent
responses:
'200':
description: OK
schema:
$ref: '#/definitions/TdProfileInfo'
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
delete:
description: Deletes an existing profile.
operationId: microsoftAzureTextdependentDeleteprofile
summary: Microsoft Azure Delete Profile
x-ms-examples:
Successful Query:
$ref: ./examples/deleteProfile.json
tags:
- Text-Dependent
responses:
'204':
description: OK
'401':
$ref: '#/responses/Unauthorized'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-dependent/profiles/{profileId}/reset:
parameters:
- $ref: '#/parameters/profileIdParam'
post:
description: >-
Resets existing profile to its original creation state. The reset
operation does the following:
* Updates enrollmentStatus to
Enrolling.
* Updates lastUpdatedDateTime.
* Updates
enrollmentsCount to 0.
* Updates enrollmentsLength to 0.
* Updates
enrollmentsSpeechLength to 0.
* Updates remainingEnrollmentsCount to
the initial required number.
* Removes all associated enrollments
from storage.
* Removes chosen passphrase association.
* Resets
value of modelVersion.
operationId: microsoftAzureTextdependentResetprofile
summary: Microsoft Azure Reset Profile
x-ms-examples:
Successful Query:
$ref: ./examples/resetProfile.json
tags:
- Text-Dependent
responses:
'204':
description: OK
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-dependent/profiles/{profileId}/enrollments:
parameters:
- $ref: '#/parameters/profileIdParam'
post:
description: >-
Adds an enrollment to existing profile.
If the minimum number of
requested enrollment audios is reached, a voice print is created.
If
the voice print was created before, it gets recreated from all existing
enrollment audios including the new one.
Limitations:
*
Minimum audio input length per request is **1 second**
* Maximum
audio input length per request is **10 seconds**
* Minimum number of
enrollments for creating a voiceprint is **3**
* Maximum number of
enrollments for creating a voiceprint is **50**
* Minimum audio
Signal-to-noise ratio (SNR) is **10dB**
Constraints:
* First
enrollment must match an existing passphrase.
* All enrollments after
the first one, must use the same passphrase used in the first
enrollment.
operationId: microsoftAzureTextdependentCreateenrollment
summary: Microsoft Azure Enroll Profile
x-ms-examples:
Successful Query:
$ref: ./examples/textDependentCreateEnrollment.json
tags:
- Text-Dependent
consumes:
- audio/wav; codecs=audio/pcm
parameters:
- name: audioData
in: body
description: >-
Binary audio file. Supported formats are audio/wav;
codecs=audio/pcm. Supports audio up to 5MB.
required: true
schema:
type: object
format: file
responses:
'201':
description: Created
schema:
$ref: '#/definitions/TdEnrollmentInfo'
'400':
description: >-
Bad Request
* InvalidRequest - Invalid audio length. Maximum allowed length is
10 seconds.
* InvalidRequest - Invalid audio length. Minimum allowed length is 1
second.
* InvalidRequest - Invalid audio format. Supported format is WAV
16Khz 16bit Mono PCM.
* InvalidRequest - Invalid passphrase.
* InvalidRequest - Audio is too noisy. The minimum allowed
Signal-to-noise ratio (SNR) is 10dB.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidRequest
message: Audio is too noisy.
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'403':
description: >-
Forbidden
* InvalidOperation - Maximum allowed number of enrollments per
profile is 50.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidOperation
message: Maximum allowed number of enrollments per profile is 50.
x-ms-error-response: true
'404':
$ref: '#/responses/NotFound'
'409':
description: >-
Conflict
* Conflict - Sending concurrent requests on same profile is not
allowed.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: Conflict
message: Sending concurrent requests on same profile is not allowed.
x-ms-error-response: true
'415':
description: >-
UnsupportedMediaType - Unsupported media type. Only "audio/wav;
codecs=audio/pcm" is accepted.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: UnsupportedMediaType
message: >-
Unsupported media type. Only 'audio/wav; codecs=audio/pcm' is
accepted.
x-ms-error-response: true
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-dependent/profiles/{profileId}/verify:
parameters:
- $ref: '#/parameters/profileIdParam'
post:
description: >-
Verifies existing profiles against input audio.
Limitations:
*
Minimum audio input length per request is **1 second**
* Maximum
audio input length per request is **10 seconds**
* Minimum audio
Signal-to-noise ratio (SNR) is **10 dB**
operationId: microsoftAzureTextdependentVerifyprofile
summary: Microsoft Azure Verify Profile
x-ms-examples:
Successful Query:
$ref: ./examples/verify.json
tags:
- Text-Dependent
consumes:
- audio/wav; codecs=audio/pcm
parameters:
- name: audioData
in: body
description: >-
Binary audio file. Supported formats are audio/wav;
codecs=audio/pcm. Supports audio up to 5MB.
required: true
schema:
type: object
format: file
responses:
'200':
description: OK
schema:
$ref: '#/definitions/RecognitionInfo'
'400':
description: >-
Bad Request
* InvalidRequest - Invalid audio length. Maximum allowed length is
10 seconds.
* InvalidRequest - Invalid audio length. Minimum allowed length is 1
second.
* InvalidRequest - Invalid audio format. Supported format is 16Khz
16bit Mono PCM.
* InvalidRequest - Audio is too noisy. The minimum allowed
Signal-to-noise ratio (SNR) is 10dB.
* InvalidRequest - Profile is not enrolled.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidRequest
message: Profile is not enrolled.
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'415':
description: >-
UnsupportedMediaType - Unsupported media type. Only "audio/wav;
codecs=audio/pcm" is accepted.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: UnsupportedMediaType
message: >-
Unsupported media type. Only 'audio/wav; codecs=audio/pcm' is
accepted.
x-ms-error-response: true
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-dependent/phrases/{locale}:
parameters:
- $ref: '#/parameters/localeParam'
get:
description: Retrieves list of supported passphrases for a specific locale.
operationId: microsoftAzureTextdependentListphrases
summary: Microsoft Azure Pass Phrases
x-ms-examples:
Successful Query:
$ref: ./examples/phrases.json
tags:
- Text-Dependent
responses:
'200':
description: OK
schema:
items:
type: string
example:
- my voice is my passport verify me
- my voice is stronger than passwords
'400':
description: >-
Bad Request
* InvalidRequest - Locale parameter is missing.
* InvalidArgument - Invalid locale value. Supported locales are
{comma-separated list of locales}.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidRequest
message: Locale parameter is missing.
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-independent/profiles:
post:
description: >-
Creates a new speaker profile with specified locale.
One subscription
can create 10,000 speaker profiles at most.
operationId: microsoftAzureTextindependentCreateprofile
summary: Microsoft Azure Create Profile
x-ms-examples:
Successful Query:
$ref: ./examples/textIndependentCreateProfile.json
tags:
- Text-Independent
parameters:
- in: body
name: profileInfo
description: >-
Provide following detail info when creating a new profile.
Fields | Description
------- | ------------
locale | Locale for the language of this speaker profile. A
complete supported locale list is here: - **en-US**
- **es-ES**
- **fr-FR**
- **zh-CN**
- **de-DE**
- **en-GB**
- **en-AU**
- **en-CA**
- **fr-CA**
- **it-IT**
- **es-MX**
- **ja-JP**
- **pt-BR**
- **en-IN**
schema:
required:
- locale
$ref: '#/definitions/LocaleInfo'
responses:
'201':
description: >-
Speaker profile created successfully. GUID is returned to reference
the created profile.
headers:
Location:
type: string
description: url location of new resource
schema:
$ref: '#/definitions/TiProfileInfo'
'400':
description: >-
Bad Request
* InvalidRequest - Request body is missing.
* InvalidRequest - Invalid JSON format.
* InvalidRequest - Locale parameter is missing.
* InvalidArgument - Invalid locale value. Supported locales are
{comma-separated list of locales}.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidRequest
message: Request body is missing.
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'403':
description: Forbidden - Maximum allowed number of profiles is 10,000.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: Forbidden
message: Maximum allowed number of profiles is 10,000.
x-ms-error-response: true
'415':
description: >-
UnsupportedMediaType - Unsupported media type. Only
'application/JSON' is accepted.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: UnsupportedMediaType
message: Unsupported media type. Only 'application/JSON' is accepted.
x-ms-error-response: true
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
get:
x-ms-pageable:
nextLinkName: '@nextLink'
description: >-
Retrieves a set of profiles.
Profiles are sorted alphabetically by
ProfileId
operationId: microsoftAzureTextindependentListprofiles
summary: Microsoft Azure List Profiles
x-ms-examples:
Successful Query:
$ref: ./examples/textIndependentListProfiles.json
tags:
- Text-Independent
parameters:
- in: query
name: $top
description: >-
The number of profiles to return. Default is 100 and the maximum is
500
type: integer
responses:
'200':
description: OK
schema:
$ref: '#/definitions/TiProfileInfoList'
'400':
description: >-
Bad Request
* InvalidArgument - Invalid $top parameter value. Value should be
positive integer in the range [1, 500].
* InvalidArgument - Invalid $continuationToken value.
$continuationToken must be generated form a prior API call.
* InvalidArgument - $filter parameter is not supported.
* InvalidArgument - $skip parameter is not supported.
* InvalidArgument - $orderBy parameter is not supported.
* InvalidArgument - $delta parameter is not supported.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidArgument
message: >-
Invalid $top parameter value. Value should be positive integer
in the range [1, 500]
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-independent/profiles/{profileId}:
parameters:
- $ref: '#/parameters/profileIdParam'
get:
description: Retrieves a single profile by ID.
operationId: microsoftAzureTextindependentGetprofile
summary: Microsoft Azure Retrieve Single Profile
x-ms-examples:
Successful Query:
$ref: ./examples/textIndependentFetchProfile.json
tags:
- Text-Independent
responses:
'200':
description: OK
schema:
$ref: '#/definitions/TiProfileInfo'
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
delete:
description: Deletes an existing profile.
operationId: microsoftAzureTextindependentDeleteprofile
summary: Microsoft Azure Delete Profile
x-ms-examples:
Successful Query:
$ref: ./examples/deleteProfile.json
tags:
- Text-Independent
responses:
'204':
description: OK
'401':
$ref: '#/responses/Unauthorized'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-independent/profiles/{profileId}/reset:
parameters:
- $ref: '#/parameters/profileIdParam'
post:
description: >-
Resets existing profile to its original creation state. The reset
operation does the following:
* Updates enrollmentStatus to
Enrolling.
* Updates lastUpdatedDateTime.
* Updates
enrollmentsCount to 0.
* Updates enrollmentsLength to 0.
* Updates
enrollmentsSpeechLength to 0.
* Updates
remainingEnrollmentsSpeechLength to the required number.
* Removes
all associated enrollments from storage.
* Removes chosen passphrase
association.
* Resets value of modelVersion.
operationId: microsoftAzureTextindependentResetprofile
summary: Microsoft Azure Reset Profile
x-ms-examples:
Successful Query:
$ref: ./examples/resetProfile.json
tags:
- Text-Independent
responses:
'204':
description: OK
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-independent/profiles/{profileId}/enrollments:
parameters:
- $ref: '#/parameters/profileIdParam'
post:
description: >-
Adds enrollments to existing profile.
If the minimum number of
requested enrollment audios is reached, a voice print is created.
If
the voice print was created before, it gets recreated from all existing
enrollment including the new one.
Limitations:
* Minimum audio
input length per request is **1 second**
* Maximum audio input length
per request is **120 seconds**
* Minimum total effective speech
length (excluding silence and other non-speech frames) for creating a
voiceprint is **20 seconds**
This limitation can be disabled by
setting "ignoreMinLength" to **true**.
* Maximum total audio
input length allowed for creating a voiceprint is **300 seconds**
*
Minimum audio Signal-to-noise ratio (SNR) is **0dB**
operationId: microsoftAzureTextindependentCreateenrollment
summary: Microsoft Azure Enroll Profile
x-ms-examples:
Successful Query:
$ref: ./examples/textIndependentCreateEnrollment.json
tags:
- Text-Independent
consumes:
- audio/wav; codecs=audio/pcm
parameters:
- in: query
name: ignoreMinLength
type: boolean
description: >-
If true, a voice print will be created immediately for this profile
regardless of how much speech is supplied or stored. Default is
false.
- name: audioData
in: body
description: >-
Binary audio file. Supported formats are audio/wav;
codecs=audio/pcm. Supports audio up to 5MB.
required: true
schema:
type: object
format: file
responses:
'201':
description: Created
schema:
$ref: '#/definitions/TiEnrollmentInfo'
'400':
description: >-
Bad Request
* InvalidRequest - Invalid audio length. Maximum allowed length per
enrollment request is 120 seconds.
* InvalidRequest - Invalid audio length. Minimum allowed length per
enrollment request is 1 second.
* InvalidRequest - Invalid audio format. Supported format is 16Khz
16bit Mono PCM.
* InvalidArgument - Invalid ignoreMinLength parameter value. Valid
values are "true" and "false".
* InvalidRequest - Audio is too noisy. The minimum allowed
Signal-to-noise ratio (SNR) is 0dB.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidRequest
message: Audio is too noisy.
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'403':
description: >-
Forbidden
* InvalidRequest - Maximum allowed length across all profile
enrollments is 300 seconds.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidRequest
message: >-
Maximum allowed length across all profile enrollments is 300
seconds.
x-ms-error-response: true
'404':
$ref: '#/responses/NotFound'
'409':
description: >-
Conflict
* Conflict - Sending concurrent requests on same profile is not
allowed.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: Conflict
message: Sending concurrent requests on same profile is not allowed.
x-ms-error-response: true
'415':
description: >-
UnsupportedMediaType - Unsupported media type. Only "audio/wav;
codecs=audio/pcm" is accepted.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: UnsupportedMediaType
message: >-
Unsupported media type. Only 'audio/wav; codecs=audio/pcm' is
accepted.
x-ms-error-response: true
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
/text-independent/profiles/{profileId}/verify:
parameters:
- $ref: '#/parameters/profileIdParam'
post:
description: >-
Verifies existing profiles against input audio.
Limitations:
*
Minimum audio input length is **1 second**
* Maximum audio input
length is **120 seconds**
* Minimum effective speech length
(excluding silence and other "non-speech" frames) is **4 seconds**
This limitation can be disabled by setting "ignoreMinLength" to
**true**.
* Minimum audio Signal-to-noise ratio (SNR) is **0dB**
operationId: microsoftAzureTextindependentVerifyprofile
summary: Microsoft Azure Verify Profile
x-ms-examples:
Successful Query:
$ref: ./examples/verify.json
tags:
- Text-Independent
consumes:
- audio/wav; codecs=audio/pcm
parameters:
- in: query
name: ignoreMinLength
type: boolean
description: >-
If true, a voice print will be created immediately for this profile
regardless of how much speech is supplied or stored. Default is
false.
- name: audioData
in: body
description: >-
Binary audio file. Supported formats are audio/wav;
codecs=audio/pcm. Supports audio up to 5MB.
required: true
schema:
type: object
format: file
responses:
'200':
description: OK
schema:
$ref: '#/definitions/RecognitionInfo'
'400':
description: >-
Bad Request
* InvalidRequest - Invalid audio length. Maximum allowed length per
recognition request is 120 seconds.
* InvalidRequest - Invalid audio length. Minimum allowed length per
recognition request is 1 second.
* InvalidRequest - Invalid audio format. Supported format is 16Khz
16bit Mono PCM.
* InvalidArgument - Invalid ignoreMinLength parameter value. Valid
values are "true" and "false".
* InvalidRequest - Profile is not enrolled.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: InvalidRequest
message: Profile is not enrolled.
x-ms-error-response: true
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'415':
description: >-
UnsupportedMediaType - Unsupported media type. Only "audio/wav;
codecs=audio/pcm" is accepted.
schema:
$ref: '#/definitions/Error'
examples:
application/json:
error:
code: UnsupportedMediaType
message: >-
Unsupported media type. Only 'audio/wav; codecs=audio/pcm' is
accepted.
x-ms-error-response: true
'429':
$ref: '#/responses/RateLimit'
'500':
$ref: '#/responses/ServerError'
tags:
- name: Text-Dependent
- name: Text-Independent