Microsoft Speech API не может отправлять аудио через PHP-запрос Laravel cURL

Я использую Microsoft Speech API для преобразования аудиозаписей в текст. Я проверил API с POSTMAN, и он возвращает ожидаемые результаты. Однако с запросом PHP cURL он всегда возвращает no data received ошибка. Я попробовал каждый метод, чтобы отправить путь к файлу или даже файл. Но ничего не работает.

Это мой текущий код для отправки запроса:

$mypath = public_path('/storage/app/uploads/sound/').'audio1-'.$user->id.'.wav';

// Some Tests I made
//$realPath = realpath(  $mypath);
//$mypath = 'audio1-'.$user->id.'.wav';
//$curlFile = file_get_contents($mypath);
// $cfile = curl_file_create($mypath,'audio/wav','file');

$file = "@".$mypath.';type=audio/wav;';
$post = array('file'=>  $file);
curl_setopt_array($curl, array(
 CURLOPT_RETURNTRANSFER => 1,

 CURLOPT_URL => $url,
 CURLOPT_VERBOSE => true,

 CURLOPT_USERAGENT => 'cURL Request',
 CURLOPT_POST => 1,
 CURLOPT_POSTFIELDS => $post,
 CURLOPT_HTTPHEADER => array('Content-Type:audio/wav; codec=audio/pcm; samplerate=16000'),
 //
 CURLOPT_HTTPHEADER => array('Transfer-Encoding: chunked '),
 CURLOPT_HTTPHEADER => array('Authorization: Bearer '.$token),   

));

$resp = curl_exec($curl);
$results = json_decode($resp,true);
curl_close($curl);

Это всегда приводит к no audio data received, Похоже, что он работает, когда файл выбирается через ввод файла (как это работает в почтальоне аналогичным образом), но не работает, когда путь указан вручную. Есть ли разница в пути, полученном при вводе файла?

Это команда cURL, упомянутая Microsoft Speech API:

curl -v -X POST "https://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?language=en-us&format=detailed" -H "Transfer-Encoding: chunked" -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" -H "Content-type: audio/wav; codec=audio/pcm; samplerate=16000" --data-binary @YOUR_AUDIO_FILE

С примечанием:

При замене YOUR_AUDIO_FILE на путь к предварительно записанному аудиофайлу держите символ @ перед именем аудиофайла, поскольку это означает, что значение --data-binary является именем файла, а не данными.

0 ответов

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