Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google cloud -speech api return null result

I work with Google cloud speech API. When I run my script there is a call to the API and a response. The operation info returns data, but the result is empty.

Here is my code (where file url, file name, key url, project name and bucket name I deleted the real data):

function __construct(){


        $file_url='file path.mp3';
        $filename='file name.mp3';

        /** Create google client **/
        $client = new Google_Client();
        $key='path to google key';
        putenv($key);
        $client->useApplicationDefaultCredentials();


        /** Create storage **/
        $str_config = array(
                            'projectId' => 'project id'
                            );
        $storage = new StorageClient($str_config);

        $bucket_name='bucket name';
        $bucket=$storage->bucket($bucket_name);
        $object = $bucket->object($filename);


        /** Create Speech **/
        $config = array(
                'projectId' => 'project id',
                'languageCode' => 'en-US'
        );

        $options = array(
                "encoding"=>'LINEAR16',
                "languageCode"=>"en-US",
                'sampleRateHertz' => 16000
        )
        ;
        $speech = new Google\Cloud\Speech\SpeechClient($config);
        $operation = $speech->beginRecognizeOperation(
                $object,
                $options
                );


        $backoff = new ExponentialBackoff(100);
        $backoff->execute(function () use ($operation) {
            print('Waiting for operation to complete' . PHP_EOL);
            $operation->reload();
            if (!$operation->isComplete()) {
                throw new Exception('Job has not yet completed', 500);
            }
        });

            if ($operation->isComplete()) {
                if (empty($results = $operation->results())) {
                    $results = $operation->info();

                }
                var_dump($results, $operatimon->results());
            }


}

The result i get call:

Array
(
    [0] => Array
        (
            [name] => some name
            [metadata] => Array
                (




                    [@type]=> type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata
                    [progressPercent] => 100
                    [startTime] => 2017-07-16T19:15:58.768490Z
                    [lastUpdateTime] => 2017-07-16T19:15:59.999625Z
                )

            [done] => 1
            [response] => Array
                (
                    [@type]=> type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse
                    [totalBilledTime] => 15s
                )

        )

    [1] => Array
        (
        )

)

I tried several file type whit several encodings, can't find the right combination. Or maybe there is another problem. Pleas Help.

like image 224
matisa Avatar asked Mar 09 '23 14:03

matisa


1 Answers

Solved it by using the ffmpeg library to encode the audio to flac whit mono channel.

like image 118
matisa Avatar answered Mar 19 '23 18:03

matisa