You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure认知服务:Python调用说话人识别API传递多identificationProfileIds问题

解决Azure说话人识别API多identificationProfileIds传入问题

我看你在调用Azure认知服务的说话人识别注册API时,卡在了多人员ID的传递上——你的代码里把两个ID拼接成一个字符串还放进列表里,这是不对的。API要求多个identificationProfileIds用逗号分隔的字符串形式放在URL路径里,既不是列表也不是拼接成单个ID。

错误点分析

你代码里的这部分逻辑有问题:

format(identificationProfileIds = [obama + trump])

这么写会让URL变成类似.../identificationProfiles/['6c6xxx4aexxx']/enroll...的格式,完全不符合API的参数要求,自然会请求失败。

正确的代码实现

我们只需要把多个ID用逗号连接成字符串,再传入URL格式化即可。另外要注意,用requests传递multipart/form-data类型的音频文件时,用files参数更规范(直接传data可能会导致服务端解析异常):

import requests

# 你的人员识别ID
trump = "4aeXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
obama = "6c6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# 用逗号拼接多个ID,生成符合要求的字符串
profile_ids = f"{obama},{trump}"

# 构造正确的API请求地址
api_url = "https://westus.api.cognitive.microsoft.com/spid/v1.0/identificationProfiles/{identificationProfileIds}/enroll?shortAudio=False".format(identificationProfileIds=profile_ids)

# 请求头配置
headers = {
    "Ocp-Apim-Subscription-Key": "XXXXXXX",
}

# 用files参数传递音频文件(匹配multipart/form-data格式)
files = {
    'audio': open('XXXXXXX_16000_mono_16bit.wav', 'rb')
}

# 发送POST请求
response = requests.post(api_url, headers=headers, files=files)

# 打印响应结果排查问题
print(response.status_code)
print(response.json())

额外注意事项

  • 务必确保音频文件符合API要求:16kHz采样率、单声道、16位深度的WAV文件,这是注册成功的基础条件。
  • 如果需要传入更多人员ID,继续用逗号追加即可,比如f"{id1},{id2},{id3}"。
  • 记得替换代码里的订阅密钥和音频文件路径为你自己的实际值。

内容的提问来源于stack exchange,提问作者Marco Scarselli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:09:23