Облачная платформа Google. Отправка данных Base64 с помощью PHP / cURL приводит к тому, что преобразование речи в текст возвращает только пустую строку json?

Я пытаюсь отправить строку Base64 в Google Speech-to-Text API на PHP. Из-за досадных причин я не могу использовать composer для получения библиотеки PHP, поэтому я пытаюсь использовать Speech to Text API через cURL.

$file = base64_encode( file_get_contents(__DIR__.'/test.ogg') );
$data = array(
'config' => array(
"encoding" => 'OGG_OPUS',
'sampleRateHertz' => 16000,
"languageCode"=> "en-GB"),
"audio"=> array (
"content"=> $file
)
);

$ch = curl_init("https://speech.googleapis.com/v1/speech:recognize?key=AIzaSyBxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxx");

curl_setopt_array($ch, array(
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json")
));
$json = curl_exec($ch);

Что я знаю:

  • Test.ogg является действительным файлом Ogg / Opus.
  • Ключ API правильный
  • Использование примера файла в audio-> uri работает нормально.

Итак, простой вопрос, я надеюсь — что я делаю не так?

1

Решение

Я взял ваш точный код и сам запустил его с PHP 7.1, и я получил ошибку неверного ключа от API. Это говорит о том, что сам код работает нормально и связан с вашей системой, вашей сетью или некоторыми конфигурациями.

Некоторые предложения о том, что вы могли бы посмотреть;

  • У вас установлено и настроено расширение curl?
  • Можете ли вы получить доступ к API за пределами PHP, например, через лапа или же Почтальон?
  • Вы пробовали тестировать этот код на другой машине и в другой сети?
0

Другие решения

Хорошо. Оказывается, Google API очень требователен к файлам Ogg Opus. Запуск файла через ffmpeg для преобразования его во flac сортирует его.

Что немного странно. Chrome (Google) создает файл опуса webm (Google), который не может обработать система преобразования речи в текст (Google). Преобразуйте его в файл Ogg Opus, который, как утверждает API, он может обработать, и он молча терпит неудачу. Преобразуйте этот Ogg Opus в файл flac (таким образом, с потерями в без потерь, который является ментальным), и он внезапно работает. И работает невероятно хорошо.

Или кто-то еще споткнется об этом в будущем, команда ffmpeg была

ffmpeg -i input.ogg -b:a 16000 output.flac

Это устанавливает его на 16000 бит / с, но я не могу на всю жизнь вспомнить, что делает: a.

0

По вопросам рекламы [email protected]