问题
In this API I had successfully created Identification Profile, as well as created enrollment successfully and checked the operation status and received successfully enrolled.
Now I am trying to identify speaker but I am getting an error : b'{"error":{"code":"BadRequest","message":"Audio too long"}}' b'{"error":{"code":"BadRequest","message":"Audio too short"}}'
I tried various voice samples with different sizes like 5-Second, 10-Second, 15-Second, 30-Second, 40-Seconds, 80-Seconds. And also mentioned identificationProfileIds should be as strings (How to do that)
For audio Recording, I am using $rec -c 1 -r 16000 -b 16 xa.wav
But still getting the same errors I hope there might be some problem in my code. Please Help me If you can provide me the code for Speaker - Identification it will be so much helpful
import http.client, urllib.request, urllib.parse, urllib.error, base64
subscription_key = 'XXXXXXXXXXXXXXXXXXXX'
headers = {
# Request headers
'Content-Type': 'multipart/form-data',
'Ocp-Apim-Subscription-Key': subscription_key,
}
params = urllib.parse.urlencode({
# Request parameters
# 'shortAudio': 'false',
"identificationProfileIds":"080d22d6-917e-487f-a553-fb13a0575067",
})
try:
conn = http.client.HTTPSConnection('speaker-recognition-api.cognitiveservices.azure.com')
body = open('xa.wav','rb')
#aud = base64.b64encode(body.read())
print(body)
conn.request("POST", "/spid/v1.0/identify?identificationProfileIds=080d22d6-917e-487f-a553-fb13a0575067&%s" % params, body, headers)
response = conn.getresponse()
print(response)
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
回答1:
You can try using the Speaker Recognition Python sample app as start and work from there, which you can find publicly available on GitHub by Microsoft here
You'll have to set your values in place in the respective files and particularly look for IdentifyFile.py
import IdentificationServiceHttpClientHelper
import sys
def identify_file(subscription_key, file_path, force_short_audio, profile_ids):
"""Identify an audio file on the server.
Arguments:
subscription_key -- the subscription key string
file_path -- the audio file path for identification
profile_ids -- an array of test profile IDs strings
force_short_audio -- waive the recommended minimum audio limit needed for enrollment
"""
helper = IdentificationServiceHttpClientHelper.IdentificationServiceHttpClientHelper(
subscription_key)
identification_response = helper.identify_file(
file_path, profile_ids,
force_short_audio.lower() == "true")
print('Identified Speaker = {0}'.format(identification_response.get_identified_profile_id()))
print('Confidence = {0}'.format(identification_response.get_confidence()))
if __name__ == "__main__":
if len(sys.argv) < 5:
print('Usage: python IdentifyFile.py <subscription_key> <identification_file_path>'
' <profile_ids>...')
print('\t<subscription_key> is the subscription key for the service')
print('\t<identification_file_path> is the audio file path for identification')
print('\t<force_short_audio> True/False waives the recommended minimum audio limit needed '
'for enrollment')
print('\t<profile_ids> the profile IDs for the profiles to identify the audio from.')
sys.exit('Error: Incorrect Usage.')
identify_file(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4:])
来源:https://stackoverflow.com/questions/60525533/microsoft-cognitive-services-speaker-recognition-api-identification-error