Compartir a través de


Análisis audioVisual: extracción de contenido estructurado

Las funcionalidades de análisis bidireccionales de Azure Content Understanding le ayudan a transformar datos de audio y vídeo no estructurados en información estructurada y legible por máquina. Mediante la identificación y extracción precisa de elementos audiovisuales a la vez que se conservan sus relaciones temporales, puede crear flujos de trabajo de procesamiento multimedia eficaces para una amplia gama de aplicaciones.

El contents objeto con kind: "audioVisual" admite entradas de solo audio y vídeo, con diferentes funcionalidades disponibles en función del tipo de entrada.

Los tipos de contenido admitidos incluyen:

  • Archivos de audio: formatos de audio comunes
  • Archivos de vídeo: formatos de vídeo comunes

Para obtener detalles completos sobre los tipos de archivo admitidos, los límites de tamaño de archivo y otras restricciones, consulte Cuotas y límites de servicio.

Estructura de respuesta JSON

Content Understanding API devuelve resultados de análisis en un formato JSON estructurado. Este documento se centra en el elemento de la matriz de contenido con el tipo establecido en audioVisual. Esta es la estructura de contenedor general de la respuesta:

{
  "id": "73719670-2326-40c3-88ca-197c52deab2c",
  "status": "Succeeded",
  "result": {
    "analyzerId": "my-analyzer",
    "contents": [
      {
        "markdown": "# Video: 00:00.000 => 23:16.997\nWidth: 854\nHeight: 480\n..." 
        "fields": {
          "Summary": {
            "type": "string",
            "valueString": "..."
          }
        },
        "kind": "audioVisual",
        "startTimeMs": 0,
        "endTimeMs": 1000000,
        "transcriptPhrases": [/* ... */], 
        "width": 854, 
        "height": 480, 
        "keyFrameTimesMs": [/* ... */], 
        "cameraShotTimesMs": [/* ... */], 
      }
    ]
  }
}

elementos audiovisuales

Se pueden extraer los siguientes elementos audiovisuales:

Elemento Compatibilidad con audio Soporte técnico de vídeo Requiere detalles de devolución
Contenido de Markdown No
Colección de contenido No
Frases de transcripción
Información de tiempo No
Fotogramas clave No
Capturas de cámara
Extracción de campos No

Face también requiere enableFace: true en la configuración del analizador y el registro con acceso limitado.

Elementos de contenido de Markdown

Para obtener más información sobre el formato markdown para el contenido audiovisual, consulta AudioVisual Markdown.

Colección de contenido

La colección de contenido contiene uno o varios objetos de contenido que contienen los datos extraídos del archivo. Cuando la segmentación está habilitada (enableSegment = true), se devuelve un objeto de contenido para cada segmento que se encuentra en el contenido.

Frases de la transcripción

Un transcriptPhrases elemento contiene la transcripción de audio completa, desglosada en frases individuales con identificación del hablante y información precisa de tiempo. Este elemento está disponible para las entradas de audio y vídeo. Content Understanding admite la transcripción multilingüe y la diarización de oradores. Esta salida se incluye cuando el usuario establece "returnDetails": true en la definición del analizador. Los detalles de la compatibilidad con idiomas se pueden encontrar aquí Control de idioma de audio.

Ejemplo JSON:

{
  "transcriptPhrases": [
    {
      "speaker": "Speaker 1",
      "startTimeMs": 280,
      "endTimeMs": 3560,
      "text": "Welcome to this first session",
      "words": []
    },
    {
      "speaker": "Speaker 2",
      "startTimeMs": 4640,
      "endTimeMs": 5440,
      "text": "Thanks for having me. Excited to be here.",
      "words": []
    }
  ]
}

Información de tiempo

La información de tiempo proporciona los límites temporales generales del contenido audiovisual:

  • startTimeMs: la hora de inicio del contenido en milisegundos (normalmente 0)
  • endTimeMs: hora de finalización del contenido en milisegundos.
  • width: ancho de vídeo en píxeles (solo vídeo)
  • height: altura del vídeo en píxeles (solo vídeo)

