对Google Cloud Python API库的身份验证已停止工作

对Google Cloud Python API库的身份验证已停止工作,python,google-cloud-vision,google-cloud-speech,google-cloud-python,gcloud-python,Python,Google Cloud Vision,Google Cloud Speech,Google Cloud Python,Gcloud Python,我对Google Cloud API的Python库中的身份验证有问题。 起初,它工作了几天没有问题,但突然API调用没有出现在Google CloudPlatform的API概述中 我创建了一个服务帐户,并将json文件存储在本地。然后,我将环境变量GCLOUD\u PROJECT设置为项目ID,并将GOOGLE\u APPLICATION\u CREDENTIALS设置为json文件的路径 from google.cloud import speech client = speech.Cli

我对Google Cloud API的Python库中的身份验证有问题。 起初,它工作了几天没有问题,但突然API调用没有出现在Google CloudPlatform的API概述中

我创建了一个服务帐户,并将
json
文件存储在本地。然后,我将环境变量
GCLOUD\u PROJECT
设置为项目ID,并将
GOOGLE\u APPLICATION\u CREDENTIALS
设置为json文件的路径

from google.cloud import speech
client = speech.Client()
print(client._credentials.service_account_email)
打印正确的服务帐户电子邮件

下面的代码成功地转录了
音频文件
,但是我的谷歌云项目的仪表板没有显示任何激活的语音API图

import io
with io.open(audio_file, 'rb') as f:
    audio = client.sample(f.read(), source_uri=None, sample_rate=48000, encoding=speech.encoding.Encoding.FLAC)

alternatives = audio.sync_recognize(language_code='de-DE')
在某些情况下,代码还出现了一些关于使用限制的错误。我猜由于身份验证不成功,不知何故使用了free/limited选项

我还通过安装Google Cloud SDK和
gcloud auth应用程序默认登录名
,尝试了另一种身份验证选项,但没有成功

我不知道从哪里开始解决这个问题。 感谢您的帮助

(我的系统使用Anaconda运行Windows 7)

编辑: 错误计数(
Fehler
)随着对API的调用而增加。我怎样才能得到有关错误的详细信息


设置
GOOGLE\u应用程序\u凭据时,请确保使用的是绝对路径。此外,您可能需要检查并确保它具有
“范围”:https://www.googleapis.com/auth/cloud-platform“
在其响应中

如果您:

0.24.0:

speech\u client=speech.client(\u use\u grpc=True)

0.23.0:

speech\u client=speech.client(使用\u gax=True)

通常这是一个编码问题,您是否可以尝试使用示例音频或尝试使用Unix rec工具之类的工具生成LINEAR16示例:

rec --channels=1 --bits=16 --rate=44100 audio.wav trim 0 5

其他说明:

  • 同步识别仅限于60秒的音频,您必须使用异步来识别更长的音频
  • 如果您还没有,请为您的帐户设置帐单

关于使用问题,问题在于,当您使用新的google云库访问ML API时,似乎每个人都对每个人共享的项目进行了身份验证(因此,它说您已经用完了限制,即使您没有使用任何东西)。要检查并确认这一点,您可以使用python客户机库调用一个尚未启用的ML API,这将给出一个结果,尽管它不应该这样做。这个问题一直存在于其他语言客户端库和操作系统中,因此我怀疑这是他们的grpc的问题

因此,为了确保一致性,我总是使用使用API密钥的旧GoogleAppClient。下面是使用translate API的示例:

from googleapiclient import discovery

service = discovery.build('translate', 'v2', developerKey='')

service_request = service.translations().list(q='hello world', target='zh')
result = service_request.execute()

print(result)
对于语音API,它大致包括以下内容:

from googleapiclient import discovery

service = discovery.build('speech', 'v1beta1', developerKey='')

service_request = service.speech().syncrecognize()
result = service_request.execute()

print(result)
您可以在中获得发现API的列表,其中包含位于中的speech API


使用discovery库的另一个好处是,与当前库相比,您可以获得更多的选项,尽管实施起来往往有点困难。

它现在可以工作了。首先,我将
GOOGLE\u应用程序\u凭据设置为绝对路径,这不会改变任何内容。第二,我将包
googlecloudspeech
更新为版本
0.24
。之后,API调用将显示在仪表板上。
from googleapiclient import discovery

service = discovery.build('speech', 'v1beta1', developerKey='')

service_request = service.speech().syncrecognize()
result = service_request.execute()

print(result)