Una Guía Completa de Conjuntos de Datos de Audio

'Guía de Conjuntos de Datos de Audio'

Introducción

🤗 Datasets es una biblioteca de código abierto para descargar y preparar conjuntos de datos de todos los dominios. Su API minimalista permite a los usuarios descargar y preparar conjuntos de datos en solo una línea de código Python, con una serie de funciones que facilitan el preprocesamiento eficiente. La cantidad de conjuntos de datos disponibles es incomparable, con todos los conjuntos de datos de aprendizaje automático más populares disponibles para descargar.

No solo eso, sino que 🤗 Datasets viene preparado con múltiples características específicas de audio que facilitan el trabajo con conjuntos de datos de audio tanto para investigadores como para profesionales. En este blog, demostraremos estas características, mostrando por qué 🤗 Datasets es el lugar ideal para descargar y preparar conjuntos de datos de audio.

Contenido

  1. El Hub
  2. Cargar un conjunto de datos de audio
  3. Fácil de cargar, fácil de procesar
  4. Modo de transmisión: la bala de plata
  5. Un recorrido por los conjuntos de datos de audio en el Hub
  6. Observaciones finales

El Hub

El Hugging Face Hub es una plataforma para alojar modelos, conjuntos de datos y demos, todos de código abierto y disponibles públicamente. Es el hogar de una colección creciente de conjuntos de datos de audio que abarcan una variedad de dominios, tareas e idiomas. A través de integraciones estrechas con 🤗 Datasets, todos los conjuntos de datos en el Hub se pueden descargar en una línea de código.

Vamos al Hub y filtramos los conjuntos de datos por tarea:

  • Conjuntos de datos de reconocimiento de voz en el Hub
  • Conjuntos de datos de clasificación de audio en el Hub

En el momento de escribir esto, hay 77 conjuntos de datos de reconocimiento de voz y 28 conjuntos de datos de clasificación de audio en el Hub, y estos números siguen aumentando. Puedes seleccionar cualquiera de estos conjuntos de datos según tus necesidades. Veamos el primer resultado de reconocimiento de voz. Al hacer clic en common_voice, se muestra la tarjeta del conjunto de datos:

Aquí, podemos encontrar información adicional sobre el conjunto de datos, ver en qué modelos se han entrenado y, lo más emocionante, escuchar muestras de audio reales. La Vista previa del conjunto de datos se presenta en el centro de la tarjeta del conjunto de datos. Nos muestra las primeras 100 muestras para cada subconjunto y división. Además, carga las muestras de audio listas para que podamos escucharlas en tiempo real. Si hacemos clic en el botón de reproducción de la primera muestra, podemos escuchar el audio y ver el texto correspondiente.

La Vista previa del conjunto de datos es una forma brillante de experimentar con conjuntos de datos de audio antes de usarlos. Puedes seleccionar cualquier conjunto de datos en el Hub, recorrer las muestras y escuchar el audio para los diferentes subconjuntos y divisiones, evaluando si es el conjunto de datos adecuado para tus necesidades. Una vez que hayas seleccionado un conjunto de datos, es trivial cargar los datos para que puedas comenzar a usarlos.

Cargar un conjunto de datos de audio

Una de las características definitorias clave de 🤗 Datasets es la capacidad de descargar y preparar un conjunto de datos en solo una línea de código Python. Esto es posible gracias a la función load_dataset. Convencionalmente, cargar un conjunto de datos implica: i) descargar los datos en bruto, ii) extraerlos de su formato comprimido y iii) preparar las muestras y divisiones individuales. Usando load_dataset, todo el trabajo pesado se realiza automáticamente.

Tomemos el ejemplo de cargar el conjunto de datos GigaSpeech desde Speech Colab. GigaSpeech es un conjunto de datos de reconocimiento de voz relativamente reciente para evaluar los sistemas de habla académicos y es uno de los muchos conjuntos de datos de audio disponibles en el Hugging Face Hub.

Para cargar el conjunto de datos GigaSpeech, simplemente tomamos el identificador del conjunto de datos en el Hub ( speechcolab/gigaspeech ) y lo especificamos en la función load_dataset. GigaSpeech viene en cinco configuraciones de tamaño creciente, que van desde xs (10 horas) hasta xl (10,000 horas). Para este tutorial, cargaremos la configuración más pequeña. El identificador del conjunto de datos y la configuración deseada son todo lo que necesitamos para descargar el conjunto de datos:

