Получение ошибки 401 в преобразовании речи в текст Watson - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь заставить мой php-скрипт отправлять запрос curl на API преобразования текста в текст.

Я настроил API в консоли Watson и подключил скрипт для отправки аудио и apikey.

$url = 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize';
$file = '@files/WhatsApp Audio 2019-01-25 at 12.17.28 (1).flac';
$fields = array(
'file' => $file,
'continuous' => true
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "apikey:KEY"); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: audio/flac')); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Transfer-Encoding: chunked'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_MAX_SEND_SPEED_LARGE, 40000);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
$executed = curl_exec($ch);
var_dump($executed);

Я всегда получаю такой результат:

string (37) "{" code ": 401," error ":" Unauthorized "}"

1 Ответ

0 голосов
/ 28 января 2019

В вашем скрипте apikey:KEY в качестве учетных данных.Я знаю, это звучит очевидно, но лучше двойная проверка: вы заменили его своим реальным ключом API с консоли IBM?Если вы используете KEY в качестве ключа, не удивительно, что вы получаете 401 неавторизованным:)

Также обратите внимание, что ваш ключ API связан с конкретным URL-адресом шлюза, который вы также можете найти вто же самое место в консоли IBM Cloud, где вы получаете ключ (см. скриншот).И это тот URL, который вы должны использовать для своих команд curl.Например, в моем случае, так как я создал приложение с местоположением Лондон, URL-адрес gateway-lon.watsonplatform.net.

enter image description here

...