使用 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 編輯器 (
roles/speech.editor) - 建立及使用 BigQuery 資料集、資料表和模型:
BigQuery 資料編輯者 (
roles/bigquery.dataEditor) 建立、委派及使用 BigQuery 連線: BigQuery 連線管理員 (
roles/bigquery.connectionsAdmin)如果沒有設定預設連線,您可以在執行
CREATE MODEL陳述式時建立並設定連線。如要這麼做,您必須具備專案的 BigQuery 管理員角色 (roles/bigquery.admin)。詳情請參閱「設定預設連線」。將權限授予連線的服務帳戶:專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin)建立 BigQuery 工作:BigQuery 工作使用者 (
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
事前準備
- 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.
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 Google Cloud 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. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud 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. 前往 Google Cloud 控制台的「BigQuery」頁面。
在左側窗格中,按一下「Explorer」:

如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。
在「Explorer」窗格中,按一下專案名稱。
依序點按 「View actions」(查看動作) >「Create dataset」(建立資料集)。
在「建立資料集」頁面中,執行下列操作:
在「Dataset ID」(資料集 ID) 部分,輸入資料集的名稱。
在「位置類型」部分,選取「區域」或「多區域」。
- 如果選取「區域」,請從「區域」清單中選取位置。
- 如果選取「多區域」,請從「多區域」清單中選取「美國」或「歐洲」。
點選「建立資料集」。
前往「BigQuery」頁面
在「Explorer」窗格中,按一下 「新增資料」:
「新增資料」對話方塊隨即開啟。
在「Filter By」(篩選依據) 窗格的「Data Source Type」(資料來源類型) 區段中,選取「Business Applications」(商務應用程式)。
或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入
Vertex AI。在「精選資料來源」部分,點選「Vertex AI」。
按一下「Vertex AI Models: BigQuery Federation」解決方案資訊卡。
在「連線類型」清單中,選取「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:您的 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"}- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
每項專案只需要執行一次這個指令,且可以在任何目錄中執行。
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 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
前往「IAM & Admin」(IAM 與管理) 頁面。
按一下「授予存取權」。
「新增主體」對話方塊隨即開啟。
在「新增主體」欄位,輸入先前複製的服務帳戶 ID。
按一下「Select a role」(選取角色) 欄位,然後在「Filter」(篩選器) 中輸入
Cloud Speech Client。按一下 [Add another role] (新增其他角色)。
在「Select a role」(請選擇角色) 欄位中,依序選取「Cloud Storage」和「Storage Object Viewer」(Storage 物件檢視者)。
按一下 [儲存]。
PROJECT_NUMBER:您的專案編號。MEMBER:您先前複製的服務帳戶 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 控制台的「List recognizers」(列出辨識器) 頁面,找到「Location」(位置) 欄位中的這個值。RECOGNIZER_ID:語音辨識器 ID。 您可以在 Google Cloud 控制台的「List recognizers」(列出辨識器) 頁面,找到「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 模型的端對端使用者歷程。
建立辨識器
語音轉文字服務支援名為辨識器的資源。辨識器代表儲存的可重複使用辨識設定。您可以建立辨識器,將應用程式的轉錄內容或流量依邏輯分組。
建立語音辨識工具是選用步驟。如果您選擇建立語音辨識器,請記下辨識器的專案 ID、位置和辨識器 ID,以便在 CREATE MODEL 陳述式中使用,如SPEECH_RECOGNIZER所述。如果選擇不建立語音辨識器,則必須為 ML.TRANSCRIBE 函式的 recognition_config 引數指定值。
您只能在提供的語音辨識器或 recognition_config 值中使用 chirp
轉錄模型。
建立資料集
建立 BigQuery 資料集來存放資源:
控制台
bq
建立連線
如果您已設定預設連線,或具備 BigQuery 管理員角色,可以略過這個步驟。
建立供遠端模型使用的 Cloud 資源連線,並取得連線的服務帳戶。在與上一步建立的資料集相同的位置中建立連線。
選取下列選項之一:
主控台
bq
Terraform
使用 google_bigquery_connection 資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
下列範例會在 US 地區中建立名為 my_cloud_resource_connection 的 Cloud 資源連線:
如要在 Google Cloud 專案中套用 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 函式的專案相同。如要呼叫的 ML.TRANSCRIBE 函式與物件表格使用的 Cloud Storage 值區位於不同專案,您必須在值區層級授予 service-A@gcp-sa-aiplatform.iam.gserviceaccount.com 服務帳戶「Storage 管理員」角色。
建立模型
使用 REMOTE_SERVICE_TYPE 建立遠端模型:CLOUD_AI_SPEECH_TO_TEXT_V2
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": {}}') );