python - 如何通过 Python 使用批量转录 API
问题描述
我创建了一个 Azure Batch Transcription Service,它将从 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":"找不到有效对象。"}
这是我的代码:
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 类型。
所以服务器响应消息意味着负载类型不匹配。
它只是发送具有 python 字典类型的有效负载,而不是 JSON。
它需要将数据负载转换为序列化的 JSON 格式。
1.导入json模块。
import requests, json
2.data
将有效载荷更改为json
with json.dumps(data)
。
r =requests.post(url,headers=headers,data=json.dumps(data), verify=False)
推荐阅读
- python - 如何在加法循环中只打印奇数?
- java - 有没有办法在 VScode 的一个窗口中打开多个 Java 项目?
- html - 如何从Angular中的对话框传递数据
- java - 使用 quarkus 构建失败
- c++ - 我如何使用 C++ 来完善评分系统
- python - 如何在python中分割行
- javascript - 无法从后端nodejs在reactjs上向卡片组件显示图像
- javascript - 如何使用 React Js 渲染办公文件?
- atmega - Atmega 2560 中的 UBRR 配置
- python - M. Goodrich 所著的《Python 中的数据结构和算法》一书中 Queue 类中的 dequeue 实现