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 является именем файла, а не данными.