Неверный запрос при вызове rest api с использованием curl или Invoke-RestMethod - PullRequest
1 голос
/ 11 марта 2020

Я хочу преобразовать речь в текст, используя речевой текстовый сервис Microsoft из скрипта bash или скрипта PowerShell. Я попытался использовать curl (Git bash) и Invoke-RestMethod (PowerShell) для отправки моего монофонического wav-файла размером 16 бит / см в службу stt.

Служба работает, я использовал c# пример, предоставленный Microsoft для тестирования. На примере c# я могу отправить аудиофайл и получить текст от служб stt.

Теперь я хотел сделать это в сценарии.

Использование curl in Git Bash:

curl -X POST "https://westus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed" \ 
     -H "Ocp-Apim-Subscription-Key: <my_subscription_key>" \
     -H "Content-Type: audio/wav; codecs=audio/pcm; samplerate=16000" \
     --data-binary audio.wav

Insufficient data to detect audio format: 7 bytes

Даже использование -d или --data или --data-raw вместо --data-binary ничего не меняет.

Использование Invoke-RestMethod в PowerShell:

$audioBytes = [System.IO.File]::ReadAllBytes("c:\full\path\to\aduio\file.wav")

Invoke-RestMethod `
    -Method Post `
    -Uri "https://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed" `
    -Headers @{'Ocp-Apim-Subscription-Key' = '<my_subscription_key>'} `
    -ContentType 'audio/wav; codecs=audio/pcm; samplerate=16000' `
    -Body $audioBytes

Invoke-RestMethod: The remote server returned an error: (400) Bad Request.

Та же ошибка при использовании -InFile audio.wav вместо -Body $audioBytes.

Я что-то упустил? Есть ошибка, которую я не вижу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...