Compartilhar via


Análise audiovisual: extraindo conteúdo estruturado

Os recursos de análise multimodal do Azure Content Understanding ajudam você a transformar dados de áudio e vídeo não estruturados em informações estruturadas e legíveis pelo computador. Identificando e extraindo elementos audiovisuais com precisão, preservando suas relações temporais, você pode criar fluxos de trabalho avançados de processamento de mídia para uma ampla gama de aplicativos.

O objeto contentskind: "audioVisual" suporta tanto entradas somente de áudio quanto de vídeo, com diferentes capacidades disponíveis de acordo com o tipo de entrada.

Os tipos de conteúdo com suporte incluem:

  • Arquivos de áudio: formatos de áudio comuns
  • Arquivos de vídeo: formatos de vídeo comuns

Para obter detalhes completos sobre tipos de arquivo com suporte, limites de tamanho de arquivo e outras restrições, consulte cotas e limites de serviço.

Estrutura de resposta JSON

A API de Compreensão de Conteúdo retorna resultados de análise em um formato JSON estruturado. Este documento se concentrou no elemento na matriz de conteúdo com o tipo definido como audioVisual. Aqui está a estrutura de contêiner geral da resposta:

{
  "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 audiovisuais

Os seguintes elementos audiovisuais podem ser extraídos:

Elemento Suporte a áudio Suporte a vídeo Requer detalhes de retorno
Conteúdo de Markdown Não
Coleção de conteúdo Não
Frases de transcrição Yes
Informações de tempo Não
Quadros-chave Não
Capturas de câmera Yes
Extração de campo Não

Detecção Facial também requer enableFace: true na configuração do analisador e registro de acesso limitado.

Elementos de conteúdo em formato markdown

Para obter detalhes sobre o formato de markdown para conteúdo audiovisual, consulte AudioVisual Markdown.

Coleção de conteúdo

A coleção de conteúdo contém um ou mais objetos de conteúdo que contêm os dados extraídos do arquivo. Quando a segmentação é habilitada (enableSegment = true) um objeto de conteúdo é retornado para cada segmento encontrado no conteúdo.

Frases de transcrição

Um transcriptPhrases elemento contém a transcrição de áudio completa, dividida em frases individuais com identificação do locutor e informações precisas de tempo. Esse elemento está disponível para entradas de áudio e vídeo. O Content Understanding oferece suporte à transcrição multilíngue e à diarização de locutores. Essa saída é incluída quando o usuário define "returnDetails": true na definição do analisador. Os detalhes do suporte ao idioma podem ser encontrados aqui no Tratamento de Linguagem de Áudio.

Exemplo de 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": []
    }
  ]
}

Informações de tempo

As informações de tempo fornecem os limites temporais gerais do conteúdo audiovisual:

  • startTimeMs: a hora de início do conteúdo em milissegundos (normalmente 0)
  • endTimeMs: a hora de término do conteúdo em milissegundos
  • width: a largura do vídeo em pixels (somente vídeo)
  • height: a altura do vídeo em pixels (somente vídeo)

Exemplo de JSON:

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

Quadros chave

Um elemento keyFrameTimesMs representa os carimbos de data/hora para os quadros visuais extraídos do vídeo nos momentos principais. Os carimbos de data/hora são representados em milissegundos a partir do início do vídeo. Esses quadros são selecionados de forma inteligente com base em sinais como detecção de captura. Esses quadros são usados como entrada para gerar campos personalizados.

Comportamento de amostragem de quadro-chave:

  • Os quadros-chave são selecionados uniformemente em cada captura de câmera
  • Cada tomada inclui pelo menos um quadro-chave amostrado, mesmo para tomadas curtas (menos de um segundo)
  • O número de quadros-chave é consistente em várias execuções
  • Valores de timestamp podem apresentar pequenas variações numéricas entre execuções, mas essas diferenças são mínimas e não devem afetar significativamente o conteúdo dos quadros selecionados.

Exemplo de JSON:

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

Capturas de câmera

Um cameraShotTimesMs elemento identifica pontos no vídeo em que as imagens da câmera mudam, indicando cortes, transições ou alterações significativas no ângulo ou perspectiva da câmera. Isso ajuda a entender a estrutura de edição do vídeo. Os valores são carimbos de data/hora em milissegundos a partir do início do vídeo. Essa saída é incluída quando o usuário define "returnDetails": true na definição do analisador.

Comportamento de detecção de tomadas de câmera:

  • cameraShotTimesMs armazena os timestamps dos cortes entre as tomadas da câmera
  • Os valores da matriz indicam a hora de início de todas as capturas de câmera, excluindo a primeira captura (que sempre começa em 0 ms)
  • A saída é determinística e consistente em várias execuções
  • Este modelo pode ignorar as transições que são visualmente graduais

Exemplo de JSON:

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

Elementos personalizados

Extração de campo

A extração de campo personalizada permite que você defina e extraia informações específicas do conteúdo audiovisual com base em seus requisitos de negócios. Os campos são definidos na configuração do analisador. Os campos podem ser preenchidos para todo o conteúdo por padrão ou para cada segmento, para vídeo quando a segmentação está habilitada.

Exemplo de JSON de extração de campo:

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

Exemplo de JSON completo

O exemplo a seguir mostra a estrutura de resposta JSON completa da análise de um vídeo instrucional do Xbox. O JSON incluído aqui representa a saída completa do Content Understanding ao processar um vídeo com vários tipos de elemento:

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

Este exemplo completo demonstra como o Content Understanding extrai e estrutura todos os diferentes tipos de elementos de um áudio ou vídeo, fornecendo o conteúdo bruto e as informações temporais e estruturais detalhadas que permitem fluxos de trabalho avançados de processamento de vídeo.

Próximas etapas