使用 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 函式。
必要的角色
如要建立遠端模型及轉錄音訊檔案,您需要在專案層級具備下列 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.create
- bigquery.models.create
- bigquery.models.getData
- bigquery.models.updateData
- bigquery.models.updateMetadata
 
- 建立物件資料表:
    bigquery.tables.create和bigquery.tables.update
- 建立語音辨識器:
    - speech.recognizers.create
- speech.recognizers.get
- speech.recognizers.recognize
- speech.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 專案 ID
- CONNECTION_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": {}}') );