如何使用批量转录 API 到 Python

How to use Batch Transcription API through Python

我已经创建了一个 Azure Batch T运行scription 服务,它将 Azure blob 存储中的音频文件作为输入并与我共享 Speech to Text。

我可以使用 https://eastus.cris.ai/swagger/ui/index#/ 网站实现上述目标,运行 成功的 curl 命令是:

curl -X POST "https://eastus.cris.ai/api/speechtotext/v2.0/transcriptions" -H "accept: application/json" -H "Ocp-Apim-Subscription-Key: <my subscription key>" -H "Authorization: <my access token>" -H "Content-Type: application/json" -d "{ \"recordingsUrl\": \"<my azure blob audio file url>\", \"models\": [], \"locale\": \"en-US\", \"name\": \"<Some Name>\", \"description\": \"<Some Description>\", \"properties\": { \"ProfanityFilterMode\": \"Masked\", \"PunctuationMode\": \"DictatedAndAutomatic\" }}"

但是,如果我尝试通过 Python 以编程方式实现相同的目的,我会收到如下错误:

响应[400] {"code":"InvalidPayload","message":"No valid object could be found."}

这是我的代码:

import requests
url="https://eastus.cris.ai/api/speechtotext/v2.0/transcriptions"

headers={'accept' : 'application/json','Ocp-Apim-Subscription-Key  ':'<my subscription key', 'Authorization' : '<my access token>','Content-Type': 'application/json'}

data={'recordingsUrl' : '<my azure blob audio file url>' ,"models": [], 'locale' : 'en-US', 'name' : '<Some Name>','description' : '<Some Description>','properties' : {'ProfanityFilterMode': 'Masked','PunctuationMode': 'DictatedAndAutomatic'}}

r =requests.post(url,headers=headers,data=data, verify=False)
print(r)
print(r.text)

如果我在 requests.post

中犯了一些错误,请告诉我

此 API 需要 JSON 类型的负载。

您的代码未发送序列化 JSON 类型。

所以服务器响应消息意味着负载类型不匹配。

It just sending payloads with python dictionary type, not JSON.

它需要将数据负载转换为序列化的 JSON 格式。

1.Import json 个模块。

import requests, json

2.Change data 有效负载到 json json.dumps(data).

r =requests.post(url,headers=headers,data=json.dumps(data), verify=False)