from datasets import load_dataset

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs")

print(gigaspeech)

Salida de impresión:

DatasetDict({
    train: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 9389
    })
    validation: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 6750
    })
    test: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 25619
    })
})

¡Y así, tenemos el conjunto de datos GigaSpeech listo! Simplemente no hay una forma más fácil de cargar un conjunto de datos de audio. Podemos ver que tenemos las divisiones de entrenamiento, validación y prueba pre-particionadas, con la información correspondiente para cada una.

El objeto gigaspeech devuelto por la función load_dataset es un DatasetDict. Podemos tratarlo de la misma manera que un diccionario ordinario de Python. Para obtener la división de entrenamiento, pasamos la clave correspondiente al diccionario gigaspeech:

print(gigaspeech["train"])

Salida de impresión:

Dataset({
    features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
    num_rows: 9389
})

Esto devuelve un objeto Dataset, que contiene los datos para la división de entrenamiento. Podemos ir un nivel más profundo y obtener el primer elemento de la división. Nuevamente, esto es posible a través de la indexación estándar de Python:

print(gigaspeech["train"][0])

Salida de impresión:

{'segment_id': 'YOU0000000315_S0000660',
 'speaker': 'N/A', 
 'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000
           }, 
 'begin_time': 2941.889892578125, 
 'end_time': 2945.070068359375, 
 'audio_id': 'YOU0000000315', 
 'title': 'Return to Vasselheim | Critical Role: VOX MACHINA | Episode 43', 
 'url': 'https://www.youtube.com/watch?v=zr2n1fLVasU', 
 'source': 2, 
 'category': 24, 
 'original_full_path': 'audio/youtube/P0004/YOU0000000315.opus',
 }

Podemos ver que hay varias características devueltas por la división de entrenamiento, incluyendo segment_id, speaker, text, audio y más. Para el reconocimiento del habla, nos preocuparemos por las columnas text y audio.

Usando el método remove_columns de 🤗 Datasets, podemos eliminar las características del conjunto de datos que no son necesarias para el reconocimiento del habla:

COLUMNS_TO_KEEP = ["text", "audio"]
all_columns = gigaspeech["train"].column_names
columns_to_remove = set(all_columns) - set(COLUMNS_TO_KEEP)

gigaspeech = gigaspeech.remove_columns(columns_to_remove)

Verifiquemos que hemos retenido con éxito las columnas text y audio:

print(gigaspeech["train"][0])

Output de impresión:

{'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000}}

¡Genial! Podemos ver que tenemos las dos columnas requeridas text y audio. El text es una cadena de texto con la transcripción de la muestra y el audio es un arreglo unidimensional de valores de amplitud a una tasa de muestreo de 16KHz. ¡Eso es nuestro conjunto de datos cargado!

Fácil de cargar, fácil de procesar

Cargar un conjunto de datos con 🤗 Datasets es solo la mitad de la diversión. Ahora podemos usar la serie de herramientas disponibles para preprocesar eficientemente nuestros datos y prepararlos para el entrenamiento o inferencia del modelo. En esta sección, realizaremos tres etapas de preprocesamiento de datos:

  1. Re-muestreo de los datos de audio
  2. Función de preprocesamiento
  3. Función de filtrado

1. Re-muestreo de los datos de audio

La función load_dataset prepara las muestras de audio con la tasa de muestreo con la que fueron publicadas. Esto no siempre es la tasa de muestreo esperada por nuestro modelo. En este caso, necesitamos re-muestrear el audio a la tasa de muestreo correcta.

Podemos establecer las entradas de audio a nuestra tasa de muestreo deseada utilizando el método cast_column de 🤗 Datasets. Esta operación no cambia el audio directamente, sino que indica a datasets que re-muestre las muestras de audio sobre la marcha cuando se carguen. El siguiente bloque de código establecerá la tasa de muestreo en 8kHz:

from datasets import Audio

gigaspeech = gigaspeech.cast_column("audio", Audio(sampling_rate=8000))

Al volver a cargar la primera muestra de audio en el conjunto de datos GigaSpeech, se re-muestreará a la tasa de muestreo deseada:

print(gigaspeech["train"][0])

Output de impresión:

{'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([ 0.00046338,  0.00034808, -0.00086153, ...,  0.00099299,
        0.00083484,  0.00080221], dtype=float32), 
           'sampling_rate': 8000}
 }

