Microsoft 认知服务 - 说话人识别 API - 验证 - 错误-SpeakerInvalid

Microsoft Cognitive Services - Speaker Recognition API - Verification - error-SpeakerInvalid

我在验证过程中仍然遇到错误

{"error":{"code":"BadRequest","message":"SpeakerInvalid"}}'

我的音频是正确的,因为它很容易注册

##code for API CALL speaker verification 

import http.client, urllib.request, urllib.parse, urllib.error, base64
subscription_key = 'XXXXXXXXXXXXXXXXXXXXXXX'

headers = {
# Request headers
"Content-Type": 'multipart/form-data',
"Ocp-Apim-Subscription-Key": subscription_key,
}

params = urllib.parse.urlencode({
    'verificationProfileId':'445b849b-6418-4443-961b-77bd88196223',

})

#body = {
#}
try:
    conn = http.client.HTTPSConnection('speaker-recognition-api.cognitiveservices.azure.com')
    body = open('pp.wav','rb') //pp.wav is my audio file
    conn.request("POST", "/spid/v1.0/verify?verificationProfileId=445b849b-6418-4443-961b-77bd88196223?%s" % params, body, headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))

我可以重现你的问题。您收到此错误是因为 url 末尾有一个 ?,但是 verify 后面已经有一个 ?。因此,如果您想向请求 url 添加参数,您应该使用 & 就像此 API 文档中的示例代码:Speaker Recognition - Verification .

下面是我的工作代码。

try:
    conn = http.client.HTTPSConnection('geospeaker.cognitiveservices.azure.com')


    body=open("output4.wav","rb")
    conn.request("POST", "/spid/v1.0/verify?verificationProfileId=1ae143b0-c301-4345-9295-3e34ad367092?%s" % params, body, headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except OSError as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))