php - php cuRL 响应“无法转码数据流音频/flac -> 音频/x-float-array”-IBM Watson Speech to text API
问题描述
我不太了解如何使用 cURL。我正在尝试使用 IBM Watson API 将语音转换为文本。当我尝试在不使用参数的情况下进行转换(翻译英语音频文件)时,我得到了没有任何错误的响应。
但是当我添加
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);
解决方案
您设置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);
推荐阅读
- angular - 垫图标角复杂图像
- elasticsearch - ElasticSearch 7.2.0 的默认用户名和密码是什么(启用 x-pack 时)?
- python - 如何创建一个替换单词的函数
- javascript - Internet Explorer 是否有某些您不能使用的 JS?
- android - 在 QRcodeScanner React native 中打开/关闭手电筒 - 替代解决方案
- java - 为什么片段中的 setVisibility 不起作用?
- http-status-codes - 如何使用 Micronaut 客户端接受自定义 HTTP 错误代码?
- javascript - 重新加载脚本文件是一个好习惯吗?
- typescript - 无法为 Nativescript 使用背景地理位置
- python - 当我尝试启动我的代码时,它说 unindent 与任何外部缩进级别都不匹配