Podemos ver que la tasa de muestreo se ha reducido a 8kHz. Los valores del arreglo también son diferentes, ya que ahora solo tenemos aproximadamente un valor de amplitud por cada dos que teníamos antes. Volvamos a establecer la tasa de muestreo del conjunto de datos en 16kHz, la tasa de muestreo esperada por la mayoría de los modelos de reconocimiento de voz:

gigaspeech = gigaspeech.cast_column("audio", Audio(sampling_rate=16000))

print(gigaspeech["train"][0])

Salida de impresión:

{'text': "AL SALIR, ¿PUEDE KASH LLEVAR A ZAHRA A UN LADO RÁPIDAMENTE?", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000}
 }

¡Fácil! cast_column proporciona un mecanismo sencillo para volver a muestrear conjuntos de datos de audio según sea necesario.

2. Función de preprocesamiento

Uno de los aspectos más desafiantes de trabajar con conjuntos de datos de audio es preparar los datos en el formato correcto para nuestro modelo. Usando el método map de 🤗 Datasets, podemos escribir una función para preprocesar una muestra única del conjunto de datos, y luego aplicarla a cada muestra sin realizar ningún cambio en el código.

Primero, carguemos un objeto procesador de 🤗 Transformers. Este procesador preprocesa el audio a características de entrada y tokeniza el texto objetivo a etiquetas. La clase AutoProcessor se utiliza para cargar un procesador desde un punto de control de modelo dado. En el ejemplo, cargamos el procesador desde el punto de control de Whisper VoAGI.en de OpenAI, pero puedes cambiar esto por cualquier identificador de modelo en el Hugging Face Hub:

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("openai/whisper-VoAGI.en")

¡Genial! Ahora podemos escribir una función que tome una sola muestra de entrenamiento y la pase a través del procesador para prepararla para nuestro modelo. También calcularemos la longitud de entrada de cada muestra de audio, información que necesitaremos para el siguiente paso de preparación de datos:

def prepare_dataset(batch):
    audio = batch["audio"]
    batch = processor(audio["array"], sampling_rate=audio["sampling_rate"], text=batch["text"])
    
    batch["input_length"] = len(audio["array"]) / audio["sampling_rate"]
    return batch

Podemos aplicar la función de preparación de datos a todos nuestros ejemplos de entrenamiento utilizando el método map de 🤗 Datasets. Aquí, también eliminamos las columnas text y audio, ya que hemos preprocesado el audio a características de entrada y tokenizado el texto a etiquetas:

gigaspeech = gigaspeech.map(prepare_dataset, remove_columns=gigaspeech["train"].column_names)

3. Función de filtrado

Antes del entrenamiento, es posible que tengamos una heurística para filtrar nuestros datos de entrenamiento. Por ejemplo, es posible que deseemos filtrar cualquier muestra de audio superior a 30 segundos para evitar truncar las muestras de audio o arriesgarnos a errores de memoria insuficiente. Podemos hacer esto de manera muy similar a cómo preparamos los datos para nuestro modelo en el paso anterior.

Comenzamos escribiendo una función que indique qué muestras mantener y cuáles descartar. Esta función, is_audio_length_in_range, devuelve un valor booleano: las muestras que son más cortas que 30 segundos devuelven True, y las que son más largas devuelven False.

DURACIÓN_MÁXIMA_EN_SEGUNDOS = 30.0

def is_audio_length_in_range(input_length):
    return input_length < DURACIÓN_MÁXIMA_EN_SEGUNDOS

Podemos aplicar esta función de filtrado a todos nuestros ejemplos de entrenamiento utilizando el método filter de 🤗 Datasets, manteniendo todas las muestras que sean más cortas que 30 segundos (True) y descartando aquellas que sean más largas (False):