Ejemplo JSON:

{
  "kind": "audioVisual",
  "startTimeMs": 0,
  "endTimeMs": 1396997,
  "width": 854,
  "height": 480
}

Fotogramas clave

Un keyFrameTimesMs elemento representa las marcas de tiempo de los fotogramas visuales extraídos del vídeo en momentos clave. Las marcas de tiempo se representan en milisegundos desde el principio del vídeo. Estos fotogramas se seleccionan de forma inteligente en función de señales como la detección de cortes. Estos fotogramas se usan como entrada para generar campos personalizados.

Comportamiento de muestreo de fotogramas clave:

  • Los fotogramas clave se seleccionan uniformemente de cada captura de cámara
  • Cada captura incluye al menos un fotograma clave muestreado, incluso para capturas cortas (menos de un segundo)
  • El número de fotogramas clave se mantiene constante a lo largo de múltiples ejecuciones.
  • Los valores de marca de tiempo pueden tener pequeñas diferencias numéricas entre ejecuciones, pero estas diferencias son mínimas y no deben afectar significativamente al contenido de los marcos seleccionados.

Ejemplo JSON:

{
  "keyFrameTimesMs": [
    660,
    1320,
    2970,
    3927,
    4884,
    5841,
    6798,
    7755,
    8712,
    9669
  ]
}

Capturas de cámara

Un cameraShotTimesMs elemento identifica los puntos del vídeo en el que cambian las tomas de cámara, lo que indica cortes, transiciones o cambios significativos en el ángulo o la perspectiva de la cámara. Esto ayuda a comprender la estructura de edición del vídeo. Los valores son marcas de tiempo en milisegundos desde el principio del vídeo. Esta salida se incluye cuando el usuario establece "returnDetails": true en la definición del analizador.

Comportamiento de detección de capturas de cámara:

  • cameraShotTimesMs almacena las marcas de tiempo de los cortes entre capturas de la cámara
  • Los valores de matriz indican la hora de inicio de todas las tomas de cámara, excepto la primera captura (que siempre comienza en 0 ms).
  • La salida es determinista y coherente en varias ejecuciones.
  • Este modelo puede perder las transiciones que son visualmente graduales

Ejemplo JSON:

{
  "cameraShotTimesMs": [
    2002,
    22356,
    26960,
    53353,
    71071,
    76210,
    78111,
    113487,
    148882,
    152953
  ]
}

Elementos personalizados

Extracción de campos

La extracción de campos personalizados permite definir y extraer información específica del contenido audiovisual en función de sus requisitos empresariales. Los campos se definen en la configuración del analizador. Los campos se pueden rellenar para todo el contenido de forma predeterminada o para cada segmento, para el vídeo cuando la segmentación está habilitada.

Ejemplo json de extracción de campos:

{
  "fields": {
    "Summary": {
      "type": "string",
      "valueString": "The conversation revolves around an introduction to Microsoft Foundry's latest features."
    },
    "Sentiment": {
      "type": "string",
      "valueString": "Positive"
    }
  }
}

Ejemplo completo de JSON

En el ejemplo siguiente se muestra la estructura de respuesta JSON completa desde el análisis de un vídeo informativo de Xbox. El json incluido aquí representa la salida completa de Content Understanding al procesar un vídeo con varios tipos de elementos:

