我正试图让我的php脚本向语音到文本API发送一个curl请求。
我在沃森控制台中配置了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);
我总是得到这样的结果:
字符串(37)“{“代码”:401,“错误”:“未授权”}”
2条答案
按热度按时间oo7oh9g91#
在您的脚本中,您使用
apikey:KEY
作为凭据。我知道这听起来很明显,但最好仔细检查一下:您是否已将其替换为IBM控制台中的实际API密钥?如果您使用KEY
作为密钥,那么,您得到401 unauthorized并不奇怪:)还要注意,您的API密钥与一个特定的网关URL相关联,您也可以在IBM Cloud控制台中检索该密钥的相同位置找到它(请参见屏幕截图)。这就是您需要用于curl命令的URL。例如,在我的示例中,由于我创建了位置为伦敦的应用程序,因此URL为gateway-lon. watsonplatform. net。
70gysomp2#
我知道这是一个老职位。我只是想分享代码,为我工作(18/08/2022)。
我也遇到过类似的问题,比如我创建文件路径的方式就是问题所在。但现在它运行得很好,只需复制粘贴并点击刷新浏览器即可。
干杯干杯干杯