Google语音API的INVALID_ARGUMENT错误

时间:2017-05-29 02:43:55

标签: json curl 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错误告诉我&#34;请求包含无效参数&#34;。我的卷曲请求中我做错了什么?

4 个答案:

答案 0 :(得分:1)

显然问题出在我的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请求的方式无关。

答案 1 :(得分:0)

&lt; filename&gt;之后是否应该有双引号? ?

答案 2 :(得分:0)

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

ASYNCHRONOUS是sampleRateHertz。

我刚刚开始工作,所以如果你需要我的记忆仍然新鲜的话还原!

答案 3 :(得分:0)

我正在使用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',
    };

如果文件位置正确,请再次检查编码类型。I