在此API中,我已经成功创建了标识配置文件,并成功创建了注册,并检查了操作状态并成功注册。
现在我正在尝试确定说话者,但我正在 一个错误 : b'{“错误”:{“代码”:“ BadRequest”,“消息”:“音频太长”}}' b'{“错误”:{“代码”:“ BadRequest”,“消息”:“音频太短”}}'
我尝试了各种不同大小的语音样本,例如5秒,10秒,15秒,30秒,40秒,80秒。 还要提到的IdentificationProfileIds应该作为字符串(操作方法)
对于音频录制,我使用的是$ rec -c 1 -r 16000 -b 16 xa.wav
但是仍然遇到相同的错误,我希望代码中可能存在一些问题。 请帮我 如果您可以向我提供说话者-身份验证代码,它将非常有帮助
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))
答案 0 :(得分:0)
您可以尝试从此处开始使用“说话者识别” Python示例应用程序,然后从Microsoft here
在GitHub上公开找到该应用程序。您必须在各个文件中设置相应的值,尤其要寻找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:])