適用対象:
Databricks SQL
Databricks Runtime
ai_transcribe()機能では音声ファイルをテキストに書き起こします。 トランスクリプトをタイムスタンプ付きのセグメントのセットとして返し、自動スピーカーダイアリゼーションを使って各セグメントにスピーカーをラベル付けします。 出力は VARIANT の値なので、他のAI関数に連携できます。
Important
この機能は ベータ版です。 使用するには、ワークスペース管理者がプレビューページからAIトランスクリプトを有効にする必要があります。 Manage 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 英語とスペイン語の音声に対応しています。 他の言語の音声では、不正確な書き起こしが返ってくることがあります。
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[].startsegments[].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;