2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

鈴鹿高専Advent Calendar 2021

Day 7

Cloud Speech-to-TextのAPIキーが取得できなかったときに試したこと

Last updated at Posted at 2019-07-03

(初めてQiitaの記事を書きます。)

GoogleのCloud Speech-to-Textを使用するために公式のクイックスタートガイドを参照しながら進めてみたものの、APIキーが取得できず詰まった。

次の方法で無事に解決し、クイックスタートを完了することができた。

環境 : mac

引っかかっていたエラー

ここでは、ダウンロードした秘密鍵をservice-account-file.jsonと表記します。

公式のクイックスタートガイドの、「始める前に」の「2. 環境変数の設定」より次のように設定。

$ export GOOGLE_APPLICATION_CREDENTIALS="~/Download/service-account-file.json"

それから、「音声文字変換をリクエストする」の「2. curlを使用して~」より次のように実行すると次のエラーが発生した。

$ curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    https://speech.googleapis.com/v1/speech:recognize \
    -d @sync-request.json
ERROR: (gcloud.auth.application-default.print-access-token) File ~/Download/service-account-file.json (pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist!
{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

解決できた方法

service-account-file.jsonを、~/Downloadではなく、カレントディレクトリ./に置いて

$ export GOOGLE_APPLICATION_CREDENTIALS="./service-account-file.json" 

として、curlを実行した。
すると、正常にレスポンスが表示された。

問題だったと思われること

公式のクイックスタートガイドの、「始める前に」の「2. 環境変数の設定」の例で、

$ export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"`

としていたため、それに習って**service-account-file.jsonを、~/Download(カレントディレクトリではない場所)に置いていた。**
これが原因だったと思われる。

しかし、以下のように確認するとservice-account-file.jsonがreadできていないことが確認できた。

$ gcloud auth activate-service-account --key-file=~/Downloads/creative-mochi-ce695e1b1e22.json
ERROR: (gcloud.auth.activate-service-account) Unable to read file [~/Downloads/service-account-file.json]: [Errno 2] No such file or directory: '~/Downloads/service-account-file.json'

そこで試しにservice-account-file.jsonをカレントディレクトリ./に置いてみると

$ gcloud auth activate-service-account --key-file=./service-account-file.json
Activated service account credentials for: [username@XXXX.com]

無事に認証することができた。

解決できるまでに試していたこと・確認したこと

  • トラブルシューティングを読む
  • Google CloudのコンソールでAPIが有効になっているか
  • service-account-file.jsonのアクセス権限の確認(readすることができるか)
  • プロキシに引っかかっていないか
  • service-account-file.jsonのパスは正しく指定されているか

感想

解決するまでに20時間くらい悩んでしまったのでとても疲れた、Google大先生の公式のクイックスタートでこんなに詰まることがあるとは思わなかった。

一応、.jsonの場所を変えることで解決はできたが、何故カレントディレクトリでないと正常に実行できなかったかが不明のままなので、理由を見つけてスッキリしたい。

追記

今日初めてQiitaの記事(これ)を書いた。
習慣的に今後も書くようにしたい。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?