Google cloud -speech API возвращает нулевой результат

Я работаю с Google Cloud Voice API. Когда я запускаю свой скрипт, происходит вызов API и ответ. Информация об операции возвращает данные, но результат пуст.

Вот мой код (где URL-адрес файла, имя файла, URL-адрес ключа, имя проекта и имя корзины я удалил настоящие данные):

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());
            }


}

В результате я получаю вызов:

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
        (
        )

)

Я пробовал несколько типов файлов с несколькими кодировками, не могу найти правильную комбинацию. Или, может быть, есть другая проблема. Пожалуйста, помогите.


person matisa    schedule 16.07.2017    source источник
comment
Это похоже на длительную операцию, и вам может потребоваться опросить возвращенный объект $operation с помощью $operation->isComplete(), прежде чем вы сможете увидеть результаты распознавания речи. Пример см. на этой странице. .   -  person dizcology    schedule 18.07.2017


Ответы (2)


Решил это с помощью библиотеки ffmpeg для кодирования звука в flac с моноканалом.

person matisa    schedule 05.08.2017

Для всех, кто сталкивается с этой проблемой, проблема может заключаться в том, что ваш аудиофайл не соответствует кодировке, которую вы ввели в свой массив параметров.

Проверьте этот ресурс: https://cloud.google.com/speech-to-text/docs/reference/rest/v1beta1/RecognitionConfig#AudioEncoding

Как и в принятом ответе, у меня сработало изменение с «LINEAR16» на «FLAC» и преобразование моего аудиофайла в FLAC.

person Coco    schedule 10.06.2018