gigaspeech["train"] = gigaspeech["train"].filter(is_audio_length_in_range, input_columns=["input_length"])

¡Y con eso, tenemos el conjunto de datos GigaSpeech completamente preparado para nuestro modelo! En total, este proceso requería 13 líneas de código Python, desde la carga del conjunto de datos hasta el paso final de filtrado.

Manteniendo el cuaderno lo más general posible, solo realizamos los pasos fundamentales de preparación de datos. Sin embargo, no hay restricciones en las funciones que puedes aplicar a tu conjunto de datos de audio. Puedes ampliar la función prepare_dataset para realizar operaciones mucho más involucradas, como aumento de datos, detección de actividad de voz o reducción de ruido. Con 🤗 Datasets, si puedes escribirlo en una función de Python, ¡puedes aplicarlo a tu conjunto de datos!

Modo de transmisión: La bala de plata

Uno de los mayores desafíos que enfrentan los conjuntos de datos de audio es su gran tamaño. La configuración xs de GigaSpeech contenía solo 10 horas de datos de entrenamiento, pero acumuló más de 13 GB de espacio de almacenamiento para descargar y preparar. Entonces, ¿qué sucede cuando queremos entrenar en una división más grande? La configuración completa xl contiene 10,000 horas de datos de entrenamiento, lo que requiere más de 1 TB de espacio de almacenamiento. Para la mayoría de los investigadores de habla, esto supera ampliamente las especificaciones de un disco duro típico. ¿Necesitamos gastar dinero y comprar almacenamiento adicional? ¿O hay una forma de entrenar con estos conjuntos de datos sin restricciones de espacio en disco?

🤗 Datasets nos permite hacer precisamente esto. Es posible gracias al uso del modo de transmisión, representado gráficamente en la Figura 1. La transmisión nos permite cargar los datos de forma progresiva a medida que iteramos sobre el conjunto de datos. En lugar de descargar todo el conjunto de datos de una vez, cargamos el conjunto de datos muestra por muestra. Iteramos sobre el conjunto de datos, cargando y preparando muestras sobre la marcha cuando se necesitan. De esta manera, solo cargamos las muestras que estamos usando y no las que no estamos usando. Una vez que terminamos con una muestra, continuamos iterando sobre el conjunto de datos y cargamos la siguiente.

Esto es análogo a descargar un programa de televisión versus transmitirlo. Cuando descargamos un programa de televisión, descargamos el video completo sin conexión y lo guardamos en nuestro disco. Tenemos que esperar a que se descargue todo el video antes de poder verlo y requiere tanto espacio en disco como el tamaño del archivo de video. Compare esto con la transmisión de un programa de televisión. Aquí, no descargamos ninguna parte del video al disco, sino que iteramos sobre el archivo de video remoto y cargamos cada parte en tiempo real según sea necesario. No tenemos que esperar a que el video completo se almacene en búfer antes de poder comenzar a verlo, ¡podemos comenzar tan pronto como la primera parte del video esté lista! Este es el mismo principio de transmisión que aplicamos a la carga de conjuntos de datos.

Figura 1: Modo de transmisión. El conjunto de datos se carga progresivamente a medida que iteramos sobre él.

El modo de transmisión tiene tres ventajas principales sobre la descarga de todo el conjunto de datos de una vez:

  1. Espacio en disco: las muestras se cargan en memoria una por una a medida que iteramos sobre el conjunto de datos. Dado que los datos no se descargan localmente, no hay requisitos de espacio en disco, por lo que puedes usar conjuntos de datos de tamaño arbitrario.
  2. Tiempo de descarga y procesamiento: los conjuntos de datos de audio son grandes y requieren una cantidad significativa de tiempo para descargar y procesar. Con la transmisión, la carga y el procesamiento se realizan sobre la marcha, lo que significa que puedes comenzar a usar el conjunto de datos tan pronto como la primera muestra esté lista.
  3. Experimentación fácil: puedes experimentar con algunas muestras para verificar que tu script funcione sin tener que descargar todo el conjunto de datos.

