INVALID_ARGUMENT 错误 Google 语音 API

INVALID_ARGUMENT error by Google speech API

我想使用 Google Speech API 的异步转录服务。我已经将我的音频文件上传到 Google 个存储桶,我正在尝试将它与以下代码一起使用(我已经从命令中删除了我的密钥和我的文件名,其他所有内容都被复制了)。

curl -H "Content-Type: application/json" 
    --data '{"audio":{"uri":"https://storage.cloud.google.com/<mybucketname>/<filename>"},
    "config":{"encoding":"FLAC","sample_rate_hertz":"16000","language_code":"en_US"}}' 
    https://speech.googleapis.com/v1/speech:longrunningrecognize?key=<mykey>

我收到 400 INVALID_ARGUMENT 错误告诉我 "Request contains an invalid argument"。我在 curl 请求中做错了什么?

<文件名>后面要加双引号吗?

显然问题出在我的 URI 中。 Google 有一种特殊的方式来引用 Google 桶中的项目,以 "gs:" 作为前缀。

curl -H "Content-Type: application/json" 
    --data '{"audio":{"uri":"gs://<mybucketname>/<filename>"},
    "config":{"encoding":"FLAC","sample_rate_hertz":"16000","language_code":"en_US"}}' 
    https://speech.googleapis.com/v1/speech:longrunningrecognize?key=<mykey>

请注意,在我切换到这种方法后,我遇到了一个无法克服的权限错误,但我认为这与我发出 curl 请求的方式无关。

勾选sample_rate_Hertz。您可能会发现这是 SYNCHRONOUS 请求的格式。

异步是 sampleRateHertz。

我刚刚让它工作,所以如果您需要,请在我记忆犹新的时候恢复!

我正在使用 Node JS 客户端和 google 存储来存储文件。

    // The audio file's encoding, sample rate in Hertz, and BCP-47 language code
    const audio = {
        uri: 'gs://sst_bbc/',
    };
    const config = {
        enableWordTimeOffsets: true,
        encoding: 'FLAC',
        // sampleRateHertz: 16000,
        languageCode: 'en-US',
    };
    const request = {
        audio: audio,
        config: config,
    };

    // Detects speech in the audio file
    const [operation] = await client.longRunningRecognize(request);
    const [response] = await operation.promise();

    fs.writeFileSync('ted_talk.json', JSON.stringify(response), 'utf8');

我犯了一个错误,没有提到确切的对象。控制台中的错误非常模糊。在我设置正确的路径后,它开始正常工作。

    const audio = {
        uri: 'gs://sst_bbc/ted_talk.flac',
    };

如果文件位置正确,请仔细检查编码 type.I