Microsoft Cognitive Services - Speaker Recognition API - Identification - error

微笑、不失礼 提交于 2020-04-07 08:25:12

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!