Freigeben über


AudioVisual-Analyse: Extrahieren strukturierter Inhalte

Die multimodalen Analysefunktionen von Azure Content Understanding helfen Ihnen, unstrukturierte Audio- und Videodaten in strukturierte, maschinenlesbare Informationen zu transformieren. Indem Sie audiovisuelle Elemente präzise identifizieren und extrahieren und gleichzeitig ihre zeitlichen Beziehungen beibehalten, können Sie leistungsstarke Medienverarbeitungsworkflows für eine vielzahl von Anwendungen erstellen.

Das contents-Objekt mit kind: "audioVisual" unterstützt sowohl Audio- als auch Videoeingaben mit unterschiedlichen Funktionen, die je nach Eingabetyp verfügbar sind.

Zu den unterstützten Inhaltstypen gehören:

  • Audiodateien: Gängige Audioformate
  • Videodateien: Allgemeine Videoformate

Ausführliche Informationen zu unterstützten Dateitypen, Dateigrößenbeschränkungen und anderen Einschränkungen finden Sie unter Dienstkontingente und Grenzwerte.

JSON-Antwortstruktur

Die Inhaltsverständnis-API gibt Analyseergebnisse in einem strukturierten JSON-Format zurück. Dieses Dokument konzentrierte sich auf das Element im Inhaltsarray, dessen Art auf "audio-Visuell" gesetzt ist. Dies ist die gesamte Containerstruktur der Antwort:

{
  "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": [/* ... */], 
      }
    ]
  }
}

audiovisuelle Elemente

Die folgenden audiovisuellen Elemente können extrahiert werden:

Element Audiounterstützung Videounterstützung Erfordert „returnDetails“
Markdown-Inhalt Nein
Contents-Auflistung Nein
Transkriptionsphrasen Ja
Zeitinformationen Nein
Keyframes Nein
Kameraaufnahmen Ja
Feldextraktion Nein

Die Gesichtserkennung erfordert außerdem enableFace: true in der Analysetoolkonfiguration und die Registrierung für eingeschränkten Zugriff.

Markdown-Inhaltselemente

Ausführliche Informationen zum Markdownformat für audiovisuelle Inhalte finden Sie unter AudioVisual Markdown.

Inhaltssammlung

Die Inhaltsauflistung enthält mindestens ein Inhaltsobjekt, das die aus der Datei extrahierten Daten enthält. Wenn die Segmentierung aktiviert ist (enableSegment = true) wird ein Inhaltsobjekt für jedes Segment zurückgegeben, das sich im Inhalt befindet.

Satzfragmente aus Transkriptionen

Ein transcriptPhrases Element enthält die vollständige Audiotranskription, unterteilt in einzelne Ausdrücke mit Sprecheridentifikation und präzise Timing-Informationen. Dieses Element steht sowohl für Audio- als auch für Videoeingaben zur Verfügung. Inhaltsverständnis unterstützt mehrsprachige Transkription und Sprecherdiarisierung. Diese Ausgabe ist enthalten, wenn der Benutzer "returnDetails": true in der Analysedefinition festlegt. Details zur Sprachunterstützung finden Sie unter "Audio Language Handling".

JSON-Beispiel:

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

Zeitinformationen

Zeitangaben liefern die zeitlichen Gesamtgrenzen der audiovisuellen Inhalte:

  • startTimeMs: Die Startzeit des Inhalts in Millisekunden (in der Regel 0)
  • endTimeMs: Die Endzeit des Inhalts in Millisekunden
  • width: Die Videobreite in Pixeln (nur Video)
  • height: Die Videohöhe in Pixeln (nur Video)

JSON-Beispiel:

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

Schlüsselframes

Ein keyFrameTimesMs Element stellt die Zeitstempel für die visuellen Frames dar, die aus dem Video zu wichtigen Momenten extrahiert wurden. Zeitstempel werden von Beginn des Videos in Millisekunden dargestellt. Diese Frames werden basierend auf Signalen wie der Szenenerkennung intelligent ausgewählt. Diese Frames werden als Eingabe verwendet, um benutzerdefinierte Felder zu generieren.

Keyframe-Samplingverhalten:

  • Keyframes werden einheitlich aus jedem Kamerafoto ausgewählt.
  • Jede Aufnahme enthält mindestens ein gesampeltes Keyframe, selbst bei kurzen Aufnahmen (weniger als eine Sekunde)
  • Die Anzahl der Keyframes ist in mehreren Durchläufen konsistent.
  • Zeitstempelwerte können geringfügige numerische Unterschiede zwischen den Läufen aufweisen, doch diese Unterschiede sind minimal und sollten den Inhalt der ausgewählten Rahmen nicht signifikant beeinflussen.

JSON-Beispiel:

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

Kameraaufnahmen

Ein cameraShotTimesMs Element identifiziert Punkte im Video, in denen Kameraaufnahmen geändert werden, was Schnitte, Übergänge oder signifikante Änderungen im Kamerawinkel oder perspektivisch angibt. Dies hilft ihnen, die Bearbeitungsstruktur des Videos zu verstehen. Die Werte sind Zeitstempel in Millisekunden vom Anfang des Videos. Diese Ausgabe ist enthalten, wenn der Benutzer "returnDetails": true in der Analysedefinition festlegt.

Kamerafotoerkennungsverhalten:

  • cameraShotTimesMs speichert die Zeitstempel von Schnitten zwischen Kameraaufnahmen
  • Die Arraywerte geben die Startzeit aller Kameraaufnahmen an, mit Ausnahme des ersten Schusses (der immer bei 0 ms beginnt)
  • Die Ausgabe ist deterministisch und über mehrere Ausführungen hinweg konsistent
  • Dieses Modell kann Übergänge übersehen, die visuell graduell sind.

JSON-Beispiel:

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

Benutzerdefinierte Elemente

Feldextraktion

Mit der Benutzerdefinierten Feldextraktion können Sie bestimmte Informationen aus audiovisuellen Inhalten basierend auf Ihren geschäftlichen Anforderungen definieren und extrahieren. Felder werden in der Analysekonfiguration definiert. Felder können bei Videos standardmäßig für den gesamten Inhalt oder für jedes Segment aufgefüllt werden, wenn die Segmentierung aktiviert ist.

JSON-Beispiel für die Feldextraktion:

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

Vollständiges JSON-Beispiel

Das folgende Beispiel zeigt die vollständige JSON-Antwortstruktur aus der Analyse eines Xbox-Anweisungsvideos. Der hier enthaltene JSON-Code stellt die vollständige Ausgabe von Content Understanding beim Verarbeiten eines Videos mit mehreren Elementtypen dar:

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

In diesem vollständigen Beispiel wird veranschaulicht, wie Inhaltsverständnis alle verschiedenen Elementtypen aus einem Audio oder Video extrahiert und strukturiert und sowohl den Rohinhalt als auch die detaillierten zeitlichen und strukturellen Informationen bereitstellt, die erweiterte Videoverarbeitungsworkflows ermöglichen.

Nächste Schritte