php cuRL response «не удалось перекодировать поток данных audio / flac — & gt; аудио / X-флоат-массив & Quot; — IBM Watson Речевой текстовый API

Я не знаю много о том, как использовать cURL. Я пытаюсь преобразовать речь в текст, используя API IBM Watson. Когда я пытаюсь конвертировать его без использования параметров
Audio File), я получаю ответ без ошибок.

Но когда я добавляю

curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'model'=>'ja-JP_NarrowbandModel'
))

Возвращается

{ "code_description": "Bad Request", "code": 400, "error": "unable to
transcode data stream audio/flac -> audio/x-float-array " }

Я не уверен, есть ли проблема в моем синтаксисе или что-то там не так.

Я читаю документы из: https://console.bluemix.net/docs/services/speech-to-text/http.html#http

<?php
$ch = curl_init();
$file = file_get_contents('audio-file.flac');
curl_setopt($ch, CURLOPT_URL, 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $file);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, 'apikey' . ':' . 'MY_API_HERE');
$headers = array();
$headers[] = 'Content-Type: audio/flac';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'model'=>'ja-JP_NarrowbandModel'
));
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
print_r($result);

2

Решение

Вы устанавливаете CURLOPT_POSTFIELDS дважды, один раз с содержанием вашего файла и второй раз с массивом, содержащим 'model'=>'ja-JP_NarrowbandModel',

В соответствии с документация, Вы можете передать модель в качестве параметра запроса.

Попробуйте что-то вроде этого (не проверено):

<?php

$file = file_get_contents('audio-file.flac');

$url = 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize';
$model = 'ja-JP_NarrowbandModel';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url . '?model=' . $model);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $file);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, 'apikey' . ':' . 'MY_API_HERE');

$headers = array();
$headers[] = 'Content-Type: audio/flac';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
print_r($result);
0

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

Других решений пока нет …

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