Hay una advertencia para el modo de transmisión. Al descargar un conjunto de datos, tanto los datos sin procesar como los datos procesados se guardan localmente en el disco. Si queremos reutilizar este conjunto de datos, podemos cargar directamente los datos procesados desde el disco, omitiendo los pasos de descarga y procesamiento. En consecuencia, solo tenemos que realizar las operaciones de descarga y procesamiento una vez, después de lo cual podemos reutilizar los datos preparados. Con el modo de transmisión, los datos no se descargan al disco. Por lo tanto, ni los datos descargados ni los datos preprocesados se almacenan en caché. Si queremos reutilizar el conjunto de datos, los pasos de transmisión deben repetirse, con los archivos de audio cargados y procesados sobre la marcha nuevamente. Por esta razón, se recomienda descargar conjuntos de datos que es probable que uses varias veces.

¿Cómo puedes habilitar el modo de transmisión? ¡Fácil! Solo configura streaming=True cuando cargues tu conjunto de datos. El resto se encargará por ti:

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", streaming=True)

Todos los pasos cubiertos hasta ahora en este tutorial se pueden aplicar al conjunto de datos en streaming sin realizar cambios en el código. El único cambio es que ya no se puede acceder a las muestras individuales utilizando la indexación de Python (es decir, gigaspeech["train"][sample_idx]). En su lugar, tienes que iterar sobre el conjunto de datos, utilizando un bucle for por ejemplo.

El modo de streaming puede llevar tu investigación al siguiente nivel: no solo tienes acceso a los conjuntos de datos más grandes, sino que también puedes evaluar fácilmente sistemas en múltiples conjuntos de datos de una sola vez sin preocuparte por el espacio en disco. En comparación con la evaluación en un solo conjunto de datos, la evaluación en múltiples conjuntos de datos proporciona una métrica mejor para las capacidades de generalización de un sistema de reconocimiento de voz (cf. End-to-end Speech Benchmark (ESB)). El Google Colab adjunto proporciona un ejemplo para evaluar el modelo Whisper en ocho conjuntos de datos de reconocimiento de voz en inglés en un solo script utilizando el modo de streaming.

Un Recorrido por los Conjuntos de Datos de Audio en The Hub

Esta sección sirve como una guía de referencia para los conjuntos de datos más populares de reconocimiento de voz, traducción de voz y clasificación de audio en el Hugging Face Hub. Podemos aplicar todo lo que hemos cubierto para el conjunto de datos GigaSpeech a cualquiera de los conjuntos de datos en el Hub. ¡Todo lo que tenemos que hacer es cambiar el identificador del conjunto de datos en la función load_dataset. Es así de fácil!

  1. Reconocimiento de Voz en Inglés
  2. Reconocimiento de Voz Multilingüe
  3. Traducción de Voz
  4. Clasificación de Audio

Reconocimiento de Voz en Inglés

El reconocimiento de voz, o conversión de voz a texto, es la tarea de mapear del habla hablada al texto escrito, donde tanto el habla como el texto están en el mismo idioma. Proporcionamos un resumen de los conjuntos de datos de reconocimiento de voz en inglés más populares en el Hub:

Consulta el Google Colab para obtener una guía sobre cómo evaluar un sistema en los ocho conjuntos de datos de reconocimiento de voz en inglés en un solo script.

Las siguientes descripciones de los conjuntos de datos se han tomado en gran medida del artículo ESB Benchmark.

LibriSpeech ASR

LibriSpeech es un conjunto de datos a gran escala estándar para evaluar sistemas ASR. Consiste en aproximadamente 1,000 horas de audiolibros narrados recopilados del proyecto LibriVox. LibriSpeech ha sido fundamental para que los investigadores aprovechen una gran cantidad de datos de habla transcritos preexistentes. Como tal, se ha convertido en uno de los conjuntos de datos más populares para evaluar sistemas académicos de habla.

librispeech = load_dataset("librispeech_asr", "all")

Common Voice

