使用 ML.TRANSCRIBE 函数转写音频文件
本文档介绍如何使用 ML.TRANSCRIBE
函数以及远程模型转写对象表中的音频文件。
支持的位置
您必须在以下某个位置创建此过程中使用的远程模型:
asia-northeast1
asia-south1
asia-southeast1
australia-southeast1
eu
europe-west1
europe-west2
europe-west3
europe-west4
northamerica-northeast1
us
us-central1
us-east1
us-east4
us-west1
您必须在远程模型所在的区域中运行 ML.TRANSCRIBE
函数。
所需权限
如需使用 Speech-to-Text 识别器,您需要以下角色:
speech.recognizers.create
speech.recognizers.get
speech.recognizers.recognize
speech.recognizers.update
如需创建连接,您需要拥有以下角色的成员资格:
roles/bigquery.connectionAdmin
如需使用 BigQuery ML 创建模型,您需要以下权限:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
如需运行推理,您需要以下权限:
- 对象表的
bigquery.tables.getData
权限 - 模型的
bigquery.models.getData
权限 bigquery.jobs.create
- 对象表的
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.
创建识别器
Speech-to-Text 支持称为识别器的资源。识别器代表存储的和可重复使用的识别配置。您可以创建识别器,以便对应用的转写或流量进行逻辑分组。
创建语音识别器是可选操作。如果您选择创建语音识别器,请记下识别器的项目 ID、位置和识别器 ID,以便在 CREATE MODEL
语句中使用,如 SPEECH_RECOGNIZER
中所述。如果您选择不创建语音识别器,则必须为 ML.TRANSCRIBE
函数的 recognition_config
参数指定值。
您只能在语音识别器或您提供的 recognition_config
值中使用 chirp
转录模型。
创建连接
创建 Cloud 资源连接并获取连接的服务账号。
从下列选项中选择一项:
控制台
转到 BigQuery 页面。
如需创建连接,请点击
添加,然后点击与外部数据源的连接。在连接类型列表中,选择 Vertex AI 远程模型、远程函数和 BigLake(Cloud 资源)。
在连接 ID 字段中,输入连接的名称。
点击创建连接。
点击转到连接。
在连接信息窗格中,复制服务账号 ID 以在后续步骤中使用。
bq
在命令行环境中,创建连接:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id
参数会替换默认项目。替换以下内容:
REGION
:您的连接区域PROJECT_ID
:您的 Google Cloud 项目 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.iam.gserviceaccount.com"}
Terraform
使用 google_bigquery_connection
资源。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在 US
区域中创建一个名为 my_cloud_resource_connection
的 Cloud 资源连接:
如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。
准备 Cloud Shell
- 启动 Cloud Shell。
-
设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。
您只需为每个项目运行一次以下命令,即可在任何目录中运行它。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。
准备目录
每个 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 显示“应用完成!”消息。
- 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。
向服务账号授予访问权限
从下列选项中选择一项:
控制台
前往 IAM 和管理页面。
点击
授予访问权限。系统随即会打开添加主账号对话框。
在新的主账号字段中,输入您之前复制的服务账号 ID。
点击选择角色字段,然后在过滤条件中输入
Cloud Speech Client
。点击添加其他角色。
在选择角色字段中,选择 Cloud Storage,然后选择 Storage Object Viewer。
点击保存。
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
替换以下内容:
PROJECT_NUMBER
:您的项目编号。MEMBER
:您之前复制的服务账号 ID。
未能授予权限会导致 Permission denied
错误。
创建数据集
创建数据集以包含模型和对象表。
创建对象表
针对 Cloud Storage 中的一组音频文件创建对象表。对象表中的音频文件必须是受支持的类型。
对象表使用的 Cloud Storage 存储桶应位于您计划创建模型并调用 ML.TRANSCRIBE
函数所在的项目中。如果您要在不同于对象表使用的 Cloud Storage 存储桶所在的项目中调用 ML.TRANSCRIBE
函数,您必须在存储桶级层将 Storage Admin 角色授予 service-A@gcp-sa-aiplatform.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 `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' );
替换以下内容:
PROJECT_ID
:您的项目 ID。DATASET_ID
:包含模型的数据集的 ID。MODEL_NAME
:模型的名称。REGION
:连接使用的区域。CONNECTION_ID
:连接 ID,例如myconnection
。当您在 Google Cloud 控制台中查看连接详情时,连接 ID 是连接 ID 中显示的完全限定连接 ID 的最后一部分中的值,例如
projects/myproject/locations/connection_location/connections/myconnection
。PROJECT_NUMBER
:包含语音识别器的项目的编号。您可以在 Google Cloud 控制台信息中心页面上的项目信息卡片上找到此值。LOCATION
:语音识别器使用的位置。您可以在 Google Cloud 控制台列表识别器页面上的位置字段中找到此值。RECOGNIZER_ID
:语音识别器 ID。您可以在 Google Cloud 控制台列表识别器页面上的 ID 字段中找到此值。此选项不是必需的。如果您未为其指定值,系统会使用默认的识别器。在这种情况下,您必须为
ML.TRANSCRIBE
函数的recognition_config
参数指定值,以便为默认识别器提供配置。您只能在您提供的
recognition_config
值中使用chirp
转录模型。
转写音频文件
使用 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') );
替换以下内容:
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
转录模型。
示例
示例 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": {}}') );
后续步骤
- 如需了解 BigQuery ML 中的模型推理,请参阅模型推理概览。
- 如需了解每种模型类型支持的 SQL 语句和函数,请参阅每个模型的端到端用户体验历程。