Nano Hash - криптовалюты, майнинг, программирование

Аутентификация Google Cloud Platform: распознается как предупреждение конечного пользователя, несмотря на использование учетной записи службы

Кто-нибудь может ПОМОЧЬ? Этот действительно сводит меня с ума ... Спасибо!

Я пробовал использовать API-интерфейс облачной платформы Google для преобразования речи в текст.

Инструменты: WINDOWS 10 && GCP && Python (Pycharm IDE)

  1. Я создал учетную запись службы в качестве владельца для своего проекта тестирования речи и сгенерировал ключ из консоли GCP в json, а затем установил переменные среды. Код, который я запускал на WIN10 Powershell && CMD:

    $env:GOOGLE_APPLICATION_CREDENTIALS="D:\GCloud speech-to-text\Speech 
    To Text Series-93e03f36bc9d.json"
    
    set GOOGLE_APPLICATION_CREDENTIALS=D:\GCloud speech-to-text\Speech To 
    Text Series-93e03f36bc9d.json
    

    PS: добавленные переменные среды исчезают в CMD и Powershell после перезагрузки моего ноутбука, но отображаются в списке env при повторном добавлении.

  2. Я включил API хранилища Google и API преобразования речи в текст Google в консоли GCP.

  3. Я пробовал явно показывать метод учетных данных через python, та же проблема.

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

КОД РЕЧИ В ТЕКСТ PYTHON (из демонстрации GCP)

import io
import os

# Imports the Google Cloud client library
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__),
    'test_cre.m4a')

# 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))

---- Ожидается получение "200OK" и транскрибированного текста при запуске кода, приведенного выше (демонстрация API короткой речи в текст из GCP Document)

---- Но попал:

  1. D: \ Python \ main program \ lib \ site-packages \ google \ auth_default.py: 66: UserWarning: ваше приложение аутентифицировано с использованием учетных данных конечного пользователя из Google Cloud SDK. Мы рекомендуем вместо этого использовать в большинстве серверных приложений учетные записи служб. Если ваше приложение продолжает использовать учетные данные конечного пользователя из Cloud SDK, вы можете получить ошибку «превышена квота» или «API не включен». Для получения дополнительной информации об учетных записях служб см. https://cloud.google.com/docs/authentication/ warnings.warn (_CLOUD_SDK_CREDENTIALS_WARNING)

  2. google.api_core.exceptions.ResourceExhausted: 429 Превышена квота для метрики квоты «speech.googleapis.com/default_requests» и ограничена «DefaultRequestsPerMinutePerProject» службы «speech.googleapis.com» для потребителя «project_number: 764086051850».

    ДРУГАЯ СТАНДАРТНАЯ ВЕЩЬ: информация об ошибке показывает, что «номер_проекта: 764086051850», который отличается от моего номера проекта для преобразования речи в текст на GCP (я различаю номер проекта и проект ID), project_number, показанный в информации об ошибке, также меняется каждый раз при запуске кода. Кажется, я отправлял облачное требование не того проекта?

  3. Мои системные переменные среды GOOGLE_APPLICATION_CREDENTIALS исчезают после того, как я перезапущу свой ноутбук в следующий раз. После повторного добавления он появится в списке env, но не сможет быть сохранен после перезагрузки снова.

Цените, если кто-то может помочь, спасибо!


Ответы:


1

попробуйте сделать это:

  • Запустите gcloud init -> авторизуйтесь со своей учетной записью и выберите свой проект.
  • Запустите gcloud auth activate-service-account <service account email> --key-file=<JSON key file>
  • Запустите gcloud config list, чтобы проверить вашу конфигурацию.

Запустите свой сценарий и посмотрите, не лучше ли.

В противном случае попробуйте сделать то же самое на micro-vm для проверки вашего кода, учетной записи службы и среды (и для проверки наличия проблемы только с Windows)

Что касается проблем с Windows, я использую ChromeBook, я не могу протестировать и помочь вам в этом. Однако я проверил EnvVar в Интернете и обновил реестр. Проверьте, нет ли у вас средств, защищающих обновление реестра (антивирус, ....)

