在语音转文字Watson API上获取错误401

时间:2019-01-28 00:14:12

标签: php curl text-to-speech ibm-watson

我正在尝试使我的php脚本将curl请求发送到语音文本API。

我在Watson控制台中配置了API,并安装了脚本以发送音频和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“:”未经授权“}”

1 个答案:

答案 0 :(得分:0)

在脚本中,您拥有apikey:KEY作为凭据。我知道这听起来很明显,但是可以进行更好的仔细检查:是否已使用IBM控制台中的实际api密钥替换了它?如果您使用KEY作为密钥,那么毫无疑问,您会被401未经授权:)

还要注意,您的api密钥与特定的网关URL相关联,您还可以在检索密钥的IBM Cloud控制台的同一位置找到它(请参见屏幕快照)。这就是您需要在curl命令中使用的URL。例如,在我的情况下,由于我创建的应用程序的位置是伦敦,因此URL为gateway-lon.watsonplatform.net。

enter image description here