Fixed line numbers as in the repository:

"Google\Protobuf\Internal\GPBDecodeException: Error occurred during 
parsing: Fail to push limit. in 
/var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php:
*340*
Stack trace:
#0 
/var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php(
*363*): Google\Protobuf\Internal\CodedInputStream->pushLimit(917)..."

среда, 18 августа 2021 г. в 12:04:27 UTC+3, Евгений Белоусов: 

> Hi.
> Version Protobuf: v3.17.3
> Language: PHP.
> The web portal is developed on the basis of the YII2 framework.
> I have downloaded the PHP SDK for Cloud Speech-to-Text for converting 
> recorded audio (mp3) speech to text.
> This extension uses Protobuf to work with audio streams.
>
> With this request, I send an audio file for transcription:
>
> https://cloud.google.com/speech-to-text/docs/samples/speech-transcribe-async#speech_transcribe_async-php
>
> In my controller it looks like this:
> "
> $audioFile = $_SERVER['DOCUMENT_ROOT'] . 
> '/frontend/web/audiofiles/380633470210_2021-05-13 115637.mp3';
>
>                 // change these variables if necessary
>                 $encoding = AudioEncoding::MP3;
>                 $sampleRateHertz = 44100;       
>                        
>                 $languageCode = 'uk-UA';
> // get contents of a file into a string
>                 $content = file_get_contents($audioFile);
>
>                 // set string as audio content
>                 $audio = (new RecognitionAudio())
>                     ->setContent($content);
>
>                 // set config
>                 $config = (new RecognitionConfig())
>                     ->setEncoding($encoding)
>                     ->setSampleRateHertz($sampleRateHertz)
>                     ->setLanguageCode($languageCode);   
>
>                 // create the speech client
>                 $client = new SpeechClient();
>                 
>                 // create the asyncronous recognize operation
>                 $operation = $client->longRunningRecognize($config, 
> $audio);
>                 $operation->pollUntilComplete();
> if ($operation->operationSucceeded()) {
>                     $response = $operation->getResult();
>
>                     $comment = '';
>
>                     // each result is for a consecutive portion of the 
> audio. iterate
>                     // through them to get the transcripts for the entire 
> audio file.
>                     foreach ($response->getResults() as $result) {
>                         $alternatives = $result->getAlternatives();
>                         $mostLikely = $alternatives[0];
>                         $transcript = $mostLikely->getTranscript();
>                         $confidence = $mostLikely->getConfidence();
>
>                         $comment .= '(' . $confidence . '): ' . 
> $transcript  . PHP_EOL;
>                     }
>                 }
> $client->close();
> "
>
> On the local version of the site (Openserver, PHP 7.1.32, Apache API 
> 20120211) everything works - I get lines of transcribed text in the 
> $comment variable.
>
> On hosting (PHP 7.3.15-3 + ubuntu16.04.1 + deb.sury.org, Apache/2.4.41) I 
> get an error:
>
> "Google\Protobuf\Internal\GPBDecodeException: Error occurred during 
> parsing: Fail to push limit. in 
> /var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php:367
> Stack trace:
> #0 
> /var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php(390):
>  
> Google\Protobuf\Internal\CodedInputStream->pushLimit(917)
> #1 
> /var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/GPBWire.php(286):
>  
> Google\Protobuf\Internal\CodedInputStream->incrementRecursionDepthAndPushLimit(917,
>  
> 0, 0)
> #2 
> /var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(437):
>  
> Google\Protobuf\Internal\GPBWire::readMessage(Object(Google\Protobuf\Internal\CodedInputStream),
>  
> Object(Google\Protobuf\Internal\FileDescriptorProto))
> #3 
> /var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(527):
>  
> Google\Protobuf\Internal\Message::parseFieldFromStreamNoTag(Object(Google\Protobuf\Internal\CodedInputStream),
>  
> Object(Google\Protobuf\Internal\FieldDescriptor), 
> Object(Google\Protobuf\Internal\FileDescriptorProto))
> #4 
> /var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(823):
>  
> Google\Protobuf\Internal\Message->parseFieldFromStream(10, 
> Object(Google\Protobuf\Internal\CodedInputStream), 
> Object(Google\Protobuf\Internal\FieldDescriptor))
> #5 
> /var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(787):
>  
> Google\Protobuf\Internal\Message->parseFromStream(Object(Google\Protobuf\Internal\CodedInputStream))
> #6 
> /var/www/4servicetp_ru/bat/vendor/google/protobuf/src/Google/Protobuf/Internal/DescriptorPool.php(61):
>  
> Google\Protobuf\Internal\Message->mergeFromString('\n\x95\x07\n,google/clo...')
> #7 
> /var/www/4servicetp_ru/bat/vendor/google/cloud-speech/metadata/V1P1Beta1/Resource.php(42):
>  
> Google\Protobuf\Internal\DescriptorPool->internalAddGeneratedFile('\n\x95\x07\n,google/clo...',
>  
> true)
> #8 
> /var/www/4servicetp_ru/bat/vendor/google/cloud-speech/metadata/V1P1Beta1/CloudSpeech.php(21):
>  
> GPBMetadata\Google\Cloud\Speech\V1P1Beta1\Resource::initOnce()
> #9 
> /var/www/4servicetp_ru/bat/vendor/google/cloud-speech/src/V1p1beta1/SpeechContext.php(79):
>  
> GPBMetadata\Google\Cloud\Speech\V1P1Beta1\CloudSpeech::initOnce()
> #10 
> /var/www/4servicetp_ru/bat/backend/controllers/AnketaController.php(748): 
> Google\Cloud\Speech\V1p1beta1\SpeechContext->__construct()
> #11 [internal function]: 
> backend\controllers\AnketaController->actionTranscribe('9')
> #12 
> /var/www/4servicetp_ru/bat/vendor/yiisoft/yii2/base/InlineAction.php(57): 
> call_user_func_array(Array, Array)
> #13 
> /var/www/4servicetp_ru/bat/vendor/yiisoft/yii2/base/Controller.php(181): 
> yii\base\InlineAction->runWithParams(Array)
> #14 /var/www/4servicetp_ru/bat/vendor/yiisoft/yii2/base/Module.php(534): 
> yii\base\Controller->runAction('transcribe', Array)
> #15 
> /var/www/4servicetp_ru/bat/vendor/yiisoft/yii2/web/Application.php(104): 
> yii\base\Module->runAction('anketa/transcri...', Array)
> #16 
> /var/www/4servicetp_ru/bat/vendor/yiisoft/yii2/base/Application.php(392): 
> yii\web\Application->handleRequest(Object(yii\web\Request))
> #17 /var/www/4servicetp_ru/bat/backend/web/index.php(17): 
> yii\base\Application->run()"
>
> The error itself occurs directly in the application code (
> https://github.com/protocolbuffers/protobuf/blob/master/php/src/Google/Protobuf/Internal/CodedInputStream.php
> ):
> "
> public function pushLimit($byte_limit)
>     {
>         // Current position relative to the beginning of the stream.
>         $current_position = $this->current();
>         $old_limit = $this->current_limit;
>
>         // security: byte_limit is possibly evil, so check for negative 
> values
>         // and overflow.
>         if ($byte_limit >= 0 &&
>             $byte_limit <= PHP_INT_MAX - $current_position &&
>             $byte_limit <= $this->current_limit - $current_position) {
>             $this->current_limit = $current_position + $byte_limit;
>             $this->recomputeBufferLimits();
>
>         } else {
>
>             throw new GPBDecodeException("Fail to push limit.");
>         }
>
>         return $old_limit;
>     }
> "
>
> I talked about this issue in a chat with a Google specialist and he 
> directed me here, because in his opinion the problem is precisely in the 
> work of Protobuf.
> I would be grateful for opinions and tips on what could be the cause of 
> this error.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/97b2e20e-5167-4475-b0cf-366af03e4eabn%40googlegroups.com.

Reply via email to