Análisis de archivos de audio y vídeo con Azure Media Services

Logotipo de Media Services v3


Sitio web | de AMS Documentación de Media Services v2 | Ejemplos de código | Guía de solución de problemas

Importante

Como se describe en [Estándares de INTELIGENCIA ARTIFICIAL responsables](https://blogs.microsoft.com/on-the-issues/2022/06/21/microsofts-framework-for-building-ai-systems-responsibly/ de Microsoft, Microsoft se compromete a la equidad, la privacidad, la seguridad y la transparencia con respecto a los sistemas de inteligencia artificial. Para alinearse con estos estándares, Azure Media Services retira el valor preestablecido de Video Analyzer el 14 de septiembre de 2023. Actualmente, este preajuste permite extraer varios puntos de vista de vídeo y audio de un archivo de vídeo. Los clientes pueden reemplazar sus flujos de trabajo actuales mediante el conjunto de características más avanzado que ofrece Azure Video Indexer.

Media Services permite extraer información de los archivos de vídeo y audio mediante los valores preestablecidos del analizador de audio y vídeo. En este artículo se describen los valores preestablecidos del analizador que se usan para extraer información. Si desea obtener información más detallada de los vídeos, use el servicio Azure Video Analyzer for Media. Para saber cuándo usar los valores preestablecidos de Azure Video Analyzer for Media, en lugar de los de Media Services, consulte el documento comparativo.

Existen dos modos para el valor preestablecido del analizador de audio, básico y estándar. Vea la descripción de las diferencias en la tabla siguiente.

Para analizar el contenido mediante los valores preestablecidos de Media Services v3, cree una transformación y envíe un trabajo que use uno de estos valores preestablecidos: VideoAnalyzerPreset o AudioAnalyzerPreset.

Cumplimiento, privacidad y seguridad

Es preciso que cumpla todas las leyes relativas al uso de Video Analyzer for Media. Además no podrá utilizar este servicio de Azure ni ningún otro servicio de tal manera que infrinja los derechos de otras personas o que pueda ser perjudicial para ellas. Antes de cargar vídeos que incluyan datos biométricos en el servicio Video Analyzer for Media para procesarlos y almacenarlos, debe tener todos los derechos apropiados (por ejemplo, todos los consentimientos adecuados) de las personas del vídeo. Para obtener información sobre el cumplimiento, la privacidad y la seguridad de Video Analyzer for Media, consulte Términos de Cognitive Services de Azure. En lo que respecta a las obligaciones de privacidad de Microsoft y al control de los datos, consulte la declaración de privacidad, los Términos de los Servicios en Línea ("OST") y el anexo de procesamiento de datos ("DPA") de Microsoft. Puede encontrar información adicional sobre la privacidad, como la retención, eliminación o destrucción de los datos, en los términos de OST y aquí. Con el uso de Video Analyzer for Media, acepta estar sujeto a los términos de Cognitive Services, OST, DPA y la declaración de privacidad.

Valores preestablecidos integrados

Media Services admite actualmente los siguientes valores preestablecidos de analizador integrados:

Nombre del valor preestablecido Escenario/modo Detalles
AudioAnalyzerPreset Análisis del modo de audio estándar El valor predeterminado aplica un conjunto predefinido de operaciones de análisis basadas en inteligencia artificial, incluida la transcripción de voz. Actualmente, este valor admite el procesamiento de contenido con una sola pista de audio que contiene la voz en un solo idioma. Especifique el idioma para la carga de audio en la entrada con el formato BCP-47 de "etiqueta de idioma-región". Consulte la lista de idiomas admitidos a continuación para obtener los códigos de idioma disponibles. La detección automática de idioma elige el primer idioma detectado y continúa con el idioma seleccionado para todo el archivo si no se ha establecido o si se ha establecido como nulo. La función de detección automática de idioma admite actualmente los siguientes idiomas: inglés, chino, francés, alemán, italiano, japonés, español, ruso y portugués. Una vez detectado el primer idioma seleccionado, no se admite el cambio dinámico entre idiomas. La característica de detección automática de idioma funciona mejor con grabaciones de audio con voz claramente perceptible. Si con la detección automática del idioma no se encuentra el idioma, se usará el inglés para la transcripción.
AudioAnalyzerPreset Análisis del modo de audio básico Este modo predefinido realiza la transcripción de voz a texto y la generación de un archivo de subtítulos VTT. La salida de este modo incluye un archivo JSON de información, que incluye solo las palabras clave, la transcripción y la información de tiempo. La detección automática de idioma y la diarización de los altavoces no se incluyen en este modo. La lista de idiomas admitidos es idéntica al modo estándar anterior.
VideoAnalyzerPreset Análisis de audio y vídeo Extrae información (metadatos enriquecidos) de audio y vídeo y genera como salida un archivo en formato JSON. Puede especificar si desea solo extraer información de audio al procesar un archivo de vídeo.
FaceDetectorPreset Detección de caras presentes en el vídeo Describe la configuración que se usará al analizar un vídeo con el fin de detectar todas las caras presentes.

Idiomas admitidos

  • Árabe ('ar-BH', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-OM', 'ar-QA', 'ar-SA' y 'ar-SY')
  • Portugués brasileño ('pt-BR')
  • Chino ('zh-CN')
  • Danés('da-DK')
  • Inglés ('en-US', 'en-GB' y 'en-AU')
  • Finés ('fi-FI')
  • Francés ('fr-FR' y 'fr-CA')
  • Alemán ('de-DE')
  • Hebreo ('he-IL')
  • Hindi ('hi-IN'), coreano ('ko-KR')
  • Italiano ('it-IT')
  • Japonés ('ja-JP')
  • Noruego ('nb-NO')
  • Persa ('fa-IR')
  • Portugués de Portugal ('pt-PT')
  • Ruso ('ru-RU-IR')
  • Español ('es-ES' y 'es-MX')
  • Sueco ('sv-SE')
  • Tailandés ('th-TH')
  • Tailandés ('tr-TR')

Modo estándar de AudioAnalyzerPreset

El valor preestablecido permite extraer diversa información de audio de un archivo de audio o vídeo.

La salida incluye un archivo JSON (con toda la información) y un archivo VTT para la transcripción del audio. Este valor predeterminado acepta una propiedad que especifica el idioma del archivo de entrada en forma de una cadena BCP47. La información de audio incluye:

  • Transcripción de audio: una transcripción del texto oral con marcas de tiempo. Se admiten varios idiomas.
  • Indexación del hablante: una asignación de los hablantes y el texto oral correspondiente.
  • Análisis de opinión de voz: la salida del análisis de opinión que se realiza en la transcripción del audio.
  • Palabras clave: palabras clave que se extraen de la transcripción de audio.

Modo básico de AudioAnalyzerPreset

El valor preestablecido permite extraer diversa información de audio de un archivo de audio o vídeo.

La salida incluye un archivo JSON y un archivo VTT para la transcripción del audio. Este valor predeterminado acepta una propiedad que especifica el idioma del archivo de entrada en forma de una cadena BCP47. La salida incluye lo siguiente:

  • Transcripción de audio: una transcripción del texto oral con marcas de tiempo. Se admiten varios idiomas, pero no se incluyen la detección automática de idioma y la diarización de los altavoces.
  • Palabras clave: palabras clave que se extraen de la transcripción de audio.

VideoAnalyzerPreset

El valor preestablecido permite extraer diversa información de audio y vídeo desde un archivo de vídeo. La salida incluye un archivo JSON (con toda la información), un archivo VTT para la transcripción del video y una colección de miniaturas de vídeo. Este valor preestablecido también acepta una cadena BCP47 (que representa el idioma del vídeo) como propiedad. La información de vídeo incluye toda la información de audio mencionada anteriormente, además de los elementos siguientes:

  • Seguimiento facial: tiempo durante el cual aparecen rostros en el vídeo. Cada rostro tiene un identificador facial y una colección de miniaturas correspondiente.
  • Texto visual: el texto que se detecta mediante el reconocimiento óptico de caracteres. Al texto se le agrega una marca de tiempo y también se usa para extraer palabras clave (además de la transcripción del audio).
  • Fotogramas clave: colección de fotogramas clave extraídos del vídeo.
  • Moderación de contenido visual: la parte de los vídeos marcada como explícita o para adultos.
  • Anotación: el resultado de anotar los vídeos en función de un modelo de objetos predefinido.

Elementos insights.json

La salida incluye un archivo JSON (insights.json) con toda la información que se encontró en el audio o el vídeo. El archivo JSON puede incluir los elementos siguientes:

transcript

Nombre Descripción
id Identificador de la línea.
text La transcripción en sí.
language Idioma de la transcripción. Diseñado para admitir la transcripción, donde cada línea puede tener un idioma distinto.
instances Lista de los intervalos de tiempo donde apareció esta línea. Si la instancia es una transcripción, solo habrá una.

Ejemplo:

"transcript": [
{
    "id": 0,
    "text": "Hi I'm Doug from office.",
    "language": "en-US",
    "instances": [
    {
        "start": "00:00:00.5100000",
        "end": "00:00:02.7200000"
    }
    ]
},
{
    "id": 1,
    "text": "I have a guest. It's Michelle.",
    "language": "en-US",
    "instances": [
    {
        "start": "00:00:02.7200000",
        "end": "00:00:03.9600000"
    }
    ]
}
]

ocr

Nombre Descripción
id Identificador de la línea OCR.
text Texto OCR.
confidence Confiabilidad del reconocimiento.
language Idioma de OCR.
instances Lista de los intervalos de tiempo donde apareció este OCR (el mismo OCR puede aparecer varias veces).
"ocr": [
    {
      "id": 0,
      "text": "LIVE FROM NEW YORK",
      "confidence": 0.91,
      "language": "en-US",
      "instances": [
        {
          "start": "00:00:26",
          "end": "00:00:52"
        }
      ]
    },
    {
      "id": 1,
      "text": "NOTICIAS EN VIVO",
      "confidence": 0.9,
      "language": "es-ES",
      "instances": [
        {
          "start": "00:00:26",
          "end": "00:00:28"
        },
        {
          "start": "00:00:32",
          "end": "00:00:38"
        }
      ]
    }
  ],

faces

Nombre Descripción
id Identificador del rostro.
name Nombre del rostro. Puede ser "Unknown #0", una celebridad identificada o una persona entrenada del cliente.
confidence Confidencialidad de la identificación facial.
description Descripción de la celebridad.
thumbnailId Identificador de la miniatura del rostro en cuestión.
knownPersonId El identificador interno (si es una persona conocida).
referenceId El identificador de Bing (si es una celebridad de Bing).
referenceType Actualmente, solo Bing.
title El título (si es una celebridad, por ejemplo, "CEO de Microsoft").
imageUrl La dirección URL de la imagen, si es un celebridad.
instances Instancias en las que apareció el rostro en el intervalo de tiempo determinado. Cada instancia también tiene su thumbnailsId.
"faces": [{
	"id": 2002,
	"name": "Xam 007",
	"confidence": 0.93844,
	"description": null,
	"thumbnailId": "00000000-aee4-4be2-a4d5-d01817c07955",
	"knownPersonId": "8340004b-5cf5-4611-9cc4-3b13cca10634",
	"referenceId": null,
	"title": null,
	"imageUrl": null,
	"instances": [{
		"thumbnailsIds": ["00000000-9f68-4bb2-ab27-3b4d9f2d998e",
		"cef03f24-b0c7-4145-94d4-a84f81bb588c"],
		"adjustedStart": "00:00:07.2400000",
		"adjustedEnd": "00:00:45.6780000",
		"start": "00:00:07.2400000",
		"end": "00:00:45.6780000"
	},
	{
		"thumbnailsIds": ["00000000-51e5-4260-91a5-890fa05c68b0"],
		"adjustedStart": "00:10:23.9570000",
		"adjustedEnd": "00:10:39.2390000",
		"start": "00:10:23.9570000",
		"end": "00:10:39.2390000"
	}]
}]

shots

Nombre Descripción
id Identificador de la toma.
keyFrames Lista de los fotogramas clave dentro de la toma (cada uno con un identificador y una lista de intervalos de tiempo de instancias). Las instancias de fotogramas clave tienen un campo thumbnailId con el identificador de la miniatura del fotograma clave.
instances Lista de intervalos de tiempo de esta toma (las tomas solo tienen una instancia).
"Shots": [
    {
      "id": 0,
      "keyFrames": [
        {
          "id": 0,
          "instances": [
            {
	            "thumbnailId": "00000000-0000-0000-0000-000000000000",
              "start": "00: 00: 00.1670000",
              "end": "00: 00: 00.2000000"
            }
          ]
        }
      ],
      "instances": [
        {
	        "thumbnailId": "00000000-0000-0000-0000-000000000000",
          "start": "00: 00: 00.2000000",
          "end": "00: 00: 05.0330000"
        }
      ]
    },
    {
      "id": 1,
      "keyFrames": [
        {
          "id": 1,
          "instances": [
            {
	            "thumbnailId": "00000000-0000-0000-0000-000000000000",
              "start": "00: 00: 05.2670000",
              "end": "00: 00: 05.3000000"
            }
          ]
        }
      ],
      "instances": [
        {
          "thumbnailId": "00000000-0000-0000-0000-000000000000",
          "start": "00: 00: 05.2670000",
          "end": "00: 00: 10.3000000"
        }
      ]
    }
  ]

estadísticas

Nombre Descripción
CorrespondenceCount Número de correspondencias en el vídeo.
WordCount Número de palabras por orador.
SpeakerNumberOfFragments Cantidad de fragmentos que el orador tiene en un vídeo.
SpeakerLongestMonolog Monólogo más largo del orador. Si el orador tiene períodos de silencio dentro del monólogo, se incluyen. Los silencios al principio y al final del monólogo se eliminan.
SpeakerTalkToListenRatio El cálculo se basa en el tiempo invertido en el monólogo del orador (sin los silencios intermedios) dividido por el tiempo total del vídeo. El tiempo se redondea a tres decimales.

sentiments

Las opiniones se agregan según su campo sentimentType (Positive/Neutral/Negative). Por ejemplo, 0-0,1, 0,1-0,2.

Nombre Descripción
id Identificador de la opinión.
averageScore Promedio de todas las puntuaciones de todas las instancias de ese tipo de opinión: Positive/Neutral/Negative.
instances Lista de los intervalos de tiempo donde apareció esta opinión.
sentimentType El tipo puede ser "Positive", "Neutral" o "Negative".
"sentiments": [
{
    "id": 0,
    "averageScore": 0.87,
    "sentimentType": "Positive",
    "instances": [
    {
        "start": "00:00:23",
        "end": "00:00:41"
    }
    ]
}, {
    "id": 1,
    "averageScore": 0.11,
    "sentimentType": "Positive",
    "instances": [
    {
        "start": "00:00:13",
        "end": "00:00:21"
    }
    ]
}
]

labels

Nombre Descripción
id Identificador de la etiqueta.
name Nombre de la etiqueta (por ejemplo, "Equipo", "TV").
language Idioma del nombre de la etiqueta (cuando se traduce). BCP-47
instances Lista de los intervalos de tiempo donde apareció esta etiqueta (una etiqueta puede aparecer varias veces). Cada instancia tiene un campo de confiabilidad.
"labels": [
    {
      "id": 0,
      "name": "person",
      "language": "en-US",
      "instances": [
        {
          "confidence": 1.0,
          "start": "00: 00: 00.0000000",
          "end": "00: 00: 25.6000000"
        },
        {
          "confidence": 1.0,
          "start": "00: 01: 33.8670000",
          "end": "00: 01: 39.2000000"
        }
      ]
    },
    {
      "name": "indoor",
      "language": "en-US",
      "id": 1,
      "instances": [
        {
          "confidence": 1.0,
          "start": "00: 00: 06.4000000",
          "end": "00: 00: 07.4670000"
        },
        {
          "confidence": 1.0,
          "start": "00: 00: 09.6000000",
          "end": "00: 00: 10.6670000"
        },
        {
          "confidence": 1.0,
          "start": "00: 00: 11.7330000",
          "end": "00: 00: 20.2670000"
        },
        {
          "confidence": 1.0,
          "start": "00: 00: 21.3330000",
          "end": "00: 00: 25.6000000"
        }
      ]
    }
  ]

keywords

Nombre Descripción
id Identificador de la palabra clave.
text Texto de la palabra clave.
confidence Confiabilidad del reconocimiento de la palabra clave.
language Idioma de la palabra clave (cuando se traduce).
instances Lista de los intervalos de tiempo donde apareció esta palabra clave (una palabra clave puede aparecer varias veces).
"keywords": [
{
    "id": 0,
    "text": "office",
    "confidence": 1.6666666666666667,
    "language": "en-US",
    "instances": [
    {
        "start": "00:00:00.5100000",
        "end": "00:00:02.7200000"
    },
    {
        "start": "00:00:03.9600000",
        "end": "00:00:12.2700000"
    }
    ]
},
{
    "id": 1,
    "text": "icons",
    "confidence": 1.4,
    "language": "en-US",
    "instances": [
    {
        "start": "00:00:03.9600000",
        "end": "00:00:12.2700000"
    },
    {
        "start": "00:00:13.9900000",
        "end": "00:00:15.6100000"
    }
    ]
}
]

visualContentModeration

El bloque visualContentModeration contiene intervalos de tiempo en los que Video Analyzer for Media ha detectado que podría haber contenido para adultos. Si visualContentModeration está vacío, no se ha identificado ningún contenido para adultos.

Los vídeos en los que se encuentre contenido para adultos o subido de tono podrían estar disponibles solo para visualización privada. Los usuarios pueden enviar una solicitud de revisión humana del contenido, en cuyo caso el atributo IsAdult contendrá el resultado de la revisión humana.

Nombre Descripción
id Identificador de la moderación del contenido visual.
adultScore Puntuación de contenido para adultos (del moderador de contenido).
racyScore Puntuación de contenido subido de tono (del moderador de contenido).
instances Lista de intervalos de tiempo donde apareció esta moderación de contenido visual.
"VisualContentModeration": [
{
    "id": 0,
    "adultScore": 0.00069,
    "racyScore": 0.91129,
    "instances": [
    {
        "start": "00:00:25.4840000",
        "end": "00:00:25.5260000"
    }
    ]
},
{
    "id": 1,
    "adultScore": 0.99231,
    "racyScore": 0.99912,
    "instances": [
    {
        "start": "00:00:35.5360000",
        "end": "00:00:35.5780000"
    }
    ]
}
]