ServiceUnavailable: 503 在尝试识别音频期间无法连接到所有地址
Posted
技术标签:
【中文标题】ServiceUnavailable: 503 在尝试识别音频期间无法连接到所有地址【英文标题】:ServiceUnavailable: 503 failed to connect to all addresses during attempt to recognize audio 【发布时间】:2020-01-29 18:22:52 【问题描述】:我正在尝试运行以下代码来识别音频文件。该代码只是来自不同官方示例的汇编。但它不起作用。
import os
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types
from google.oauth2 import service_account
import io
def transcribe_file(speech_file):
client = speech.SpeechClient(credentials=credentials)
with io.open(speech_file, '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='ru-RU')
response = client.long_running_recognize(config, audio)
for result in response.results:
print(u'Transcript: '.format(result.alternatives[0].transcript))
audio_folder_path = 'data_wav'
all_audios = os.listdir(audio_folder_path)
file_name = os.path.join(audio_folder_path, all_audios[0])
credentials = service_account.Credentials.from_service_account_file("google_aut.json")
transcribe_file(file_name)
我在 Windows 10 下使用 Anaconda 4.7.12 for Python 3.7、google-cloud-speech v 1.2.0、google-auth v 1.6.3
我每次得到的错误是
_Rendezvous Traceback(最近一次通话最后) ~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\grpc_helpers.py 在 error_remapped_callable(*args, **kwargs) 56 尝试: ---> 57 返回 callable_(*args, **kwargs) 58 除了 grpc.RpcError 作为 exc:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\grpc_channel.py 在调用(自我、请求、超时、元数据、凭据、 wait_for_ready,压缩) 564 wait_for_ready,压缩) --> 565 返回_end_unary_response_blocking(状态,调用,假,无) 566
~\AppData\Local\Continuum\anaconda3\lib\site-packages\grpc_channel.py 在_end_unary_response_blocking(状态,调用,with_call,截止日期) 466 其他: --> 467 raise _Rendezvous(状态,无,无,截止日期) 468
_Rendezvous:<_rendezvous rpc statuscode.unavailable details="无法连接到所有地址" debug_error_string="" created subchannel>
上述异常是以下异常的直接原因:
ServiceUnavailable Traceback(最近调用 最后)在 ----> 1 个转录文件(文件名)
在 transcribe_file(speech_file) 20 21 # [开始语音_python_migration_sync_response] ---> 22 响应 = client.long_running_recognize(配置,音频) 23 # [结束 Speech_python_migration_sync_request] 24 # 每个结果都是针对音频的连续部分。遍历
~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\cloud\speech_v1\gapic\speech_client.py 在 long_running_recognize(self, config, audio, retry, timeout, 元数据) 339) 340 操作 = self._inner_api_calls["long_running_recognize"]( --> 341 请求,重试=重试,超时=超时,元数据=元数据 342) 343 返回 google.api_core.operation.from_gapic(
~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\gapic_v1\method.py 在 调用(self, *args, **kwargs) 141 kwargs [“元数据”] = 元数据 142 --> 143 返回 Wrapped_func(*args, **kwargs) 144 145
~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\retry.py 在 retry_wrapped_func(*args, **kwargs) 第271章 第272章 --> 273 on_error=on_error, 274) 275
~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\retry.py 在 retry_target(目标,谓词,sleep_generator,截止日期, on_error) 在 sleep_generator 中睡眠为 180: 181尝试: --> 182 返回目标() 183 184 # pylint: disable=broad-except
~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\timeout.py 在 func_with_timeout(*args, **kwargs) 212 """添加超时的包装函数。""" 213 kwargs [“超时”] = 下一个(超时) --> 214 返回函数(*args,**kwargs) 215 216 返回 func_with_timeout
~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\grpc_helpers.py 在 error_remapped_callable(*args, **kwargs) 57 返回 callable_(*args, **kwargs) 58 除了 grpc.RpcError 作为 exc: ---> 59 6.raise_from(exceptions.from_grpc_error(exc), exc) 60 61 返回error_remapped_callable
~\AppData\Local\Continuum\anaconda3\lib\site-packages\six.py 在 raise_from(value, from_value)
ServiceUnavailable: 503 连接所有地址失败
我该如何解决?
【问题讨论】:
您能否提供有关您的网络的任何详细信息,例如任何可能导致问题的代理?也许有防火墙?该错误表明某些网络连接可能被阻止。 您好,由于这个问题很久以前提出,我想知道您是否设法解决了这个问题。从那时起,API 使用的语法和模块发生了变化,您需要更新代码。在稍微更改它之后,我已经能够运行这段代码的 sn-p 并且我没有收到 ServiceUnavailable 异常。您能否告诉我您是否仍然遇到此问题? 我遇到了同样的问题,但我时不时地得到 503。很奇怪。关于 Toni 的回答:防火墙已经过调整,应该会导致问题。此外,我只对多个请求使用单个会话客户端实例。 【参考方案1】:这可能由于凭据而失败。让我们尝试几件事:
确保您的服务帐户密钥正确,您应该有这样的内容:
从 google.oauth2 导入 service_account
凭据 = service_account.凭据。 from_service_account_file('service_account_key.json')
speech = Speech.SpeechClient(credentials=credentials)
或
speech = speech_v1.SpeechClient(credentials=credentials)
使用范围:
凭证 = service_account.Credentials.from_service_account_file( 凭据_json, scopes=['https://www.googleapis.com/auth/cloud-platform'])
更多信息here。
在这个thread 中,通过对多个请求使用会话客户端对象的单个实例来解决。
这可能是 Dustin 所说的网络问题。更多信息在这里503 Service Unavailable
如果您设法解决此错误,请告诉我们。
【讨论】:
以上是关于ServiceUnavailable: 503 在尝试识别音频期间无法连接到所有地址的主要内容,如果未能解决你的问题,请参考以下文章
谷歌云任务“创建任务”请求抛出 ServiceUnavailable:503
Cloud Datastore Emulator 在 Android 测试站中使用时返回 503 'Service Unavailable'