Common Voice es una serie de conjuntos de datos de voz con licencia abierta y creados mediante aportaciones de la comunidad, donde los hablantes graban texto de Wikipedia en varios idiomas. Dado que cualquier persona puede contribuir con grabaciones, existe una variación significativa tanto en la calidad del audio como en los hablantes. Las condiciones de audio son desafiantes, con artefactos de grabación, habla acentuada, vacilaciones y presencia de palabras extranjeras. Las transcripciones están en mayúsculas y puntuadas. El subconjunto en inglés de la versión 11.0 contiene aproximadamente 2,300 horas de datos validados. El uso del conjunto de datos requiere que aceptes los términos de uso de Common Voice, que se pueden encontrar en el Hugging Face Hub: mozilla-foundation/common_voice_11_0. Una vez que hayas aceptado los términos de uso, se te concederá acceso al conjunto de datos. Luego, deberás proporcionar un token de autenticación del Hub cuando cargues el conjunto de datos.

common_voice = load_dataset("mozilla-foundation/common_voice_11", "en", use_auth_token=True)

VoxPopuli

VoxPopuli es un corpus de voz multilingüe a gran escala que consta de datos obtenidos de grabaciones de eventos del Parlamento Europeo de 2009 a 2020. En consecuencia, ocupa el dominio único de la oratoria, el discurso político, en su mayoría obtenido de hablantes no nativos. El subconjunto en inglés contiene aproximadamente 550 horas de habla etiquetada.

voxpopuli = load_dataset("facebook/voxpopuli", "en")

TED-LIUM

TED-LIUM es un conjunto de datos basado en videos de conferencias TED Talk en inglés. El estilo de habla es de charlas educativas oratorias. Las charlas transcritas cubren una variedad de temas culturales, políticos y académicos diferentes, lo que resulta en un vocabulario técnico. La edición Release 3 (la más reciente) del conjunto de datos contiene aproximadamente 450 horas de datos de entrenamiento. Los datos de validación y prueba son del conjunto heredado, consistente con versiones anteriores.

tedlium = load_dataset("LIUM/tedlium", "release3")

GigaSpeech

GigaSpeech es un corpus de reconocimiento de voz en inglés multi-dominio curado a partir de audiolibros, podcasts y YouTube. Cubre tanto el habla narrada como el habla espontánea sobre una variedad de temas, como arte, ciencia y deportes. Contiene divisiones de entrenamiento que varían desde 10 horas hasta 10,000 horas y divisiones de validación y prueba estandarizadas.

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", use_auth_token=True)

SPGISpeech

SPGISpeech es un corpus de reconocimiento de voz en inglés compuesto por llamadas de ganancias de empresas que han sido transcritas manualmente por S&P Global, Inc. Las transcripciones están completamente formateadas de acuerdo con una guía de estilo profesional para el habla oratoria y espontánea. Contiene divisiones de entrenamiento que van desde 200 horas hasta 5,000 horas, con divisiones canónicas de validación y prueba.

spgispeech = load_dataset("kensho/spgispeech", "s", use_auth_token=True)

Earnings-22

Earnings-22 es un corpus de 119 horas de llamadas de ganancias en inglés recolectadas de empresas globales. El conjunto de datos fue desarrollado con el objetivo de agrupar una amplia gama de hablantes y acentos que cubren una variedad de temas financieros del mundo real. Existe una gran diversidad en los hablantes y acentos, con hablantes de siete regiones lingüísticas diferentes. Earnings-22 se publicó principalmente como un conjunto de datos solo para pruebas. El Hub contiene una versión del conjunto de datos que se ha dividido en divisiones de entrenamiento, validación y prueba.

earnings22 = load_dataset("revdotcom/earnings22")

AMI

AMI comprende 100 horas de grabaciones de reuniones capturadas mediante diferentes flujos de grabación. El corpus contiene transcripciones ortográficas anotadas manualmente de las reuniones alineadas a nivel de palabras. Las muestras individuales del conjunto de datos AMI contienen archivos de audio muy grandes (entre 10 y 60 minutos), que se segmentan en longitudes factibles para entrenar la mayoría de los sistemas de reconocimiento de voz. AMI contiene dos divisiones: IHM y SDM. IHM (micrófono de auricular individual) contiene habla cercana más fácil, y SDM (micrófono único a distancia) contiene habla lejana más difícil.

ami = load_dataset("edinburghcstr/ami", "ihm")

Reconocimiento de Voz Multilingüe

El reconocimiento de voz multilingüe se refiere al reconocimiento de voz (de texto a voz) para todos los idiomas excepto el inglés.

