Отправка данных Base64 с помощью PHP / cURL приводит к тому, что преобразование речи в текст возвращает только пустую строку json? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь отправить строку 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 работает нормально.

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

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

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

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

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

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

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

0 голосов
/ 27 сентября 2018

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

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

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