Я хочу преобразовать речь в текст, используя речевой текстовый сервис 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
.
Я что-то упустил? Есть ошибка, которую я не вижу?