首页 > 解决方案 > 来自 Google 的 Cloud Speech-to-Text gRPC API 的这个错误是什么意思?

问题描述

几个月前,一切正常。我们使用 Speech-to-text 服务的 gRPC。我们发送一个音频文件,关闭语音客户端,稍后继续操作:

$speechClient->resumeOperation($this->operation, 'LongRunningRecognize');

^ 正是文档中的这行代码产生了这个错误:

Error occurred during parsing: Class google.cloud.speech.v1p1beta1.LongRunningRecognizeMetadata hasn't been added to descriptor pool

^ “描述符池”告诉我这是特定于 gRPC 和协议缓冲区的。

从作曲家.json:

"google/apiclient": "2.2.2",
"google/cloud": "0.72.0",
"google/protobuf": "3.6.0.1",

标签: phpprotocol-buffersgrpcgoogle-cloud-speech

解决方案


感谢这里的报告。我很乐意帮助您走上正轨。

我使用以下示例对此进行了测试,但无法重现您在此处报告的问题:

文件: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”包)。

如果您能够与我分享更广泛的代码片段,那也可能会有所帮助。

谢谢!戴夫


推荐阅读