Как явно передать мой ключ аутентификации в текст Google для речевого движка? - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь использовать механизм преобразования текста в речь Google Cloud для своего робота, и я не могу понять справочную страницу для явной передачи ключа в Python, как упоминалось здесь .

IВчера провел несколько часов, изучая различные варианты установки переменной окружения GOOGLE_APPLICATION_CREDENTIALS, необходимой для неявной авторизации, включая команду export в сценарии оболочки, которую я использую для запуска робота, используя команды os.environ в Python и * 1008.* для вызова export команды.

client = texttospeech.TextToSpeechClient()

voice = robot_config.get('google_cloud', 'voice')
keyFile = robot_config.get('google_cloud', 'key_file')
hwNum = robot_config.getint('tts', 'hw_num')
languageCode = robot_config.get('google_cloud', 'language_code')

voice = texttospeech.types.VoiceSelectionParams(
    name=voice,
    language_code=languageCode
)

audio_config = texttospeech.types.AudioConfig(
    audio_config=texttospeech.enums.AudioEncoding.LINEAR16
)

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = keyFile

Вход в систему через SSH показывает, что я успешно установил переменную среды, поскольку она отображается в env;однако DefaultCredentialsError выдается со следующим сообщением

Не удалось автоматически определить учетные данные.Пожалуйста, установите GOOGLE_APPLICATION_CREDENTIALS или явно создайте учетные данные и перезапустите приложение.Для получения дополнительной информации см. https://cloud.google.com/docs/authentication/getting-started

Вход в систему и установка переменной среды вручную позволит сценарию работать и работать, но это не долгосрочное решение.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Правильный ответ лежит в библиотеке google.oath2.Объект client не ищет ключ json, а ищет объект учетной записи службы.

from google.oath2 import service_account
from google.cloud import texttospeech

client = texttospeech.TextToSpeechClient(
    credentials=service_account.Credentials.from_service_account_file(keyFile)
)
0 голосов
/ 12 февраля 2019

Это работает для меня:

import os
from google.cloud import texttospeech

os.environ ["GOOGLE_APPLICATION_CREDENTIALS"]= "/home/pi/projectx-17f8348743.json"

client=texttospeech.TextToSpeechClient()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...