Я пытаюсь вызвать API Google Cloud Speech с помощью PHP и возникла проблема.Google Cloud Speech API с помощью php
$stturl = "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=xxxxxxxxxxxx";
$upload = file_get_contents("1.wav");
$upload = base64_encode($upload);
$data = array(
"config" => array(
"encoding" => "LINEAR16",
"sampleRate" => 16000,
"languageCode" => "en-US"
),
"audio" => array(
"Content" => $upload,
)
);
$jsonData = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $stturl);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
$result = curl_exec($ch);
В результате говорится, что это НЕПРЕРЫВНЫЙ JSON PAYLOAD.
{ "Ошибка": { "код": 400, "сообщение": "Invalid JSON полезной нагрузки получил Неизвестное имя \." Содержание \ "в 'аудио':. Не удается найти поле", "Статус" : "INVALID_ARGUMENT", "details": [{"@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [{ "field": "audio", "description" : «Недопустимая полезная нагрузка JSON. Неизвестное имя \" content \ "на 'audio': Не удается найти поле." }]}]}} "
Я думаю, это потому, что $ загрузка не настроена правильно. Согласно Google Cloud Speech API, он должен быть "Строка в кодировке base64". https://cloud.google.com/speech/reference/rest/v1beta1/RecognitionAudio
Вот почему я использовал base64_encode функцию, но, кажется, JSON не обрабатывает это значение правильно. Любые мысли?
Вы должны «base64_encode ($ upload)», а также изменить «Content» на 'content'. Должен работать нормально. – BadHorsie