Php 谷歌';s云语音到文本gRPC API意味着什么?
几个月前,一切正常。我们使用语音到文本服务的gRPC。我们发送一个音频文件,关闭speechclient,然后继续后续操作:Php 谷歌';s云语音到文本gRPC API意味着什么?,php,protocol-buffers,grpc,google-cloud-speech,Php,Protocol Buffers,Grpc,Google Cloud Speech,几个月前,一切正常。我们使用语音到文本服务的gRPC。我们发送一个音频文件,关闭speechclient,然后继续后续操作: $speechClient->resumeOperation($this->operation, 'LongRunningRecognize'); ^正是文档中的这行代码产生了此错误: Error occurred during parsing: Class google.cloud.speech.v1p1beta1.LongRunningRecognize
$speechClient->resumeOperation($this->operation, 'LongRunningRecognize');
^正是文档中的这行代码产生了此错误:
Error occurred during parsing: Class google.cloud.speech.v1p1beta1.LongRunningRecognizeMetadata hasn't been added to descriptor pool
^“描述符池”告诉我这是特定于gRPC和协议缓冲区的
从composer.json:
"google/apiclient": "2.2.2",
"google/cloud": "0.72.0",
"google/protobuf": "3.6.0.1",
谢谢你的报道。我很乐意帮助你走上正轨 我使用以下样本对此进行了测试,但无法重现您在此处报告的问题: 文件:composer.json
{
"require": {
"google/apiclient": "2.2.2",
"google/cloud": "0.72.0",
"google/protobuf": "3.6.0.1"
}
}
文件:test.php
require 'vendor/autoload.php';
use Google\Cloud\Speech\V1p1beta1\RecognitionAudio;
use Google\Cloud\Speech\V1p1beta1\RecognitionConfig_AudioEncoding;
use Google\Cloud\Speech\V1p1beta1\RecognitionConfig;
use Google\Cloud\Speech\V1p1beta1\SpeechClient;
$client = new SpeechClient();
$config = (new RecognitionConfig)
->setLanguageCode('en-US')
->setSampleRateHertz(44100)
->setEncoding(RecognitionConfig_AudioEncoding::FLAC);
$audio = (new RecognitionAudio)
->setUri('gs://gapic-toolkit/hello.flac');
$operation = $client->longRunningRecognize($config, $audio);
$metadata = $client->resumeOperation(
$operation->getName(),
'LongRunningRecognize'
)->getMetadata();
echo $metadata->getProgressPercent() . PHP_EOL;
这里的一个关键区别可能是安装在目标系统上的gRPC/protobuf扩展的版本。我正在使用protobuf的v3.8.0和gRPC的v1.21.3。你能分享你的吗?(请注意protobuf扩展与通过composer安装的“google/protobuf”包不同)
如果你能和我分享一个更广泛的代码片段,那也会有帮助
谢谢!
Dave谢谢David,问题确实是gRPC和protobuf编译器/runttime没有安装在我的系统上