Funzione ai_transcribe

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

La ai_transcribe() funzione trascrive un file audio in testo. Restituisce la trascrizione come un insieme di segmenti con timestamp e etichetta ogni segmento con un altoparlante utilizzando la diarizzazione automatica dell'altoparlante. L'output è un VARIANT valore, quindi puoi concatenarlo ad altre funzioni IA.

Importante

Questa funzionalità è in versione beta. Per utilizzarlo, un amministratore dello spazio di lavoro deve attivare la Trascrizione AI dalla pagina delle anteprime . Vedere Gestire le anteprime di Azure Databricks.

Sicurezza dei dati

I dati del documento vengono elaborati all'interno del perimetro di sicurezza di Databricks. Databricks non memorizza i parametri che vengono passati nelle chiamate di funzione AI, ma conserva i dettagli di esecuzione dei metadati, come la versione Databricks Runtime utilizzata.

Requisiti

  • Questa funzione è disponibile solo in alcune aree, vedere Disponibilità delle funzioni di intelligenza artificiale.
  • Se si usa l'ambiente di calcolo serverless, è necessario anche quanto segue:
    • La versione dell'ambiente serverless deve essere impostata su 3 o versione successiva, perché abilita funzionalità come VARIANT.
    • Deve usare Python o SQL. Per altre funzionalità e limitazioni serverless, vedere Limitazioni di calcolo serverless.
  • La ai_transcribe funzione è disponibile usando notebook di Databricks, editor SQL, flussi di lavoro di Databricks, processi o pipeline Lakeflow.
  • ai_transcribe i costi vengono registrati come parte del AI_FUNCTIONS prodotto.

Formati di file di input supportati

Per i dati di input, utilizzare o un'espressione di tipo FILE che faccia riferimento a un file audio o un'espressione BINARY che contiene i byte del file audio. Se i file sorgente sono memorizzati in un volume del Catalogo Unity, genera la colonna binaria usando il lettore di formato Spark binaryFile , come mostrato negli esempi.

ai_transcribe Trascrive solo audio. I file video non sono supportati. Durante la Beta, sono supportati i seguenti formati audio:

  • MP3
  • WAV
  • FLAC
  • Opus
  • M4A

Linguaggi supportati

Durante la Beta, ai_transcribe supporta audio in inglese e spagnolo. L'audio in altre lingue potrebbe restituire trascrizioni inaccurate.

Syntax

ai_transcribe(content)

Arguments

content è l'unico argomento obbligatorio.

  • content: Un'espressione di tipo FILE che fa riferimento a un file audio, o un'espressione BINARY che contiene i byte del file audio, come la content colonna prodotta da read_files(..., format => 'binaryFile').

Returns

ai_transcribe restituisce un VARIANT valore con la trascrizione suddivisa in segmenti timestampati. Ogni segmento porta anche un'etichetta speaker_id di diarizzazione automatica degli altoparlanti. Vedi Diarizzazione del Parlante.

L'output segue il seguente 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
      }
    ]
  }
}

I campi di risposta sono i seguenti:

  • error_message: null quando la chiamata ha successo, o una stringa che descrive il guasto.
  • response.duration_seconds: La durata totale dell'audio, in secondi.
  • response.segments: Una serie di segmenti di trascrizione, in ordine temporale. Per ottenere la trascrizione completa, concatena i valori dei text segmenti in ordine.
  • segments[].start e segments[].end: L'ora di inizio e fine del segmento, in pochi secondi.
  • segments[].speaker_id: L'etichetta degli altoparlanti per il segmento. Vedi Diarizzazione del Parlante.
  • segments[].text: Il testo trascrittivo del segmento.

Diarizzazione del parlante

ai_transcribe Esegue automaticamente la diarizzazione degli altoparlanti: rileva altoparlanti distinti nell'audio e etichetta ogni segmento con un speaker_id. La dializzazione è sempre attiva durante la Beta e non può essere attivata o disattivata dagli utenti, quindi non è necessaria alcuna configurazione. Gli altoparlanti sono etichettati "1", "2", "3", e così via nell'ordine in cui parlano per la prima volta, e le etichette sono coerenti per tutta la registrazione.

Limitations

Durante la versione beta si applicano le limitazioni seguenti:

  • Ogni chiamata accetta al massimo 1 ora di audio. L'audio più lungo restituisce un errore.
  • Ogni chiamata accetta un file di input di al massimo 512 MB. Un file più grande restituisce un errore.
  • ai_transcribe trascrive solo audio; i file video non sono supportati.

Esempi

Il seguente esempio passa una colonna di tipo FILE chiamata audio direttamente da una tabella a ai_transcribe.

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

Note

Il tipo di file è in Beta.

Il seguente esempio trascrive ogni file audio in un volume del Catalogo Unity. Legge i file come dati binari con read_files(..., format => 'binaryFile') e passa la content colonna a ai_transcribe.

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

L'esempio successivo espande la trascrizione in una riga per segmento, con l'etichetta del relatore, i timestamp e il testo come colonne separate. Utilizza variant_explode la funzione a valori di tabella per rimuovere il nest dell'array 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;