Microsoft认知服务-说话者识别API-识别-错误

时间:2020-03-04 11:58:52

标签: python microsoft-cognitive voice-recognition azure-cognitive-services

在此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))

1 个答案:

答案 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:])