ai_transcribe Función

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

La ai_transcribe() función transcribe un archivo de audio a texto. Devuelve la transcripción como un conjunto de segmentos con marca de tiempo y etiqueta cada segmento con un altavoz usando la diarización automática del altavoz. La salida es un VARIANT valor, así que puedes encadenarlo con otras funciones de IA.

Importante

Esta característica se encuentra en su versión beta. Para usarlo, un administrador de espacio debe activar AI Transcribe desde la página de Previsualizaciones . Consulte Administrar versiones preliminares de Azure Databricks.

Seguridad de datos

Los datos del documento se procesan dentro del perímetro de seguridad de Databricks. Databricks no almacena los parámetros que se pasan a las llamadas a funciones de IA, pero sí conserva los detalles de la ejecución de metadatos, como la versión de ejecución de Databricks utilizada.

Requisitos

  • Esta función solo está disponible en algunas regiones, consulte Disponibilidad de funciones de IA.
  • Si usa un proceso sin servidor, también se requiere lo siguiente:
    • La versión del entorno sin servidor debe establecerse en 3 o superior, ya que esto habilita características como VARIANT.
    • Debe usar Python o SQL. Para obtener más características y limitaciones sin servidor, consulte Limitaciones de proceso sin servidor.
  • La ai_transcribe función está disponible mediante cuadernos de Databricks, editor de SQL, flujos de trabajo, trabajos o canalizaciones de Lakeflow de Databricks.
  • ai_transcribe los costos se registran como parte del AI_FUNCTIONS producto.

Formatos de archivo de entrada admitidos

Para los datos de entrada, utiliza una expresión tipo FILE que haga referencia a un archivo de audio o una BINARY expresión que contenga los bytes del archivo de audio. Si los archivos fuente se almacenan en un volumen del Catálogo de Unity, genera la columna binaria usando el lector de formato Spark binaryFile , como se muestra en los ejemplos.

ai_transcribe transcribe solo audio. No se admiten archivos de vídeo. Durante la Beta, se soportan los siguientes formatos de audio:

  • MP3
  • WAV
  • FLAC
  • Opus
  • M4A

Lenguajes soportados

Durante la Beta, ai_transcribe soporta audio en inglés y español. El audio en otros idiomas puede devolver transcripciones inexactas.

Syntax

ai_transcribe(content)

Arguments

content es el único argumento necesario.

  • content: Una expresión tipo FILE que hace referencia a un archivo de audio, o una BINARY expresión que contiene los bytes del archivo de audio, como la content columna producida por read_files(..., format => 'binaryFile').

Devoluciones

ai_transcribe devuelve un VARIANT valor con la transcripción dividida en segmentos con marca temporal. Cada segmento también lleva una speaker_id etiqueta de la diarización automática por altavoces. Véase Diarización del Altavoz.

La salida tiene el siguiente esquema:

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

Los campos de respuesta son los siguientes:

  • error_message: null cuando la llamada tiene éxito, o una cadena que describe el fallo.
  • response.duration_seconds: La duración total del audio, en segundos.
  • response.segments: Una serie de segmentos de transcripción, en orden temporal. Para obtener la transcripción completa, concatena los valores de los text segmentos en orden.
  • segments[].start y segments[].end: La hora de inicio y fin del segmento, en segundos.
  • segments[].speaker_id: La etiqueta de altavoz del segmento. Véase Diarización del Altavoz.
  • segments[].text: El texto de transcripción del segmento.

Diarización por altavoz

ai_transcribe Ejecuta automáticamente la diaarización de altavoces: detecta altavoces distintos en el audio y etiqueta cada segmento con un speaker_id. La diarización está siempre activada durante la Beta y no puede ser activada ni desactivada por los usuarios, por lo que no se requiere configuración. Los altavoces se etiquetan "1", "2", "3", y así sucesivamente en el orden en que se pronuncian por primera vez, y las etiquetas son consistentes a lo largo de toda la grabación.

Limitaciones

Se aplican las siguientes limitaciones durante la versión beta:

  • Cada llamada acepta como máximo 1 hora de audio. El audio más largo devuelve un error.
  • Cada llamada acepta un archivo de entrada de como máximo 512 MB. Un archivo más grande devuelve un error.
  • ai_transcribe solo transcribe audio; no se admiten archivos de vídeo.

Ejemplos

El siguiente ejemplo pasa una columna de tipo ARCHIVO llamada audio directamente de una tabla a ai_transcribe.

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

Note

El tipo de archivo está en Beta.

El siguiente ejemplo transcribe todos los archivos de audio en un volumen del Catálogo de Unity. Lee los archivos como datos binarios con read_files(..., format => 'binaryFile') y pasa la content columna a ai_transcribe.

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

El siguiente ejemplo amplía la transcripción a una fila por segmento, con la etiqueta del altavoz, las marcas de tiempo y el texto como columnas separadas. Utiliza variant_explode la función de valores de tabla para desanidar el segments array.

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;