Multilingual LibriSpeech

Multilingual LibriSpeech es el equivalente multilingüe del corpus de reconocimiento de voz LibriSpeech. Comprende un gran corpus de audiolibros leídos tomados del proyecto LibriVox, lo que lo convierte en un conjunto de datos adecuado para la investigación académica. Contiene datos divididos en ocho idiomas de alto recurso: inglés, alemán, holandés, español, francés, italiano, portugués y polaco.

Common Voice

Common Voice es una serie de conjuntos de datos de voz con licencia abierta y de colaboración masiva, donde los hablantes graban texto de la Wikipedia en varios idiomas. Debido a que cualquiera puede contribuir grabaciones, hay una variación significativa tanto en la calidad del audio como en los hablantes. Las condiciones de audio son desafiantes, con artefactos de grabación, habla acentuada, vacilaciones y la presencia de palabras extranjeras. Las transcripciones están en mayúsculas y puntuadas. A partir de la versión 11, hay más de 100 idiomas disponibles, tanto de bajo como de alto recurso.

VoxPopuli

VoxPopuli es un corpus de voz multilingüe a gran escala que consiste en datos obtenidos de grabaciones de eventos del Parlamento Europeo de 2009 a 2020. En consecuencia, ocupa el dominio único de la oratoria, el discurso político, en su mayoría obtenido de hablantes no nativos. Contiene datos de audio-transcripción etiquetados para 15 idiomas europeos.

FLEURS

FLEURS (Evaluación de Aprendizaje de Pocos Disparos de Representaciones Universales del Habla) es un conjunto de datos para evaluar sistemas de reconocimiento de voz en 102 idiomas, incluidos muchos clasificados como ‘de bajo recurso’. Los datos se derivan del conjunto de datos FLoRes-101, un corpus de traducción automática con 3001 traducciones de oraciones del inglés a otros 101 idiomas. Se graba a hablantes nativos narrando las transcripciones de las oraciones en su idioma nativo. Los datos de audio grabados se emparejan con las transcripciones de las oraciones para obtener reconocimiento de voz multilingüe en los 101 idiomas. Los conjuntos de entrenamiento contienen aproximadamente 10 horas de datos de audio-transcripción supervisados por idioma.

Traducción de Voz

La traducción de voz es la tarea de mapear desde el habla hablada al texto escrito, donde el habla y el texto están en diferentes idiomas (por ejemplo, habla en inglés a texto en francés).

CoVoST 2

CoVoST 2 es un corpus de traducción de voz multilingüe a gran escala que cubre traducciones de 21 idiomas al inglés y del inglés a 15 idiomas. El conjunto de datos se crea utilizando la base de datos de voz de código abierto Common Voice de Mozilla. Hay 2,900 horas de habla representadas en el corpus.

FLEURS

FLEURS (Evaluación de Aprendizaje de Pocos Datos de Representaciones Universales del Habla) es un conjunto de datos para evaluar sistemas de reconocimiento de voz en 102 idiomas, incluidos muchos que se clasifican como ‘de recursos limitados’. Los datos se derivan del conjunto de datos de traducción automática FLoRes-101, un corpus de 3001 traducciones de oraciones del inglés a otros 101 idiomas. Se graba a hablantes nativos narrando las transcripciones de las oraciones en sus idiomas nativos. Se construye un corpus paralelo de traducción de voz de n vías emparejando los datos de audio grabados con las transcripciones de las oraciones para cada uno de los 101 idiomas. Los conjuntos de entrenamiento contienen aproximadamente 10 horas de datos de audio-transcripción supervisados por combinación de idioma de origen y destino.

Clasificación de Audio

La clasificación de audio es la tarea de asignar una entrada de audio en crudo a una etiqueta de clase. Las aplicaciones prácticas de la clasificación de audio incluyen la detección de palabras clave, la intención del hablante y la identificación del idioma.

SpeechCommands

SpeechCommands es un conjunto de datos compuesto por archivos de audio de un segundo, cada uno de los cuales contiene una sola palabra hablada en inglés o ruido de fondo. Las palabras se toman de un pequeño conjunto de comandos y son habladas por varios locutores diferentes. El conjunto de datos está diseñado para ayudar a entrenar y evaluar sistemas pequeños de detección de palabras clave en dispositivos.

