Я пытаюсь использовать ibm speech to text api в моем приложении laravel. После отправки моего аудиофайла я продолжаю получать эту ошибку:
{"request error":"POST \/speech-to-text\/api\/v1\/recognize HTTP\ \"code_description\": \"Bad Request\", \n \"code\": 400, \n \"error\":
\"Stream was 25 bytes but needs to be at least 100 bytes.\"\n}"}`
Вот мой код:
<?php
namespace App;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Psr7;
use Mockery\Exception;
use Request;
use RobbieP\CloudConvertLaravel\Facades\CloudConvert as CloudConvert;
use Storage;
class IbmWatson
{
public function getPersonalityTraits($request)
{
$client = new Client();
$options = [
'auth' => [
env('PERSONALITY_INSIGHTS_USERNAME'),
env('PERSONALITY_INSIGHTS_PASSWORD')
],
'headers' => [
'content-type' => 'text/plain',
],
'body' => $request
];
$r = $client->request("POST", env('PERSONALITY_INSIGHTS_BASEURL'), $options);
return json_decode($r->getBody(), true);
}
//
private function convertFileToMp3($request)
{
$path = '../storage/app/mp3/';
Storage::disk('local')->put('mp3', $request); //the storage/app/mp3 folder must be created using the put method
//CloudConvert::file($request)->to($path . $request->getClientOriginalName() . '.mp3'); //converting... saving in /storage/app/mp3
}
public function getSpeechToText($request)
{
//dd($request);
// try {
// $this->convertFileToMp3($request);
// } catch (\Exception $e) {
// return 'Something wrong happened.';
// }
//dd(env('SPEECH_TEXT_USERNAME'));
// \Auth::user()->videos()->create([
// 'path' => '/mp3/',
// 'name' => $request->getClientOriginalName()
// ]);
$client = new Client();
$options = [
'auth' => [
env('SPEECH_TEXT_USERNAME'),
env('SPEECH_TEXT_PASSWORD')
],
'headers' => [
'content-type' => 'audio/mp3', //accepts audio/mp3; audio/webm; audio/flaac; audio/opus; audio/wav;
],
'body' => $request //Storage::get(Video::orderBy('id', 'desc')->first()->path . Video::orderBy('id', 'desc')->first()->name) //using the storage/app/mp3/file.mp3
];
$r = $client->request("POST", 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize', $options);
return json_decode($r->getBody(), true);
}
}
Я пытаюсь отправить POST-запрос с данными формы (приложение Laravel) в ibm speech to text api.
Но я получил (400 Bad Requestresponse :) ошибка, code_description: Bad Request, n code 400, n error Поток был 25 байтов, но должен быть не менее 100 байтов.
Я использую жадность для отправки почтового запроса. Я не знаю, что не так с кодом, остальные файлы работают правильно.
Я прошел речь IBM по текстовой документации, но не нашел ничего полезного. Кто-нибудь с идеей этой проблемы, пожалуйста, помогите! Заранее спасибо