ai_transcribe 関数

適用対象:チェック済み: はい Databricks SQLチェック済み: はい Databricks Runtime

ai_transcribe()機能では音声ファイルをテキストに書き起こします。 トランスクリプトをタイムスタンプ付きのセグメントのセットとして返し、自動スピーカーダイアリゼーションを使って各セグメントにスピーカーをラベル付けします。 出力は VARIANT の値なので、他のAI関数に連携できます。

Important

この機能は ベータ版です。 使用するには、ワークスペース管理者がプレビューページからAIトランスクリプトを有効にする必要があります。 Manage 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 英語とスペイン語の音声に対応しています。 他の言語の音声では、不正確な書き起こしが返ってくることがあります。

Syntax

ai_transcribe(content)

論争

content は唯一必要な引数です。

  • content: オーディオファイルを参照するFILE型の式、またはread_files(..., format => 'binaryFile')が生成するcontent列のようにオーディオファイルのバイトを保持するBINARY式です。

返品

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を付けます。 ダイアリゼーションはベータ期間中は常にオンで、ユーザーがオン・オフできないため設定は不要です。 スピーカーは最初に話す順に「 "1"」「 "2"」「 "3"」などとラベル付けされており、そのラベルは録音全体にわたって一貫しています。

制限事項

ベータ期間中は、次の制限が適用されます。

  • 各通話は最大1時間の音声を受け付けます。 長い音声はエラーを返します。
  • 各呼び出しは最大512MBの入力ファイルを受け入れます。 大きなファイルはエラーを返します。
  • ai_transcribe 音声のみ文字起こし;ビデオファイルはサポートされていません。

例

以下の例は、テーブルから直接 ai_transcribe へ audioという名前の FILE タイプの列を渡します。

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

Note

ファイル形式はベータ版です。

以下の例は、Unity Catalogボリューム内のすべての音声ファイルを文字起こししたものです。 ファイルをバイナリデータとして読み込み、 read_files(..., format => 'binaryFile') を付けて content 列を ai_transcribeに渡します。

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

次の例では、トランスクリプトをセグメントごとに1行に拡張し、スピーカーラベル、タイムスタンプ、テキストを別々の列として配置しています。 テーブル値関数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;