Я использую речь IBM для написания API без сессии с этой конечной точкой… »https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?model=en-US_NarrowbandModel«; и загрузку файла flac для транскрибирования в текст, но с ошибкой 400 с этим сообщением» невозможно перекодировать поток данных audio / flac -> audio / x-float-array «. Пожалуйста, дайте мне знать, где я ошибаюсь.
Я взглянул на код, которым вы поделились с нами, и исправил несколько вещей. Проблема на самом деле не была связана со службой Watson STT, но из-за того, как вы обращались к аудио-байтам в php и передавали их, вот рабочая версия:
<form method="post" name="post_form" action="conversion.php" enctype="multipart/form-data">
<input type="file" name="voice">
<input type="submit" name="btnUpload" value="submit">
</form>
<?php
if($_POST['btnUpload']) {
$username = "username";
$password = "password";
$url = 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?continuous=true&model=en-US_NarrowbandModel';
$filename = $_FILES['voice']['name'];
$filedata = $_FILES['voice']['tmp_name'];
$file = fopen($filename, 'r');
$filesize = filesize($filename);
$bytes = fread($file,$filesize);
$data = array('part_content_type' => 'audio/flac');
$headers = array("Content-Type: audio/flac", "Transfer-Encoding: chunked");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $bytes);
curl_setopt($ch, CURLOPT_INFILESIZE, $filesize);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$executed = curl_exec($ch);
curl_close($ch);
var_dump($executed); exit;
}
?>
Других решений пока нет …