{
  "id": "cca7cf12-7b2c-46db-9d9a-d7c2dc78c120",
  "status": "Succeeded",
  "result": {
    "analyzerId": "auto-labeling-model-1750376726735-970",
    "apiVersion": "2025-05-01-preview",
    "createdAt": "2025-06-19T23:45:31Z",
    "stringEncoding": "utf8",
    "warnings": [],
    "contents": [
      {
        "markdown": "# Video: 00:00.000 => 00:42.520\nWidth: 640\nHeight: 360\n\nTranscript\n```\nWEBVTT\n\n00:02.480 --> 00:04.720\n<Speaker 1>Need help redeeming a code on your Xbox?\n\n00:05.440 --> 00:06.840\n<Speaker 1>Follow these quick steps.\n\n00:08.960 --> 00:15.680\n<Speaker 1>Press the Xbox button on your controller to open the guide while signed into the console with the account you want to apply the code to.\n```\n\nKey Frames\n- 00:00.400 ![](keyFrame.400.jpg)\n- 00:01.800 ![](keyFrame.1800.jpg)\n- 00:02.840 ![](keyFrame.2840.jpg)\n- 00:08.040 ![](keyFrame.8040.jpg)\n- 00:16.360 ![](keyFrame.16360.jpg)",
        "fields": {
          "ProductOrFeature": {
            "type": "string",
            "valueString": "Xbox code redemption"
          },
          "Problem": {
            "type": "string",
            "valueString": "How to redeem a code on Xbox"
          },
          "Steps": {
            "type": "array",
            "valueArray": [
              {
                "type": "object",
                "valueObject": {
                  "StepTitle": {
                    "type": "string",
                    "valueString": "Open the Guide"
                  },
                  "Instructions": {
                    "type": "string",
                    "valueString": "Press the Xbox button on your controller to open the guide while signed into the console with the account you want to apply the code to."
                  },
                  "Timestamp": {
                    "type": "string",
                    "valueString": "00:00:08.960"
                  }
                }
              },
              {
                "type": "object",
                "valueObject": {
                  "StepTitle": {
                    "type": "string",
                    "valueString": "Enter Code"
                  },
                  "Instructions": {
                    "type": "string",
                    "valueString": "Enter the 25-character code without the hyphens, then follow steps to finish redeeming."
                  },
                  "Timestamp": {
                    "type": "string",
                    "valueString": "00:00:26.960"
                  }
                }
              }
            ]
          },
          "FinalOutcome": {
            "type": "string",
            "valueString": "Successfully redeem a code on Xbox and access the associated content or service."
          }
        },
        "kind": "audioVisual",
        "startTimeMs": 0,
        "endTimeMs": 42520,
        "width": 640,
        "height": 360,
        "keyFrameTimesMs": [
          400,
          1800,
          2840,
          3880,
          4920,
          5960,
          7000,
          8040,
          9080,
          10120,
          16360,
          17400,
          26760,
          27800,
          30920,
          31960,
          40280,
          41040,
          41800
        ],
        "transcriptPhrases": [
          {
            "speaker": "Speaker 1",
            "startTimeMs": 2480,
            "endTimeMs": 4720,
            "text": "Need help redeeming a code on your Xbox?",
            "words": []
          },
          {
            "speaker": "Speaker 1",
            "startTimeMs": 5440,
            "endTimeMs": 6840,
            "text": "Follow these quick steps.",
            "words": []
          },
          {
            "speaker": "Speaker 1",
            "startTimeMs": 8960,
            "endTimeMs": 15680,
            "text": "Press the Xbox button on your controller to open the guide while signed into the console with the account you want to apply the code to.",
            "words": []
          },
          {
            "speaker": "Speaker 1",
            "startTimeMs": 26960,
            "endTimeMs": 29840,
            "text": "Enter the 25-character code without the hyphens.",
            "words": []
          },
          {
            "speaker": "Speaker 1",
            "startTimeMs": 33600,
            "endTimeMs": 34640,
            "text": "Game on.",
            "words": []
          }
        ],
        "cameraShotTimesMs": [
          760,
          33240,
          39520
        ]
      }
    ]
  }
}

En este ejemplo completo se muestra cómo Content Understanding extrae y estructura todos los distintos tipos de elementos de un audio o vídeo, proporcionando tanto el contenido sin procesar como la información temporal y estructural detallada que permite flujos de trabajo avanzados de procesamiento de vídeo.

Pasos siguientes