使用 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.getIamPolicyresourcemanager.projects.setIamPolicy
  • 建立模型並執行推論:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • 建立物件資料表: bigquery.tables.createbigquery.tables.update
  • 建立語音辨識器:
    • speech.recognizers.create
    • speech.recognizers.get
    • speech.recognizers.recognize
    • speech.recognizers.update

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

事前準備

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.

    Enable the APIs

  8. 建立辨識器

    語音轉文字服務支援名為辨識器的資源。辨識器代表儲存且可重複使用的辨識設定。您可以建立辨識器,將應用程式的轉錄內容或流量依邏輯分組。

    建立語音辨識工具是選用步驟。如果您選擇建立語音辨識器,請記下辨識器的專案 ID、位置和辨識器 ID,以便在 CREATE MODEL 陳述式中使用,如SPEECH_RECOGNIZER所述。如果選擇不建立語音辨識器,則必須為 ML.TRANSCRIBE 函式的 recognition_config 引數指定值。

    您只能在提供的語音辨識器或 recognition_config 值中使用 chirp 轉錄模型

    建立資料集

    建立 BigQuery 資料集來存放資源:

    控制台

    1. 前往 Google Cloud 控制台的「BigQuery」頁面。

      前往 BigQuery 頁面

    2. 在「Explorer」窗格中,按一下專案名稱。

    3. 依序點按 「View actions」(查看動作) >「Create dataset」(建立資料集)

    4. 在「建立資料集」頁面中,執行下列操作:

      • 在「Dataset ID」(資料集 ID) 部分,輸入資料集的名稱。

      • 在「位置類型」部分,選取資料集的位置。

      • 點選「建立資料集」

    bq

    1. 如要建立新的資料集,請使用 bq mk 指令搭配 --location 旗標:

      bq --location=LOCATION mk -d DATASET_ID

      更改下列內容:

      • LOCATION:資料集的位置
      • DATASET_ID 是您要建立的資料集 ID。
    2. 確認資料集已建立完成:

      bq ls

    建立連線

    如果已設定預設連線,或您具備 BigQuery 管理員角色,則可略過這個步驟。

    建立供遠端模型使用的Cloud 資源連線,並取得連線的服務帳戶。在與上一步建立的資料集相同的位置中建立連線。

    選取下列選項之一:

    主控台

    1. 前往「BigQuery」頁面

      前往 BigQuery

    2. 在「Explorer」窗格中,按一下 「新增資料」

      「新增資料」UI 元素。

      「新增資料」對話方塊隨即開啟。

    3. 在「依條件篩選」窗格的「資料來源類型」部分,選取「商務應用程式」

      或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入 Vertex AI

    4. 在「精選資料來源」部分,按一下「Vertex AI」

    5. 按一下「Vertex AI Models: BigQuery Federation」解決方案資訊卡。

    6. 在「連線類型」清單中,選取「Vertex AI 遠端模型、遠端函式和 BigLake (Cloud 資源)」

    7. 在「連線 ID」欄位中,輸入連線名稱。

    8. 點選「建立連線」

    9. 按一下「前往連線」

    10. 在「連線資訊」窗格中,複製服務帳戶 ID,以供後續步驟使用。

    bq

    1. 在指令列環境中建立連線:

      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...
      
    2. 擷取並複製服務帳戶 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 資源連線:

    
    # This queries the provider for project information.
    data "google_project" "default" {}
    
    # This creates a cloud resource connection in the US region named my_cloud_resource_connection.
    # Note: The cloud resource nested object has only one output field - serviceAccountId.
    resource "google_bigquery_connection" "default" {
      connection_id = "my_cloud_resource_connection"
      project       = data.google_project.default.project_id
      location      = "US"
      cloud_resource {}
    }

    如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。

    準備 Cloud Shell

    1. 啟動 Cloud Shell
    2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

      每項專案只需要執行一次這個指令,且可以在任何目錄中執行。

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。

    準備目錄

    每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

    1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是 .tf,例如 main.tf。在本教學課程中,這個檔案稱為 main.tf
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. 如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。

      將範例程式碼複製到新建立的 main.tf

      視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您使用這個方法。

    3. 查看並修改範例參數,套用至您的環境。
    4. 儲存變更。
    5. 初始化 Terraform。每個目錄只需執行一次這項操作。
      terraform init

      如要使用最新版 Google 供應商,請加入 -upgrade 選項:

      terraform init -upgrade

    套用變更

    1. 檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
      terraform plan

      視需要修正設定。

    2. 執行下列指令,並在提示中輸入 yes,即可套用 Terraform 設定:
      terraform apply

      等待 Terraform 顯示「Apply complete!」訊息。

    3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

    將存取權授予服務帳戶

    選取下列選項之一:

    主控台

    1. 前往「IAM & Admin」(IAM 與管理) 頁面。

      前往「IAM & Admin」(IAM 與管理)

    2. 按一下 「授予存取權」

      「新增主體」對話方塊隨即開啟。

    3. 在「新增主體」欄位,輸入先前複製的服務帳戶 ID。

    4. 按一下「Select a role」(選取角色) 欄位,然後在「Filter」(篩選器) 中輸入 Cloud Speech Client

    5. 按一下 [Add another role] (新增其他角色)

    6. 在「Select a role」(請選擇角色) 欄位中,依序選取「Cloud Storage」和「Storage Object Viewer」(Storage 物件檢視者)

    7. 按一下 [儲存]

    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 函式的專案位於相同位置。如要呼叫的 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'
    );

    取代下列項目:

    • 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 轉錄模型

    轉錄音訊檔案

    使用 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": {}}')
    );

    後續步驟