如何通过Python使用批处理转录API

时间:2019-04-04 09:48:45

标签: python azure azure-speech

我已经创建了一个Azure批处理转录服务,它将来自Azure blob存储的音频文件作为输入,并与我共享语音转文本。

我可以使用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] {“代码”:“ InvalidPayload”,“消息”:“找不到有效的对象。”}

这是我的代码:

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)

让我知道我在request.post中是否犯了一些错误

1 个答案:

答案 0 :(得分:2)

此API需要JSON类型的有效负载。

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

因此服务器响应消息意味着有效负载类型不匹配。

  

它只是使用python字典类型发送有效载荷,而不是JSON。

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

1。导入json模块。

import requests, json

2。用datajson负载更改为json.dumps(data)

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