我第一次在项目中使用 GCS Speech API 将一系列音频文件转换为文本。每个文件时长约60分钟,全程是一个人不断说话。 我已经安装了 GC SDK,并使用它来执行请求,如下所示:
gcloud ml speech recognize-long-running \
"/path/to/file/audio.flac" \
--language-code="pt-PT" --async
每次我在其中一个录音上运行此命令时,都会给出以下错误消息:
ERROR: (gcloud.ml.speech.recognize-long-running) INVALID_ARGUMENT:
Request payload size exceeds the limit: 10485760 bytes.
这似乎是一个非常严格的限制,因为如果 API 能够处理长达 180 分钟的文件,那么它就不可能输出最多 10,000 个字符的语音。
我尝试将音频文件分成更小的部分,并达到最多四个 15 分钟的样本,但即使如此,我也遇到了同样的错误。此外,即使它有效,分割我从现在开始制作的每一个新录音也是一项非常乏味且不切实际的任务。
我一直在寻找,到目前为止我还没有就如何增加或规避这个限制得出任何结论。我使用的是免费试用帐户,但我很高兴升级到付费订阅以增加此限制。据我了解,即使我付费订阅,此限制也将持续存在。
有人找到解决这个问题的方法吗?
与 Google Cloud 支持人员交谈后,我得出的结论是,这是由于我的免费试用订阅和文件大小(约 60 分钟)的限制。
升级到付费订阅并将我的文件上传到 Google 云存储后,我能够从转录中接收有效负载。
$ gcloud ml speech recognize-long-running "gs://test-bucket/my_audio_file.flac" --language-code="pt-PT" --async
Check operation [7456984365978465938] for status.
{
"name": "7456984365978465938"
}
$ gcloud ml speech operations describe 7456984365978465938
{
... payload ...
}
您可以尝试将您的
.wav
文件分成块,编写chunk_size_seconds=60
,然后您可以连接您获得的文本。