简体   繁体   中英

ServiceUnavailable: 503 failed to connect to all addresses during attempt to recognize audio

I'm trying to run a following code to recognize an audio file. The code is just a compilation from different official examples. But it doesn't work.

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)

I use Anaconda 4.7.12 for Python 3.7 under Windows 10, google-cloud-speech v 1.2.0, google-auth v 1.6.3

The error I get every time is

_Rendezvous Traceback (most recent call last) ~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\grpc_helpers.py in error_remapped_callable(*args, **kwargs) 56 try: ---> 57 return callable_(*args, **kwargs) 58 except grpc.RpcError as exc:

~\AppData\Local\Continuum\anaconda3\lib\site-packages\grpc_channel.py in call (self, request, timeout, metadata, credentials, wait_for_ready, compression) 564 wait_for_ready, compression) --> 565 return _end_unary_response_blocking(state, call, False, None) 566

~\AppData\Local\Continuum\anaconda3\lib\site-packages\grpc_channel.py in _end_unary_response_blocking(state, call, with_call, deadline) 466 else: --> 467 raise _Rendezvous(state, None, None, deadline) 468

_Rendezvous: <_Rendezvous of RPC that terminated with: status = StatusCode.UNAVAILABLE details = "failed to connect to all addresses" debug_error_string = "{"created":"@1569838382.864000000","description":"Failed to pick subchannel","file":"src/core/ext/filters/client_channel/client_channel.cc","file_line":3818,"referenced_errors":[{"created":"@1569838382.863000000","description":"failed to connect to all addresses","file":"src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc","file_line":395,"grpc_status":14}]}" >

The above exception was the direct cause of the following exception:

ServiceUnavailable Traceback (most recent call last) in ----> 1 transcribe_file(file_name)

in transcribe_file(speech_file) 20 21 # [START speech_python_migration_sync_response] ---> 22 response = client.long_running_recognize(config, audio) 23 # [END speech_python_migration_sync_request] 24 # Each result is for a consecutive portion of the audio. Iterate through

~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\cloud\speech_v1\gapic\speech_client.py in long_running_recognize(self, config, audio, retry, timeout, metadata) 339 ) 340 operation = self._inner_api_calls["long_running_recognize"]( --> 341 request, retry=retry, timeout=timeout, metadata=metadata 342 ) 343 return google.api_core.operation.from_gapic(

~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\gapic_v1\method.py in call (self, *args, **kwargs) 141 kwargs["metadata"] = metadata 142 --> 143 return wrapped_func(*args, **kwargs) 144 145

~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\retry.py in retry_wrapped_func(*args, **kwargs) 271 sleep_generator, 272 self._deadline, --> 273 on_error=on_error, 274 ) 275

~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\retry.py in retry_target(target, predicate, sleep_generator, deadline, on_error) 180 for sleep in sleep_generator: 181 try: --> 182 return target() 183 184 # pylint: disable=broad-except

~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\timeout.py in func_with_timeout(*args, **kwargs) 212 """Wrapped function that adds timeout.""" 213 kwargs["timeout"] = next(timeouts) --> 214 return func(*args, **kwargs) 215 216 return func_with_timeout

~\AppData\Local\Continuum\anaconda3\lib\site-packages\google\api_core\grpc_helpers.py in error_remapped_callable(*args, **kwargs) 57 return callable_(*args, **kwargs) 58 except grpc.RpcError as exc: ---> 59 six.raise_from(exceptions.from_grpc_error(exc), exc) 60 61 return error_remapped_callable

~\AppData\Local\Continuum\anaconda3\lib\site-packages\six.py in raise_from(value, from_value)

ServiceUnavailable: 503 failed to connect to all addresses

How can I fix it?

This could be failing due to the credentials. Let's try few things:

  • Ensure that your service account key is correct, you should have something like this:

    from google.oauth2 import service_account

    credentials = service_account.Credentials. from_service_account_file('service_account_key.json')

    speech = speech.SpeechClient(credentials=credentials)

    OR

    speech = speech_v1.SpeechClient(credentials=credentials)

  • Use a Scope:

    credentials = service_account.Credentials.from_service_account_file( credentials_json, scopes=[' https://www.googleapis.com/auth/cloud-platform '])

    More info here .

  • In this thread was solve by using a single instance of a session client object for multiple requests.

  • This could be either a network issue as Dustin said. More info here 503 Service Unavailable

Please let us know if you manage to solve this error.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM