適用於:
Databricks SQL
Databricks Runtime
此功能 ai_transcribe() 會將音訊檔案轉錄成文字。 它會將逐字稿以一組時間戳記的片段形式回傳,並利用自動語音系統為每個片段標註講者。 輸出是一個 VARIANT 值,所以你可以把它串接到其他 AI 函式中。
Important
這項功能位於 測試版 (Beta) 中。 要使用它,工作區管理員必須從預覽頁面開啟 AI 轉錄。 請參閱 管理 Azure Databricks 預覽。
數據安全性
您的文件數據會在 Databricks 安全性周邊內處理。 Databricks 不儲存傳遞給 AI 函式呼叫的參數,但會保留元資料執行細節,例如 Databricks 執行時版本。
要求
- 此功能僅在部分地區提供,詳見 AI 功能可用性。
- 如果您使用無伺服器計算,也需要下列項目:
- 無伺服器環境版本必須設定為 3 或更高版本,因為這會啟用
VARIANT. - 必須使用 Python 或 SQL。 如需其他無伺服器功能和限制,請參閱 無伺服器計算限制。
- 無伺服器環境版本必須設定為 3 或更高版本,因為這會啟用
- 此功能
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;