我正在尝试运行以下代码来识别音频文件。该代码只是来自不同官方示例的汇编。但这不起作用。
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,google-cloud-speech v 1.2.0,google-auth v 1.6.3上将Anaconda 4.7.12用于Python 3.7
我每次遇到的错误是
_交会回溯(最近一次通话最后一次) 〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ google \ api_core \ grpc_helpers.py 在error_remapped_callable(* args,** kwargs)中 56尝试: ---> 57 return callable _(* args,** kwargs) 58,除了grpc.RpcError作为exc:
〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ grpc_channel.py 在呼叫中(自身,请求,超时,元数据,凭据, wait_for_ready,压缩) (564) -> 565 return _end_unary_response_blocking(state,call,False,None) 566
〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ grpc_channel.py 在_end_unary_response_blocking中(状态,通话,with_call,截止日期) 第466章 -> 467加薪_Rendezvous(状态,无,无,截止日期) 468
_Rendezvous:<_的RPC终止,终止于: 状态= StatusCode.UNAVAILABLE details =“无法连接到所有地址” debug_error_string =“ {”创建“:” @ 1569838382.864000000“,”描述“:”无法选择 子频道“,”文件“:” src / core / ext / filters / client_channel / client_channel.cc“,”文件行“:3818,” referenced_errors“:[{”创建“:” @ 1569838382.863000000“,”描述“:”失败 连接到所有人 地址”,“文件”:“ src / core / ext / filters / client_channel / lb_policy / pick_first / pick_first.cc”,“ file_line”:395,“ grpc_status”:14}]}“ >
上述异常是以下异常的直接原因:
ServiceUnavailable追溯(最近的呼叫) 最后) ----> 1个transcribe_file(文件名)
transcribe_file(语音文件)中的20 21#[START speech_python_migration_sync_response] ---> 22响应= client.long_running_recognize(配置,音频) 23#[END speech_python_migration_sync_request] 24#每个结果都是针对音频的连续部分。遍历
〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ google \ cloud \ speech_v1 \ gapic \ speech_client.py 在long_running_recognize(自身,配置,音频,重试,超时, 元数据) 339) 340 operation = 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 在通话中(自己,* args,** kwargs) 141 kwargs [“ metadata”] =元数据 142 -> 143返回wrapd_func(* args,** kwargs) 144 145
〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ google \ api_core \ retry.py 在retry_wrapped_func(* args,** kwargs)中 271 sleep_generator, 第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返回target() 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 [“ timeout”] =下一个(超时) -> 214 return func(* 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 return callable _(* args,** kwargs) 58除了grpc.RpcError作为exc: ---> 59 six.raise_from(except.from_grpc_error(exc),排除) 60 61返回error_remapped_callable
〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ six.py在 raise_from(value,from_value)
ServiceUnavailable:503无法连接到所有地址
我该如何解决?
答案 0 :(得分:0)
由于凭据,这可能失败。让我们尝试一些事情:
确保您的服务帐户密钥正确,您应该输入以下内容:
从google.oauth2导入service_account
凭据= service_account。凭据。 from_service_account_file('service_account_key.json')
语音=语音。SpeechClient(credentials = credentials)
OR
speech = speech_v1.SpeechClient(credentials = credentials)
使用范围:
凭据= service_account.Credentials.from_service_account_file( 凭据_json, scopes = ['https://www.googleapis.com/auth/cloud-platform'])
更多信息here。
在此thread中,通过将会话客户端对象的单个实例用于多个请求来解决。
这可能是达斯汀说的网络问题。这里更多信息503 Service Unavailable
如果您能够解决此错误,请告诉我们。