有人能帮忙吗?这个真的快把我逼疯了...谢谢!
我尝试使用谷歌云平台API语音到文本。
工具:WINDOWS 10 && GCP &&Python(Pycharm IDE)
1.我已经为我的speech-to-test项目创建了一个服务帐户作为所有者,并在json中从GCP控制台生成了一个密钥,然后我设置了环境变量。我在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列表中。
1.我已经在GCP控制台中启用了谷歌存储API和谷歌语音转文本API。
1.我试过通过python显式显示凭证方法,同样的问题。
1.我已经安装了google cloud SDK shell,并通过使用command初始化来登录我的帐户。
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))
----运行上述代码时,预期会收到“200 OK”和转录文本(来自GCP文档的简短语音到文本API)
----但得到:
- D:\Python\main program\lib\site-packages\google\auth_default.py:66:用户警告:您的应用程序已使用来自Google Cloud SDK的最终用户凭据进行了身份验证。我们建议大多数服务器应用程序改用服务帐户。如果您的应用程序继续使用来自Cloud SDK的最终用户凭据,则可能会收到“配额已超出”或“API未启用”错误。有关服务帐户的详细信息,请参阅https://cloud.google.com/docs/authentication/ warnings。warn(_CLOUD_SDK_CREDENTIALS_WARNING)
- google.API_core.exceptions.ResourceExhausted:429配额度量“speech.googleapis.com_requests”和限制“DefaultRequestsPerMinutePerProject”的配额已超过,该服务属于消费者“project_number:764086051850”的speech.googleapis.com。
另一件怪事:错误信息显示“project_number:764086051850”,这与我在GCP上的语音转文本project_number不同(我区分项目编号和项目ID),错误信息中显示的project_number在每次代码运行时也会发生变化。似乎我发送了错误项目的云需求?
1.我的GOOGLE_APPLICATION_CREDENTIALS系统环境变量在我下次重启笔记本电脑后消失了。重新添加后,它会出现在env列表中,但再次重启后无法存储。
如果有人能帮上忙,我很感激,谢谢!
2条答案
按热度按时间lymnna711#
尝试这样做:
gcloud init
-〉authenticate并选择项目gcloud auth activate-service-account <service account email> --key-file=<JSON key file>
gcloud config list
以验证您的配置。运行您的脚本,看看它是否更好。
否则,尝试在微型虚拟机上做同样的事情,以验证您的代码、服务帐户和环境(并验证只有Windows存在问题)
对于Windows的问题,我在ChromeBook,我不能测试和帮助你在这.然而,我检查了关于EnvVar在互联网上,这更新注册表.检查你是否没有保护注册表更新的东西(防病毒,....)
9fkzdhlc2#
D:\Python\main program\lib\site-packages\google\auth_default.py:66:用户警告:您的应用程序已使用来自Google Cloud SDK的最终用户凭据进行了身份验证。我们建议大多数服务器应用程序改用服务帐户。如果您的应用程序继续使用来自Cloud SDK的最终用户凭据,则可能会收到“配额已超出”或“API未启用”错误。有关服务帐户的详细信息,请参阅https://cloud.google.com/docs/authentication/ warnings。warn(_CLOUD_SDK_CREDENTIALS_WARNING)
此错误意味着您的代码未使用服务帐户。您的代码已配置为使用ADC(应用程序默认凭据)。您的代码很可能正在使用CLI
gcloud
配置和存储的Google Cloud SDK凭据。要确定Cloud SDK使用的凭据,请执行以下命令:
gcloud auth list
IAM成员ID显示为ACCOUNT,带星号的是CLI和任何未指定凭据的应用程序使用的帐户。
要了解更多关于ADC的信息,请阅读我写的这篇文章:
Google Cloud Application Default Credentials
google.API_core.exceptions.ResourceExhausted:429配额度量“speech.googleapis.com_requests”和限制“DefaultRequestsPerMinutePerProject”的配额已超过,该服务属于消费者“project_number:764086051850”的speech.googleapis.com。
云SDK有默认值的概念。执行
gcloud config list
。这将显示各种项目。查找project
。很可能此项目没有启用APICloud Speech-to-Text
。还有一件怪事:错误信息显示“project_number:764086051850”,这与我在GCP上的语音转文本project_number不同(我区分项目编号和项目ID),错误信息中显示的project_number在每次代码运行时也会发生变化。似乎我发送了错误项目的云需求?
要查看当前凭据可以查看(访问)的项目、项目ID和项目编号的列表,请执行以下操作:
gcloud projects list
.此命令将显示给定项目ID的项目编号:
我的GOOGLE_APPLICATION_CREDENTIALS系统环境变量在我下次重启笔记本电脑后消失了。重新添加后,它会出现在env列表中,但再次重启后无法存储。
当您在命令提示符中执行此命令时,它只在命令提示符的生命周期内持续:
set GOOGLE_APPLICATION_CREDENTIALS=D:\GCloud speech-to-text\Speech To Text Series-93e03f36bc9d.json
。当您退出命令提示符、重新启动等时,环境变量将被销毁。要在Windows上创建持久环境变量,请编辑系统属性-〉环境变量。您可以从命令提示符启动此命令,如下所示:
让你的生活更轻松的建议:
C:\Config
,并将文件放在那里,文件名中没有空格。更改此行:
对此: