使用 ML.TRANSCRIBE 函数转写音频文件
本文档介绍如何使用 ML.TRANSCRIBE 函数以及远程模型转写对象表中的音频文件。
支持的位置
您必须在以下某个位置创建此过程中使用的远程模型:
asia-northeast1asia-south1asia-southeast1australia-southeast1eueurope-west1europe-west2europe-west3europe-west4northamerica-northeast1usus-central1us-east1us-east4us-west1
您必须在远程模型所在的区域中运行 ML.TRANSCRIBE 函数。
所需的角色
如需创建远程模型和转写音频文件,您需要拥有项目级的以下 Identity and Access Management (IAM) 角色:
- 创建语音识别器:Cloud Speech Editor (
roles/speech.editor) - 创建和使用 BigQuery 数据集、表和模型:BigQuery Data Editor (
roles/bigquery.dataEditor) 创建、委托和使用 BigQuery 连接:BigQuery Connections Admin (
roles/bigquery.connectionsAdmin)如果您尚未配置默认连接,则可以在运行
CREATE MODEL语句时创建并设置一个连接。为此,您必须拥有项目的 BigQuery Admin (roles/bigquery.admin) 角色。如需了解详情,请参阅配置默认连接。向连接的服务账号授予权限:Project IAM Admin (
roles/resourcemanager.projectIamAdmin)创建 BigQuery 作业:BigQuery Job User (
roles/bigquery.jobUser)
这些预定义角色包含执行本文档中的任务所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
- 创建数据集:
bigquery.datasets.create - 创建、委托和使用连接:
bigquery.connections.* - 设置服务账号权限:
resourcemanager.projects.getIamPolicy和resourcemanager.projects.setIamPolicy - 创建模型并运行推断:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
- 创建对象表:
bigquery.tables.create和bigquery.tables.update - 创建语音识别器:
speech.recognizers.createspeech.recognizers.getspeech.recognizers.recognizespeech.recognizers.update
准备工作
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
-
Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. 在 Cloud de Confiance 控制台中,前往 BigQuery 页面。
在左侧窗格中,点击 Explorer:

如果您没有看到左侧窗格,请点击 展开左侧窗格以打开该窗格。
在探索器窗格中,点击您的项目名称。
点击 查看操作 > 创建数据集。
在 创建数据集 页面上,执行以下操作:
在数据集 ID 中,输入数据集的名称。
对于位置类型,请选择区域或多区域。
- 如果您选择了区域,请从区域列表中选择一个位置。
- 如果您选择了多区域,请从多区域列表中选择美国或欧洲。
点击创建数据集。
前往 BigQuery 页面。
在探索器窗格中,点击 添加数据:
系统随即会打开添加数据对话框。
在过滤条件窗格中的数据源类型部分,选择企业应用。
或者,在搜索数据源字段中,您可以输入
Vertex AI。在精选数据源部分中,点击 Vertex AI。
点击 Vertex AI 模型:BigQuery 联合解决方案卡片。
在连接类型列表中,选择 Vertex AI 远程模型、远程函数、BigLake 和 Spanner(Cloud 资源)。
在连接 ID 字段中,输入连接的名称。
点击创建连接。
点击转到连接。
在连接信息窗格中,复制服务账号 ID 以在后续步骤中使用。
在命令行环境中,创建连接:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id参数会替换默认项目。请替换以下内容:
REGION:您的连接区域PROJECT_ID:您的 Cloud de Confiance 项目 IDCONNECTION_ID:您的连接的 ID
当您创建连接资源时,BigQuery 会创建一个唯一的系统服务账号,并将其与该连接相关联。
问题排查:如果您收到以下连接错误,请更新 Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
检索并复制服务账号 ID 以在后续步骤中使用:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
输出类似于以下内容:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.s3ns-system.iam.gserviceaccount.com"}- 启动 Cloud Shell。
-
设置要应用 Terraform 配置的默认 Cloud de Confiance 项目。
您只需为每个项目运行一次以下命令,即可在任何目录中运行它。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。
-
在 Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有
.tf扩展名,例如main.tf。在本教程中,该文件称为main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。
将示例代码复制到新创建的
main.tf中。(可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。
- 查看和修改要应用到您的环境的示例参数。
- 保存更改。
-
初始化 Terraform。您只需为每个目录执行一次此操作。
terraform init
(可选)如需使用最新的 Google 提供程序版本,请添加
-upgrade选项:terraform init -upgrade
-
查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
terraform plan
根据需要更正配置。
-
通过运行以下命令并在提示符处输入
yes来应用 Terraform 配置:terraform apply
等待 Terraform 显示“应用完成!”消息。
- 打开您的 Cloud de Confiance 项目以查看结果。在 Cloud de Confiance 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。
前往 IAM 和管理页面。
点击 授予访问权限。
系统随即会打开添加主账号对话框。
在新的主账号字段中,输入您之前复制的服务账号 ID。
点击选择角色字段,然后在过滤条件中输入
Cloud Speech Client。点击添加其他角色。
在选择角色字段中,选择 Cloud Storage,然后选择 Storage Object Viewer。
点击保存。
PROJECT_NUMBER:您的项目编号。MEMBER:您之前复制的服务账号 ID。PROJECT_ID:您的项目 ID。DATASET_ID:包含模型的数据集的 ID。MODEL_NAME:模型的名称。REGION:连接使用的区域。CONNECTION_ID:连接 ID,例如myconnection。当您在 Cloud de Confiance 控制台中查看连接详情时,连接 ID 是连接 ID 字段中显示的完全限定连接 ID 的最后一部分,例如
projects/myproject/locations/connection_location/connections/myconnection。PROJECT_NUMBER:包含语音识别器的项目的编号。您可以在 Cloud de Confiance 控制台的信息中心页面上的项目信息卡片中找到此值。LOCATION:语音识别器使用的位置。您可以在 Cloud de Confiance 控制台的列出识别器页面上的位置字段中找到此值。RECOGNIZER_ID:语音识别器 ID。您可以在 Cloud de Confiance 控制台的列出识别器页面上的 ID 字段中找到此值。此选项不是必需的。如果您未为其指定值,系统会使用默认的识别器。在这种情况下,您必须为
ML.TRANSCRIBE函数的recognition_config参数指定值,以便为默认识别器提供配置。您只能在您提供的
recognition_config值中使用chirp转录模型。PROJECT_ID:您的项目 ID。DATASET_ID:包含该模型的数据集的 ID。MODEL_NAME:模型的名称。OBJECT_TABLE_NAME:包含待处理音频文件 URI 的对象表的名称。recognition_config:JSON 格式的RecognitionConfig资源。如果已使用
SPEECH_RECOGNIZER选项为远程模型指定了识别器,则无法指定recognition_config值。如果未使用
SPEECH_RECOGNIZER选项为远程模型指定识别器,则必须指定recognition_config值。此值用于为默认识别器提供配置。您只能在您提供的
recognition_config值中使用chirp转录模型。- 如需详细了解 BigQuery ML 中的模型推理,请参阅模型推理概览。
- 如需详细了解如何使用 Cloud AI API 执行 AI 任务,请参阅 AI 应用概览。
- 如需详细了解生成式 AI 模型支持的 SQL 语句和函数,请参阅生成式 AI 模型的端到端用户体验历程。
创建识别器
Speech-to-Text 支持称为识别器的资源。识别器代表存储的和可重复使用的识别配置。您可以创建识别器,以便对应用的转写或流量进行逻辑分组。
创建语音识别器是可选操作。如果您选择创建语音识别器,请记下识别器的项目 ID、位置和识别器 ID,以便在 CREATE MODEL 语句中使用,如 SPEECH_RECOGNIZER 中所述。如果您选择不创建语音识别器,则必须为 ML.TRANSCRIBE 函数的 recognition_config 参数指定值。
您只能在语音识别器或您提供的 recognition_config 值中使用 chirp
转录模型。
创建数据集
创建 BigQuery 数据集以包含您的资源:
控制台
bq
创建连接
如果您已配置默认连接,或者您具有 BigQuery Admin 角色,则可以跳过此步骤。
创建一个 Cloud 资源连接供远程模型使用,并获取连接的服务账号。在上一步中创建的数据集所在的位置创建连接。
从下列选项中选择一项:
控制台
bq
Terraform
使用 google_bigquery_connection 资源。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
以下示例在 US 区域中创建一个名为 my_cloud_resource_connection 的 Cloud 资源连接:
如需在 Cloud de Confiance 项目中应用 Terraform 配置,请完成以下部分中的步骤。
准备 Cloud Shell
准备目录
每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。
应用更改
向服务账号授予访问权限
从下列选项中选择一项:
控制台
gcloud
使用 gcloud projects add-iam-policy-binding 命令:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/speech.client' --condition=None gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/storage.objectViewer' --condition=None
替换以下内容:
未能授予权限会导致 Permission denied 错误。
创建对象表
针对 Cloud Storage 中的一组音频文件创建对象表。对象表中的音频文件必须是受支持的类型。
对象表使用的 Cloud Storage 存储分区应位于您计划创建模型并调用 ML.TRANSCRIBE 函数所在的项目中。如果您要在不同于对象表使用的 Cloud Storage 存储桶所在的项目中调用 ML.TRANSCRIBE 函数,您必须在存储桶级层将 Storage Admin 角色授予 service-A@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com 服务账号。
创建模型
使用 CLOUD_AI_SPEECH_TO_TEXT_V2 这一 REMOTE_SERVICE_TYPE 创建远程模型:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( REMOTE_SERVICE_TYPE = 'CLOUD_AI_SPEECH_TO_TEXT_V2', SPEECH_RECOGNIZER = 'projects/PROJECT_NUMBER/locations/LOCATION/recognizers/RECOGNIZER_ID' );
替换以下内容:
转写音频文件
使用 ML.TRANSCRIBE 函数转写音频文件:
SELECT * FROM ML.TRANSCRIBE( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE `PROJECT_ID.DATASET_ID.OBJECT_TABLE_NAME`, RECOGNITION_CONFIG => ( JSON 'recognition_config') );
替换以下内容:
示例
示例 1
以下示例转写 audio 表表示的音频文件,而不替换识别器的默认配置:
SELECT * FROM ML.TRANSCRIBE( MODEL `myproject.mydataset.transcribe_model`, TABLE `myproject.mydataset.audio` );
以下示例转写 audio 表表示的音频文件,并为默认识别器提供配置:
SELECT * FROM ML.TRANSCRIBE( MODEL `myproject.mydataset.transcribe_model`, TABLE `myproject.mydataset.audio`, recognition_config => ( JSON '{"language_codes": ["en-US" ],"model": "chirp","auto_decoding_config": {}}') );