10.09.2019
  • Большое спасибо за ответ, я устал от методов и получил новую настройку config и auth. Также я установил постоянную переменную окружения. Однако такое предупреждение и ошибка по-прежнему появляются при выполнении кода Python. Новые настройки, отображаемые в консоли SDK, перечислены ниже: 12.09.2019
  • D: \ Google SDK ›gcloud config list [core] account = [email protected] disable_usage_reporting = False project = Speech-to-text-s-1568092576953 12.09.2019
  • D: \ Google SDK ›список проектов gcloud PROJECT_ID NAME PROJECT_NUMBER Speech To Text-s-1568092576953 Speech To Text Series 737895336527 12.09.2019

  • 2

    D: \ Python \ main program \ lib \ site-packages \ google \ auth_default.py: 66: UserWarning: ваше приложение аутентифицировано с использованием учетных данных конечного пользователя из Google Cloud SDK. Мы рекомендуем вместо этого использовать в большинстве серверных приложений учетные записи служб. Если ваше приложение продолжает использовать учетные данные конечного пользователя из Cloud SDK, вы можете получить ошибку «превышена квота» или «API не включен». Для получения дополнительной информации об учетных записях служб см. https://cloud.google.com/docs/authentication/ warnings.warn (_CLOUD_SDK_CREDENTIALS_WARNING)

    Эта ошибка означает, что ваш код не использует учетную запись службы. Ваш код настроен на использование ADC (учетные данные приложения по умолчанию). Скорее всего, ваш код использует учетные данные Google Cloud SDK, настроенные и сохраненные CLI gcloud.

    Чтобы определить, какие учетные данные использует Cloud SDK, выполните эту команду:

    gcloud auth list

    Идентификатор участника IAM, отображаемый как ACCOUNT со звездочкой, - это учетная запись, используемая интерфейсом командной строки и любыми приложениями, в которых не указаны учетные данные.

    Чтобы узнать больше об ADC, прочтите эту статью, которую я написал:

    Учетные данные облачного приложения Google по умолчанию

    google.api_core.exceptions.ResourceExhausted: 429 Превышена квота для метрики квоты «speech.googleapis.com/default_requests» и ограничена «DefaultRequestsPerMinutePerProject» службы «speech.googleapis.com» для потребителя «project_number: 764086051850».

    В Cloud SDK используется концепция значений по умолчанию. Выполнить gcloud config list. Это отобразит различные элементы. Ищите project. Скорее всего, в этом проекте не включен API Cloud Speech-to-Text.

    ЕЩЕ ОДНА СТРАННАЯ ВЕЩЬ: информация об ошибке показывает, что 'project_number: 764086051850', который отличается от моего project_number преобразования речи в текст на GCP (я различаю номер проекта и идентификатор проекта), project_number, отображаемый в информации об ошибке, также меняется каждый раз код работает. Кажется, я отправлял облачное требование не того проекта?

    Чтобы просмотреть список проектов, идентификаторы проектов и номера проектов, которые ваши текущие учетные данные могут видеть (доступ), выполните:

    gcloud projects list.

    Эта команда отобразит номер проекта с учетом идентификатора проекта:

    gcloud projects list --filter="REPLACE_WITH_PROJECT_ID" --format="value(PROJECT_NUMBER)"
    

    Мои системные переменные среды GOOGLE_APPLICATION_CREDENTIALS исчезают после того, как я перезапущу свой ноутбук в следующий раз. После повторного добавления он появится в списке env, но не сможет быть сохранен после перезагрузки снова.

    Когда вы выполняете эту команду в командной строке, она сохраняется только в течение всего срока службы командной строки: set GOOGLE_APPLICATION_CREDENTIALS=D:\GCloud speech-to-text\Speech To Text Series-93e03f36bc9d.json. При выходе из командной строки, перезагрузке и т. Д. Переменная среды уничтожается.

    Чтобы создать постоянные переменные среды в Windows, отредактируйте Свойства системы -> Переменные среды. Вы можете запустить эту команду из командной строки следующим образом:

    SystemPropertiesAdvanced.exe
    

    Предложения, которые сделают вашу жизнь проще:

    • НЕ используйте длинные имена путей с пробелами для файлов вашей учетной записи службы. Создайте каталог, например C:\Config, и поместите туда файл без пробелов в имени файла.
    • НЕ используйте ADC (учетные данные приложения по умолчанию) при разработке на рабочем столе. Укажите фактические учетные данные, которые вы хотите использовать.

    Измените эту строку:

    client = speech.SpeechClient()
    

    К этому:

    client = speech.SpeechClient().from_service_account_json('c:/config/service-account.json')
    
    • В служебных учетных записях содержится идентификатор проекта. Создайте учетную запись службы в том же проекте, в котором вы собираетесь их использовать (до тех пор, пока вы хорошо не поймете учетные записи IAM и службы).
    10.09.2019
  • Большое спасибо за ответ, я устал от методов и получил новую настройку config и auth. Также я установил постоянную переменную окружения. Однако такое предупреждение и ошибка по-прежнему появляются при выполнении кода Python. Новые настройки, отображаемые в консоли SDK, перечислены ниже: 12.09.2019
  • D: \ Google SDK ›gcloud config list [core] account = [email protected] disable_usage_reporting = False project = Speech-to-text-s-1568092576953 12.09.2019
  • D: \ Google SDK ›список проектов gcloud PROJECT_ID NAME PROJECT_NUMBER Speech To Text-s-1568092576953 Speech To Text Series 737895336527 12.09.2019
  • Если вы попробовали последний метод (добавить from_service_account_json), получить ошибку невозможно. Вернитесь к моему ответу и прочтите его еще раз. 12.09.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..