code_description Неверный код запроса 400, ошибка Stream была xx байтов, но должна быть не менее 100 байтов - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь использовать 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 по текстовой документации, но не нашел ничего полезного. Кто-нибудь с идеей этой проблемы, пожалуйста, помогите! Заранее спасибо

...