Palabras Habladas Multilingües

Palabras Habladas Multilingües es un corpus a gran escala de muestras de audio de un segundo, cada una de las cuales contiene una sola palabra hablada. El conjunto de datos consta de 50 idiomas y más de 340,000 palabras clave, con un total de 23.4 millones de ejemplos hablados de un segundo o más de 6,000 horas de audio. Los datos de audio-transcripción se obtienen del proyecto Common Voice de Mozilla. Se generan marcas de tiempo para cada enunciado a nivel de palabra y se utilizan para extraer palabras habladas individuales y sus transcripciones correspondientes, formando así un nuevo corpus de palabras habladas individuales. El uso previsto del conjunto de datos es la investigación académica y las aplicaciones comerciales en la detección multilingüe de palabras clave y la búsqueda de términos hablados.

FLEURS

FLEURS (Evaluación de Aprendizaje de Pocos Datos de Representaciones Universales del Habla) es un conjunto de datos para evaluar sistemas de reconocimiento de voz en 102 idiomas, incluidos muchos que se clasifican como ‘de recursos limitados’. Los datos se derivan del conjunto de datos de traducción automática FLoRes-101, un corpus de 3001 traducciones de oraciones del inglés a otros 101 idiomas. Se graba a hablantes nativos narrando las transcripciones de las oraciones en sus idiomas nativos. Los datos de audio grabados se emparejan con una etiqueta del idioma en el que se habla. El conjunto de datos se puede utilizar como conjunto de datos de clasificación de audio para la identificación del idioma: los sistemas se entrenan para predecir el idioma de cada enunciado en el corpus.

Observaciones Finales

En esta publicación del blog, exploramos el Hub de Hugging Face y experimentamos la Vista Previa del Conjunto de Datos, un medio eficaz de escuchar conjuntos de datos de audio antes de descargarlos. Cargamos un conjunto de datos de audio con una línea de código Python y realizamos una serie de pasos de preprocesamiento genéricos para prepararlo para un modelo de aprendizaje automático. En total, esto requirió solo 13 líneas de código, utilizando funciones simples de Python para realizar las operaciones necesarias. Introdujimos el modo de transmisión, un método para cargar y preparar muestras de datos de audio sobre la marcha. Concluimos resumiendo los conjuntos de datos más populares de reconocimiento de voz, traducción de voz y clasificación de audio en el Hub.

Después de leer este blog, esperamos que esté de acuerdo en que 🤗 Datasets es el lugar número uno para descargar y preparar conjuntos de datos de audio. 🤗 Datasets es posible gracias al trabajo de la comunidad. Si desea contribuir con un conjunto de datos, consulte la Guía para Agregar un Nuevo Conjunto de Datos.

Gracias a las siguientes personas que ayudaron a contribuir a la publicación del blog: Vaibhav Srivastav, Polina Kazakova, Patrick von Platen, Omar Sanseviero y Quentin Lhoest.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Las imágenes de la cámara del salpicadero revelan dónde está desplegada la policía.

Los científicos encontraron indicios de cómo la policía en la ciudad de Nueva York puede desplegarse en los vecindari...

Inteligencia Artificial

¡La Bendición de la Dimensionalidad?! (Parte 1)

Creemos que se puede lograr un gran avance en uno o más de estos problemas si un grupo cuidadosamente seleccionado de...

Inteligencia Artificial

Persistent Systems moldea el futuro de la ingeniería de software con Amazon CodeWhisperer

Persistent Systems, un proveedor global de ingeniería digital, ha realizado varios pilotos y estudios formales con Am...

Inteligencia Artificial

Investigadores de OpenAI pioneros en modelos avanzados de consistencia para muestreo de datos de alta calidad sin entrenamiento adversario'.

Los modelos de consistencia representan una categoría de modelos generativos diseñados para generar datos de alta cal...

Inteligencia Artificial

Descubre Davidsonian Scene Graph un marco de IA revolucionario para evaluar la IA de texto a imagen con precisión

Los modelos de texto a imagen (T2I) son difíciles de evaluar y a menudo dependen de métodos de generación y respuesta...