Как использовать API пакетной транскрипции через Python - PullRequest
1 голос
/ 04 апреля 2019

Я создал службу пакетной транскрипции Azure, которая будет принимать аудиофайл из хранилища BLOB-объектов Azure в качестве входных данных и делиться со мной речью в текст.

Я могу достичь вышеуказанного, используя веб-сайт 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)

Дайте мне знать, если я допускаю какую-то ошибку в запросах. Пост

1 Ответ

2 голосов
/ 08 апреля 2019

Для этого API требуются полезные данные типа JSON.

Ваш код не отправляет сериализованный тип JSON.

Таким образом, ответные сообщения сервера означают несоответствие типа полезных данных.

Это просто отправка полезных данных с типом словаря Python, а не JSON.

Требуется преобразовать полезные данные в сериализованный формат JSON.

1.Импорт json модулей.

import requests, json

2. Изменение data полезных нагрузок на json с json.dumps(data).

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