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
параметр библиотеки запросов.