对Google Cloud Python API库的身份验证已停止工作
我对Google Cloud API的Python库中的身份验证有问题。 起初,它工作了几天没有问题,但突然API调用没有出现在Google CloudPlatform的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
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)