关于python:Google Speech API无法在Google Storage上找到文件:错误404

Google Speech API unable to find a file on Google Storage: error 404

我正在尝试使用Google Cloud Speech API将音频片段[.flac格式]转换为文本。我正在使用python客户端库进行请求,并在GCP上使用了带有平坦目录结构的存储桶,存储音频文件并发出异步请求。以下是发出请求的python代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
            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,以便您可以复制错误。有关其他详细信息,请单击追溯。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
                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的一部分,这可能导致此错误。

可以直接使用类存储桶中的存储桶名称。