ai_transcribe-Funktion

Gilt für:mit Häkchen markiert: Ja Databricks SQL mit Häkchen markiert: Ja Databricks Runtime

Die ai_transcribe() Funktion transkribiert eine Audiodatei in Text. Es gibt das Transkript als Satz von zeitgestempelten Segmenten zurück und beschriftet jedes Segment mit einem Lautsprecher mittels automatischer Speaker-Diarisierung. Die Ausgabe ist ein VARIANT Wert, sodass du sie an andere KI-Funktionen verketten kannst.

Important

Dieses Feature befindet sich in der Betaversion. Um sie zu nutzen, muss ein Workspace-Administrator KI-Transkribieren auf der Vorschauseite aktivieren. Siehe Manage Azure Databricks Previews.

Datensicherheit

Ihre Dokumentdaten werden innerhalb des Databricks-Sicherheitsperimeters verarbeitet. Databricks speichert die Parameter, die in die KI-Funktionsaufrufe eingegeben werden, nicht, behält aber Metadaten-Laufdetails, wie zum Beispiel die verwendete Databricks-Runtime-Version.

Anforderungen

  • Diese Funktion ist nur in einigen Regionen verfügbar, siehe Verfügbarkeit der KI-Funktion.
  • Wenn Sie serverlose Berechnung verwenden, ist auch Folgendes erforderlich:
    • Die serverlose Umgebungsversionsnummer muss auf 3 oder höher festgelegt werden, da dies Funktionen wie VARIANT ermöglicht.
    • Muss Python oder SQL verwenden. Weitere serverlose Features und Einschränkungen finden Sie unter Serverless Compute-Einschränkungen.
  • Die ai_transcribe Funktion ist mit Databricks-Notizbüchern, SQL-Editor, Databricks-Workflows, Aufträgen oder Lakeflow-Pipelines verfügbar.
  • ai_transcribe Die Kosten werden als Teil des AI_FUNCTIONS Produkts erfasst.

Unterstützte Eingabedateiformate

Für Eingabedaten verwenden Sie entweder einen FILE-Ausdruck , der auf eine Audiodatei verweist, oder einen BINARY Ausdruck, der die Bytes der Audiodatei enthält. Wenn die Quelldateien in einem Unity-Katalog-Volume gespeichert sind, generiere die Binärspalte mit dem Spark-Formatleser binaryFile , wie in den Beispielen gezeigt.

ai_transcribe transkribiert nur Audio. Videodateien werden nicht unterstützt. Während der Beta werden folgende Audioformate unterstützt:

  • MP3
  • WAV
  • FLAC
  • Opus
  • M4A

Unterstützte Sprachen

Während der Beta unterstützt es ai_transcribe englische und spanische Audio. Audio in anderen Sprachen kann ungenaue Transkripte liefern.

Syntax

ai_transcribe(content)

Arguments

content ist das einzige erforderliche Argument.

  • content: Ein FILE-Ausdruck , der auf eine Audiodatei verweist, oder einen BINARY Ausdruck, der die Bytes der Audiodatei enthält, wie zum Beispiel die content von erzeugte Spalte read_files(..., format => 'binaryFile').

Rückkehr

ai_transcribe gibt einen VARIANT Wert zurück, wobei das Transkript in zeitgestempelte Abschnitte aufgeteilt ist. Jedes Segment trägt außerdem ein speaker_id Etikett aus der automatischen Lautsprecher-Diarisierung. Siehe Speaker-Diarisierung.

Die Ausgabe hat folgendes Schema:

{
  "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
      }
    ]
  }
}

Die Antwortfelder sind wie folgt:

  • error_message: null wenn der Aufruf erfolgreich ist, oder eine Zeichenkette, die das Scheitern beschreibt.
  • response.duration_seconds: Die Gesamtdauer des Audios, in Sekunden.
  • response.segments: Ein Array von Transkriptsegmenten, in Zeitreihenfolge. Um das vollständige Transkript zu erhalten, fügen Sie die Werte der Segmente text in der richtigen Reihenfolge an.
  • segments[].start und segments[].end: Die Start- und Endzeit des Segments in Sekunden.
  • segments[].speaker_id: Das Lautsprecherlabel für den Beitrag. Siehe Speaker-Diarisierung.
  • segments[].text: Der Text des Transkripts des Segments.

Lautsprecherdiarisierung

ai_transcribe führt automatisch die Lautsprecherdiarisierung durch: Es erkennt unterschiedliche Lautsprecher im Audio und kennzeichnet jedes Segment mit einem speaker_id. Die Diarisierung ist während der Beta immer aktiviert und kann von den Nutzern nicht ein- oder ausgeschaltet werden, daher ist keine Konfiguration erforderlich. Die Lautsprecher sind mit , "2", "3", und so weiter in der Reihenfolge beschriftet"1", in der sie zuerst sprechen, und die Bezeichnungen sind über die gesamte Aufnahme hinweg einheitlich.

Limitations

Die folgenden Einschränkungen gelten während der Betaversion:

  • Jeder Anruf akzeptiert höchstens eine Stunde Audio. Längere Audiosignale liefern einen Fehler.
  • Jeder Anruf akzeptiert eine Eingabedatei von höchstens 512 MB. Eine größere Datei liefert einen Fehler zurück.
  • ai_transcribe transkribiert nur Audio; Videodateien werden nicht unterstützt.

Beispiele

Das folgende Beispiel übergibt eine FILE-Typ-Spalte , die aus einer Tabelle benannt audio ist, direkt an ai_transcribe.

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

Note

Der DATEI-Typ befindet sich in der Beta.

Das folgende Beispiel transkribiert jede Audiodatei in einem Unity-Catalog-Volume. Sie liest die Dateien als Binärdaten mit und read_files(..., format => 'binaryFile') übergibt die Spalte content an ai_transcribe.

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

Das nächste Beispiel erweitert das Transkript auf eine Zeile pro Segment, wobei das Sprecherlabel, Zeitstempel und Text als separate Spalten fungieren. Es verwendet variant_explode die tabellenwertige Funktion, um das segments Array zu entschachteln.

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;