我正在尝试使用google云语音api将音频剪辑[.flac格式]转换为文本.我正在使用
python客户端库发出请求,并在GCP上有一个带有平面目录结构的存储桶,用于存储音频文件和异步请求.Below是用于发出请求的python代码
from google.cloud import storage
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types
import json
def AudioAnalyze(bucket_name):
storage_client = storage.Client()
speech_client = speech.SpeechClient()
bucket = storage_client.get_bucket(bucket_name)
bucket_contents = bucket.list_blobs()
urls = []
audio_content=[]
for i in bucket_contents:
urls.append("gs://"+i.bucket.name+"/"+i.public_url.split("/")[-1])
for gcs_uri in urls:
audio = types.RecognitionAudio(uri=gcs_uri)
config = types.RecognitionConfig(
encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
sample_rate_hertz=44100,
language_code='en-US')
operation = speech_client.long_running_recognize(config,audio)
print(gcs_uri)
print('Waiting for operation to complete...')
response = operation.result(timeout=450)
speech2text=[]
for result in response.results:
for alternative in result.alternatives:
speech2text.append(alternative.transcript)
ad_content=" ".join(speech2text)
audio_content.append(ad_content)
with open("path/to a/json file/file.json","w") as f:
json.dump(audio_content,f)
if __name__=="__main__":
AudioAnalyze("adsaudiocontent")
我遇到了一个错误:google.api_core.exceptions.NotFound:404在正确处理所有其他文件时,在存储桶中存在的特定文件中找不到请求的实体.音频文件已经过类似的处理管道.音频文件在我的公共存储桶上可用:adsaudiocontent,以便您可以复制错误.有关其他详细信息,请参见回溯.
Traceback (most recent call last):
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/google/api_core/grpc_helpers.py", line 54, in error_remapped_callable
return callable_(*args, **kwargs)
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/grpc/_channel.py", line 487, in __call__
return _end_unary_response_blocking(state, call, False, deadline)
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/grpc/_channel.py", line 437, in _end_unary_response_blocking
raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.NOT_FOUND, Requested entity was not found.)>
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "audioanalyze.py", line 40, in <module>
AudioAnalyze("adsaudiocontent")
File "audioanalyze.py", line 25, in AudioAnalyze
operation = speech_client.long_running_recognize(config,audio)
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/google/cloud/speech_v1/gapic/speech_client.py", line 264, in long_running_recognize
request, retry=retry, timeout=timeout, metadata=metadata)
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/google/api_core/gapic_v1/method.py", line 139, in __call__
return wrapped_func(*args, **kwargs)
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/google/api_core/retry.py", line 260, in retry_wrapped_func
on_error=on_error,
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/google/api_core/retry.py", line 177, in retry_target
return target()
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/google/api_core/timeout.py", line 206, in func_with_timeout
return func(*args, **kwargs)
File "/home/pythonuser1/.virtualenvs/virtual_env/lib/python3.5/site-packages/google/api_core/grpc_helpers.py", line 56, in error_remapped_callable
six.raise_from(exceptions.from_grpc_error(exc), exc)
File "<string>", line 3, in raise_from
google.api_core.exceptions.NotFound: 404 Requested entity was not found.
最佳答案 您不小心使用“/”匹配错误地删除了部分URL,这可能导致此错误.
可以直接使用类bucket中的存储桶名称.