Microsoft Speech API с запросами Python?

Я пытаюсь использовать пакет запросов в Python для вызова API-интерфейса Microsoft Bing Speech Transcription. Я могу заставить вызов работать, когда я использую Postman, но для этого необходимо вручную выбрать файл для загрузки (Postman предоставляет графический интерфейс для выбора файла), но я не уверен, как этот выбор файла отображается на фактический HTTP-запрос (и по расширению Питон requests запрос). Почтальон может преобразовывать свои внутренние запросы в код, и в соответствии с Почтальоном http-запрос, который он делает:

POST /recognize?scenarios=smd&appid=[REDACTED]&locale=en-US&device.os=wp7&version=3.0&format=json&form=BCSSTT&instanceid=[REDACTED]&requestid=[REDACTED] HTTP/1.1
Host: speech.platform.bing.com
Authorization: [REDACTED]
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: [REDACTED]

undefined

И эквивалентный запрос, если сделан через Python requests библиотека будет:

import requests

url = "https://speech.platform.bing.com/recognize"

querystring = {"scenarios":"smd","appid":[REDACTED],"locale":"en-US","device.os":"wp7","version":"3.0","format":"json","form":"BCSSTT","instanceid":[REDACTED],"requestid":[REDACTED]}

headers = {
'authorization': [REDACTED],
'content-type': "application/x-www-form-urlencoded",
'cache-control': "no-cache",
'postman-token': [REDACTED]
}

response = requests.request("POST", url, headers=headers, params=querystring)

print(response.text)

Однако обратите внимание, что ни в одном случае сгенерированный код фактически не передает в аудиофайл для транскрибирования (ясно, что Почтальон не знает, как отображать необработанные аудиоданные), поэтому я не уверен, как добавить эту важную информацию в запрос. Я предполагаю, что в случае кода HTTP-запроса аудиопоток идет в месте, отображаемом как "неопределенное". В команде запросов Python чтение документации выглядит следующим образом: response = requests.request(...) строка должна быть заменена на:

response = requests.request("POST", url, headers=headers, params=querystring, files={'file': open('PATH/TO/AUDIO/FILE', 'rb')})

Но когда я запускаю этот запрос, я получаю "Тайм-аут запроса (> 14000 мс)". Любая идея о том, как я могу успешно вызвать Microsoft Speech API через Python? Любая помощь будет высоко ценится, спасибо.

1 ответ

Сделайте эту строку вашим почтовым запросом:

r = requests.post(url, headers=headers, params=querystring, data=open('PATH/TO/WAV/FILE', 'rb').read())

И это должно сработать.

В документации Microsoft двоичные данные аудиофайла являются телом запроса POST и должны отправляться с использованием data параметр библиотеки запросов.

Другие вопросы по тегам