@habra_desert

PHP CURL + Yandex Speechkit — как заставить работать?

Собственно проблема с заголовками Content-Type;
если ставлю, так как просит яндекс Content-Type: audio/x-wav то в ответе получаю
Unknown Content-Type or multipart/form-data expected!
если Content-Type: multipart/form-data то ответ
Record is present, but 'Content-Type' param not specified!
Помогите разобраться

Сам код:
$url = "https://asr.yandex.net/asr_xml?uuid=".$uuid."&key=".$key."&topic=".$topic."&lang=".$lang;
$file['audio'] = '@c:/xampp/htdocs/speechkit/test.wav;

$headers = array("Transfer-Encoding: chunked", "Content-Type: audio/x-wav");

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 
curl_setopt($ch, CURLOPT_POST, true) ;        
curl_setopt($ch, CURLOPT_POSTFIELDS, $file) ;
  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//проверка SSL- сертификата
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 

// отсылаем запрос
$response = curl_exec($ch);
/выводим
echo $response;
  • Вопрос задан
  • 1873 просмотра
Пригласить эксперта
Ответы на вопрос 1
@LAV45
Вот пример рабочего кода. Оправляется обычный GET запрос.
/**
 * @see https://tech.yandex.ru/speechkit/cloud/doc/guide/concepts/tts-http-request-docpage/
 */
$apiUrl = 'https://tts.voicetech.yandex.net/generate';
$options = [
    'key' => '******',
    'speaker' => 'oksana',
    'format' => 'mp3',
    'lang' => 'ru-RU',
    'speed' => 1.2
];

$options['text'] = $text;

$url = $apiUrl . '?' . http_build_query($options);
$data = file_get_contents($url);

file_put_contents('audio.' . $options['format'], $data);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы