2016-08-10 9 views
5

Я использую python с google cloud speech api. Я сделал все шаги в «How to use google speech recognition api in python?» на ubuntu и на окнах, а также, когда я пытаюсь запустить простой скрипт из здесь - «https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/api/speech_rest.py»Google cloud speech api бросает 403 при попытке использовать его

Я получаю следующую ошибку: <HttpError 403 when requesting https://speech.googleapis.com/$discovery/rest?version=v1beta1 returned "Google Cloud Speech API has not been used in project google.com:cloudsdktool before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/speech.googleapis.com/overview?project=google.com:cloudsdktool then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.">

, что это странно, что я не имею проект под названием «cloudsdktool»

Я бегу «gcloud INIT», и связал json-файл, который я получил, когда создал ключ учетной записи службы с помощью «gcloud auth a Команда ctivate-сервис-счет --key-файл = jsonfile», Я пытался в Linux, чтобы создать учетные данные Google переменных окружений и до сих пор я получаю один и тот же массаж

+0

Связанное обсуждение https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues/706. Похоже, вам нужен auth с json-файлом. –

+1

Возможный дубликат [Google Search API для обнаружения текста. Пример Python использует проект: «google.com:cloudsdktool», а не мой собственный проект] (http://stackoverflow.com/questions/38048320/google-vision-api-text-detection -python-example-uses-project-google-comclouds) –

ответ

3

Так что я нашел два способа исправить эту проблему:

1 - если вы используете google cloud sdk, а облачная речь находится в бета-версии, вам нужно запустить «gcloud beta init» вместо «gcloud init», а затем предоставить json-файл

2 - если вы не хотите используйте облачный sdk из Google, вы можете передать json-файл прямо в приложение python.

вот методы fo г это:

from oauth2client.client import GoogleCredentials 

GoogleCredentials.from_stream('path/to/your/json') 

, то вы просто создать сферу на кредитки и разрешать или при использовании КПГР (потоковое) вы передаете его в заголовок так же, как в примере.

вот измененный сценарий для КПГР:

def make_channel(host, port): 
    """Creates an SSL channel with auth credentials from the environment.""" 
    # In order to make an https call, use an ssl channel with defaults 
    ssl_channel = implementations.ssl_channel_credentials(None, None, None) 

    # Grab application default credentials from the environment 
    creds = GoogleCredentials.from_stream('path/to/your/json').create_scoped([SPEECH_SCOPE]) 
    # Add a plugin to inject the creds into the header 
    auth_header = (
     'Authorization', 
     'Bearer ' + creds.get_access_token().access_token) 
    auth_plugin = implementations.metadata_call_credentials(
     lambda _, cb: cb([auth_header], None), 
     name='google_creds') 

    # compose the two together for both ssl and google auth 
    composite_channel = implementations.composite_channel_credentials(
     ssl_channel, auth_plugin) 

    return implementations.secure_channel(host, port, composite_channel) 
+0

Спасибо, он также решает его для других библиотек в бета-версии, в моем случае Language APi: http://stackoverflow.com/questions/38048320/google-vision- апи-текст-детектирование-питон-пример потребляющих-проект-Google-comclouds – Neurus

Смежные вопросы