0

当我在我的 linux 机器上运行简单命令时:

curl -X POST \
--data-binary @'1.wav' \
--header 'Content-Type: audio/l16; rate=16000;' \
'https://www.google.com/speech-api/v2/recognize?output=json&lang=he-IL&key=THE_KEY'

我收到错误消息:

Your client does not have permission to get URL /speech-api/v2/recognize?output=json&lang=he-IL&key=THE_KEY from this server. Invalid key. That’s all we know.

我生成的密钥没有任何限制(并且已为语音 api 启用)。
我什至添加了服务器 IP 地址,我得到了同样的错误。

到目前为止我发现的结果与 chrome 客户端有关......我在 shell 上。

谢谢

4

1 回答 1

1
  1. 使用以下文本创建 JSON 请求文件,并将其保存为 sync-request.json 纯文本文件:

    { 'config': { 'encoding':'FLAC', 'sampleRate': 16000, 'languageCode': 'en-US' }, 'audio': { 'uri':'gs://your-gcloud-bucket/audio.wav' } }

    此 JSON 代码段表明音频文件具有 WAV 编码格式,采样率为 16000 Hz,并且音频文件存储在给定 URI 的 Google Cloud Storage 上。音频文件可公开访问,因此您无需身份验证凭据即可访问该文件(尽管您需要身份验证凭据才能使用 API)。

  2. 向您的服务帐户进行身份验证,传递您的服务帐户密钥文件的位置:

    $ gcloud auth activate-service-account --key-file=service-account-key-file

  3. 使用您的服务帐户获取授权令牌:

    $ gcloud auth print-access-token access_token

  4. 使用 curl 发出 Speech:syncrecognize 请求,将您打印的访问令牌以及您在步骤 1 中设置的 JSON 请求的文件名传递给它:

    $ curl -s -k -H "Content-Type: application/json" \ -H "Authorization: Bearer access_token" \ https://speech.googleapis.com/v1beta1/speech:syncrecognize \ -d @sync-request.json

于 2016-12-09T03:47:12.633 回答