Как правильно настроить учетные данные вручную для Cloud Speech-to-Text API в python? - PullRequest
0 голосов
/ 15 декабря 2018

Хорошо, это мой первый вопрос на сайте, поэтому я постараюсь прояснить ситуацию.Я пытаюсь создать приложение для распознавания речи в Raspberry Pi с помощью Python и Cloud Speech-to-Text API.При попытке установить учетные данные для приложения, определяющего переменную в Терминале (следуя шагам, показанным здесь: https://cloud.google.com/speech-to-text/docs/reference/libraries#client-libraries-usage-python), я получаю следующую ошибку:

Traceback (most recent call last):
  File "/home/pi/Documents/pythonPrograms/GoogleSpeech.py", line 15, in <module>
    client = speech.SpeechClient()
  File "/usr/local/lib/python3.5/dist-packages/google/cloud/speech_v1/gapic/speech_client.py", line 137, in __init__
    credentials=credentials,
  File "/usr/local/lib/python3.5/dist-packages/google/cloud/speech_v1/gapic/transports/speech_grpc_transport.py", line 63, in __init__
    credentials=credentials,
  File "/usr/local/lib/python3.5/dist-packages/google/cloud/speech_v1/gapic/transports/speech_grpc_transport.py", line 98, in create_channel
    scopes=cls._OAUTH_SCOPES,
  File "/usr/local/lib/python3.5/dist-packages/google/api_core/grpc_helpers.py", line 177, in create_channel
    credentials, _ = google.auth.default(scopes=scopes)
  File "/usr/local/lib/python3.5/dist-packages/google/auth/_default.py", line 306, in default
    raise exceptions.DefaultCredentialsError(_HELP_MESSAGE)
google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application. For more information, please see https://cloud.google.com/docs/authentication/getting-started

Поскольку это не сработало,Я пытался установить учетные данные вручную внутри кода. Проблема в том, что я продолжаю получать ту же ошибку (возможно, потому что я делаю это неправильно). Вот мой код прямо сейчас:

import io
import os   

# Imports the Google Cloud client library

from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file("/root/Downloads/key.json")
scoped_credentials = credentials.with_scopes(["https://www.googleapis.com/auth/cloud-platform"])

from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types

# Instantiates a client
client = speech.SpeechClient()

# The name of the audio file to transcribe
file_name = os.path.join(
    os.path.dirname(__file__),
    'resources',
    'audio.raw')

# Loads the audio into memory
with io.open(file_name, 'rb') as audio_file:
    content = audio_file.read()
    audio = types.RecognitionAudio(content=content)

config = types.RecognitionConfig(
    encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
    sample_rate_hertz=16000,
    language_code='en-US')

# Detects speech in the audio file
response = client.recognize(config, audio)

for result in response.results:
    print('Transcript: {}'.format(result.alternatives[0].transcript))

ХотяВ поисках решения я попытался исключить часть кода, которая гласит:

from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types

То, что я получаю:

Traceback (most recent call last):
  File "/home/pi/Documents/pythonPrograms/GoogleSpeech.py", line 12, in <module>
    client = speech.SpeechClient()
NameError: name 'speech' is not defined

Таким образом, я полагаю, что проблема в том, что яимпортировать это, а не в самих учетных данных. Важно добавить, что я активировал API в своем проекте аккаунта Google Cloud. Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 16 декабря 2018

Сообщение об ошибке ясно указывает на то, что переменная окружения GOOGLE_APPLICATION_CREDENTIALS не установлена.

В файле ReadMe для ссылочного кода указывается, что необходимо настроить аутентификацию.По сути, вам нужно создать учетную запись службы, дать необходимые учетные записи службы (= установить роль, это зависит от того, что вы хотите делать с этой учетной записью), загрузить json-файл учетных данных и установить переменную среды GOOGLE_APPLICATION_CREDENTIALS, указав наВаш файл JSON.Фактические действия зависят от вашей ОС, весь процесс задокументирован здесь .

...