ai_transcribe 函數

適用於:勾選為「是」Databricks SQL 勾選為「是」Databricks Runtime

此功能 ai_transcribe() 會將音訊檔案轉錄成文字。 它會將逐字稿以一組時間戳記的片段形式回傳,並利用自動語音系統為每個片段標註講者。 輸出是一個 VARIANT 值,所以你可以把它串接到其他 AI 函式中。

Important

這項功能位於 測試版 (Beta) 中。 要使用它,工作區管理員必須從預覽頁面開啟 AI 轉錄。 請參閱 管理 Azure Databricks 預覽。

數據安全性

您的文件數據會在 Databricks 安全性周邊內處理。 Databricks 不儲存傳遞給 AI 函式呼叫的參數,但會保留元資料執行細節,例如 Databricks 執行時版本。

要求

  • 此功能僅在部分地區提供,詳見 AI 功能可用性。
  • 如果您使用無伺服器計算,也需要下列項目:
    • 無伺服器環境版本必須設定為 3 或更高版本,因為這會啟用 VARIANT.
    • 必須使用 Python 或 SQL。 如需其他無伺服器功能和限制,請參閱 無伺服器計算限制。
  • 此功能 ai_transcribe 可透過 Databricks 筆記本、SQL 編輯器、Databricks 工作流程、工作或 Lakeflow 管線使用。
  • 在 ai_transcribe 裡,成本被記錄為 AI_FUNCTIONS 產品的一部分。

支援的輸入檔案格式

對於輸入資料,可以使用參考音訊檔案的 FILE 類型 表達式,或 BINARY 包含音訊檔案位元組的表達式。 若原始檔案存放於 Unity 目錄卷中,請如範例所示,使用 Spark binaryFile 格式讀取器產生二進位欄位。

ai_transcribe 僅轉錄音訊。 不支援影片檔案。 在測試期間,支援以下音訊格式:

  • MP3 音訊格式
  • WAV(波形音訊檔案格式)
  • FLAC(自由無失真音訊編解碼器)
  • Opus
  • M4A

支援語言

測試期間支援 ai_transcribe 英語與西班牙語音訊。 其他語言的音訊可能會回傳不準確的逐字稿。

語法

ai_transcribe(content)

Arguments

content 是唯一必要的論點。

  • content: 一個參考音訊檔案的 FILE 類型表達式,或BINARY是包含音訊檔案位元組的表達式,例如由 read_files(..., format => 'binaryFile')產生的content欄位。

Returns

ai_transcribe 回傳 VARIANT 一個將逐字稿拆分為時間戳記段的數值。 每個段落也帶有 speaker_id 自動喇叭日記的標籤。 詳見講者日記。

輸出模式如下:

{
  "error_message": STRING,          // null on success; an error message string on failure
  "response": {
    "duration_seconds": DOUBLE,     // total audio duration, in seconds
    "segments": [
      {
        "start": DOUBLE,            // segment start time, in seconds
        "end": DOUBLE,              // segment end time, in seconds
        "speaker_id": STRING,       // speaker label ("1", "2", ...)
        "text": STRING              // transcript text for the segment
      }
    ]
  }
}

回應欄位如下:

  • error_message: null 當呼叫成功時,或是描述失敗的字串。
  • response.duration_seconds:音訊的總長度,以秒計。
  • response.segments:一組逐字稿片段,按時間順序排列。 要取得完整逐字稿,請依序串接各段的 text 數值。
  • segments[].start 以及 segments[].end:該段的開始與結束時間,以秒為單位。
  • segments[].speaker_id:該單元的講者標籤。 詳見講者日記。
  • segments[].text:本段文字稿。

說話者日記

ai_transcribe 自動執行喇叭解析:它能偵測音訊中不同的喇叭,並以 speaker_id. Diarization 在測試期間始終開啟,使用者無法開關,因此不需要設定。 說話者依照首次發言的順序標示 "1"為 、 "2"、 "3"、 ,且這些標籤在整段錄音中保持一致。

Limitations

測試期間適用以下限制:

  • 每通電話最多接受1小時的音訊。 較長的音訊會回傳錯誤訊息。
  • 每個通話最多可接受 512 MB 的輸入檔案。 較大的檔案會回傳錯誤。
  • ai_transcribe 僅轉錄音訊;不支援影片檔案。

範例

以下範例將一個名為 audioFILE 類型的欄位直接從資料表傳遞給 ai_transcribe。

SELECT
  audio.uri AS path,
  ai_transcribe(audio) AS transcription
FROM my_catalog.my_schema.audio_files;

Note

檔案 類型 仍處於測試版。

以下範例將 Unity 目錄卷中的所有音訊檔案逐字轉錄。 它會將檔案讀取為二進位資料, read_files(..., format => 'binaryFile') 並將欄位傳送 content 給 ai_transcribe。

SELECT
  path,
  ai_transcribe(content) AS transcription
FROM READ_FILES('/Volumes/catalog/schema/volume/audio/', format => 'binaryFile');

下一個範例將逐字稿擴展為每個段落一列,講者標籤、時間戳和文字分別列為獨立欄位。 它使用 variant_explode 表值函式 來解巢 segments 陣列。

WITH transcribed AS (
  SELECT
    path,
    ai_transcribe(content) AS result
  FROM READ_FILES('/Volumes/catalog/schema/volume/audio/', format => 'binaryFile')
)
SELECT
  transcribed.path,
  segment.value:start::DOUBLE AS start_seconds,
  segment.value:end::DOUBLE AS end_seconds,
  segment.value:speaker_id::STRING AS speaker_id,
  segment.value:text::STRING AS text
FROM
  transcribed,
  LATERAL variant_explode(transcribed.result:response.segments) AS segment;