本页面演示了如何使用 Speech-to-Text API 和异步语音识别将长音频文件(时长超过 1 分钟)转录为文字。
异步语音识别简介
异步语音识别会启动一项长时间运行的音频处理操作。使用异步语音识别转录超过 60 秒的音频。对于较短的音频,同步语音识别更为简单快捷。 异步语音识别的上限为 480 分钟。
Speech-to-Text 和异步处理
Speech-to-Text 可以直接接收本地文件中的音频内容进行异步处理。但是,本地文件的音频时间限制为 60 秒。尝试转录长度超过 60 秒的本地音频文件会导致错误。如需使用异步语音识别功能转录超过 60 秒的音频,您必须将数据保存在 Google Cloud Storage 存储桶中。
您可以使用 google.longrunning.Operations 方法检索操作结果。操作结果在 5 天(120 小时)内可供检索。您也可以选择将结果直接上传到 Google Cloud Storage 存储桶。
使用 Google Cloud Storage 文件转录长音频文件
这些示例使用 Cloud Storage 存储桶来存储长音频转录过程的原始音频输入。如需查看典型的 longrunningrecognize
操作响应的示例,请参阅参考文档。
协议
如需了解完整的详细信息,请参阅 speech:longrunningrecognize
API 端点。
如需执行同步语音识别,请发出 POST
请求并提供相应的请求正文。以下示例展示了一个使用 curl
发出的 POST
请求。该示例使用 Google Cloud CLI 生成访问令牌。如需了解如何安装 gcloud CLI,请参阅快速入门。
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'config': { 'language_code': 'en-US' }, 'audio':{ 'uri':'gs://cloud-samples-tests/speech/brooklyn.flac' } }" "https://speech.googleapis.com/v1/speech:longrunningrecognize"
如需详细了解配置请求正文的信息,请参阅 RecognitionConfig 和 RecognitionAudio 参考文档。
如果请求成功,服务器将返回一个 200 OK
HTTP 状态代码以及 JSON 格式的响应:
{ "name": "7612202767953098924" }
其中,name
是为请求创建的长音频转录操作的名称。
等待处理完成。处理时间因来源音频而异。在大多数情况下,您只需等待源音频长度的一半时间即可获得结果。向 https://speech.googleapis.com/v1/operations/
端点发出 GET
请求即可获取长时间运行的操作的状态。请将 your-operation-name
替换为 longrunningrecognize
请求返回的 name
。
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ "https://speech.googleapis.com/v1/operations/your-operation-name"
如果请求成功,服务器将返回一个 200 OK
HTTP 状态代码以及 JSON 格式的响应:
{ "name": "7612202767953098924", "metadata": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata", "progressPercent": 100, "startTime": "2017-07-20T16:36:55.033650Z", "lastUpdateTime": "2017-07-20T16:37:17.158630Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse", "results": [ { "alternatives": [ { "transcript": "how old is the Brooklyn Bridge", "confidence": 0.96096134, } ] }, { "alternatives": [ { ... } ] } ] } }
如果该操作尚未完成,则可以通过反复发出 GET
请求来轮询此端点,直到相应响应的 done
属性为 true
为止。
gcloud
如需查看完整的详细信息,请参阅 recognize-long-running
命令。
如需执行异步语音识别,请使用 Google Cloud CLI,并提供本地文件的路径或 Google Cloud Storage 网址。
gcloud ml speech recognize-long-running \ 'gs://cloud-samples-tests/speech/brooklyn.flac' \ --language-code='en-US' --async
如果请求成功,则服务器以 JSON 格式返回长时间运行的操作的 ID。
{ "name": OPERATION_ID }
然后,您可以通过运行以下命令来获取该操作的信息。
gcloud ml speech operations describe OPERATION_ID
您也可以通过运行以下命令来轮询该操作,直到它完成为止。
gcloud ml speech operations wait OPERATION_ID
该操作完成后,它会以 JSON 格式返回音频的转录内容。
{ "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse", "results": [ { "alternatives": [ { "confidence": 0.9840146, "transcript": "how old is the Brooklyn Bridge" } ] } ] }
Go
如需了解如何安装和使用 Speech-to-Text 客户端库,请参阅 Speech-to-Text 客户端库。如需了解详情,请参阅 Speech-to-Text Go API 参考文档。
如需向 Speech-to-Text 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Speech-to-Text 客户端库,请参阅 Speech-to-Text 客户端库。如需了解详情,请参阅 Speech-to-Text Java API 参考文档。
如需向 Speech-to-Text 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Speech-to-Text 客户端库,请参阅 Speech-to-Text 客户端库。如需了解详情,请参阅 Speech-to-Text Node.js API 参考文档。
如需向 Speech-to-Text 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Speech-to-Text 客户端库,请参阅 Speech-to-Text 客户端库。如需了解详情,请参阅 Speech-to-Text Python API 参考文档。
如需向 Speech-to-Text 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
其他语言
C#:请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 的 Speech-to-Text 参考文档。
PHP:请按照客户端库页面上的 PHP 设置说明 操作,然后访问 PHP 的 Speech-to-Text 参考文档。
Ruby:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 的 Speech-to-Text 参考文档。
将转录结果上传到 Cloud Storage 存储桶
Speech-to-Text 支持将长时间运行的识别操作的结果直接上传到 Cloud Storage 存储桶。如果您通过 Cloud Storage 触发器实现此功能,Cloud Storage 上传可触发调用 Cloud Functions 的通知,无需轮询 Speech-to-Text 即可获得识别结果。
如需将结果上传到 Cloud Storage 存储桶,请在长时间运行的识别请求中提供可选的 TranscriptOutputConfig
输出配置。
message TranscriptOutputConfig {
oneof output_type {
// Specifies a Cloud Storage URI for the recognition results. Must be
// specified in the format: `gs://bucket_name/object_name`
string gcs_uri = 1;
}
}
协议
如需了解完整的详细信息,请参阅 longrunningrecognize
API 端点。
以下示例展示了如何使用 curl
发送 POST
请求,其中请求正文指定了 Cloud Storage 存储桶的路径。结果将作为存储 SpeechRecognitionResult
的 JSON
文件上传到此位置。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'config': {...}, 'output_config': { 'gcs_uri':'gs://bucket/result-output-path.json' }, 'audio': { 'uri': 'gs://bucket/audio-path' } }" "https://speech.googleapis.com/v1p1beta1/speech:longrunningrecognize"
LongRunningRecognizeResponse
包含尝试上传的 Cloud Storage 存储桶的路径。如果上传失败,则会返回输出错误。如果已存在同名文件,则上传会将结果写入后缀为时间戳的新文件。
{ ... "metadata": { ... "outputConfig": {...} }, ... "response": { ... "results": [...], "outputConfig": { "gcs_uri":"gs://bucket/result-output-path" }, "outputError": {...} } }
自行试用
如果您是 Google Cloud 新手,请创建一个账号来评估 Speech-to-Text 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
免费试用 Speech-to-Text